"""This file was generated by xsdata, v24.1, on 2024-01-25 17:07:33

Generator: DataclassGenerator
See: https://xsdata.readthedocs.io/
"""
from dataclasses import dataclass, field
from decimal import Decimal
from enum import Enum
from typing import Optional

__NAMESPACE__ = "http://www.ivu.de/mb/intf/passengercount/remote/model/"


class ErgebnisReturnCode(Enum):
    VALUE_0 = 0


class FahrtFahrgastrelevant(Enum):
    J = "J"
    N = "N"


class MeldungMeldungskategorie(Enum):
    VALUE_0 = 0


class MeldungMeldungsnummer(Enum):
    VALUE_0 = 0


class MeldungMeldungstext(Enum):
    ANFRAGE_WURDE_KORREKT_ABGEARBEITET = "Anfrage wurde korrekt abgearbeitet."


class NetzpunktNetzpunkttyp(Enum):
    APKT = "APkt"
    BPUNKT = "BPunkt"
    EPKT = "EPkt"
    GPKT = "GPkt"
    HST = "Hst"


class NetzpunktMitFahrgastwechsel(Enum):
    J = "J"
    N = "N"


class ParameterName(Enum):
    BETRIEBSBEREICH = "Betriebsbereich"
    KEINE_ANZEIGEDATEN = "KeineAnzeigedaten"
    KEINE_GUELTIGKEITEN = "KeineGueltigkeiten"
    LINIE = "Linie"
    MELDUNGSKATEGORIE = "Meldungskategorie"
    STICHTAG = "Stichtag"


class PunktFahrgastwechsel(Enum):
    J = "J"
    N = "N"


class PunktVeroeffentlicht(Enum):
    J = "J"
    N = "N"


class RouteHauptroute(Enum):
    J = "J"
    N = "N"


class RouteRichtung(Enum):
    VALUE_0 = 0
    VALUE_1 = 1
    VALUE_2 = 2


class T41Veroeffentlicht(Enum):
    J = "J"
    N = "N"


class ZwischenpunktEntfernungVomStart(Enum):
    VALUE_0 = 0
    VALUE_249 = 249


class ZwischenpunktNetzpunkt(Enum):
    VALUE_101109959 = 101109959
    VALUE_101109960 = 101109960


@dataclass(kw_only=True)
class Linienfahrplan:
    class Meta:
        namespace = "http://www.ivu.de/mb/intf/passengercount/remote/model/"

    generierung: "Linienfahrplan.Generierung" = field(
        metadata={
            "name": "Generierung",
            "type": "Element",
            "required": True,
        }
    )
    streckennetz_daten: "Linienfahrplan.StreckennetzDaten" = field(
        metadata={
            "name": "StreckennetzDaten",
            "type": "Element",
            "required": True,
        }
    )
    linien_daten: "Linienfahrplan.LinienDaten" = field(
        metadata={
            "name": "LinienDaten",
            "type": "Element",
            "required": True,
        }
    )
    fahrt_daten: "Linienfahrplan.FahrtDaten" = field(
        metadata={
            "name": "FahrtDaten",
            "type": "Element",
            "required": True,
        }
    )
    fahrzeugumlauf_daten: "Linienfahrplan.FahrzeugumlaufDaten" = field(
        metadata={
            "name": "FahrzeugumlaufDaten",
            "type": "Element",
            "required": True,
        }
    )

    @dataclass(kw_only=True)
    class Generierung:
        startzeitpunkt: str = field(
            metadata={
                "name": "Startzeitpunkt",
                "type": "Element",
                "required": True,
            }
        )
        schnittstellenversion: "Linienfahrplan.Generierung.Schnittstellenversion" = field(
            metadata={
                "name": "Schnittstellenversion",
                "type": "Element",
                "required": True,
            }
        )
        datenversion: "Linienfahrplan.Generierung.Datenversion" = field(
            metadata={
                "name": "Datenversion",
                "type": "Element",
                "required": True,
            }
        )
        ergebnis: "Linienfahrplan.Generierung.Ergebnis" = field(
            metadata={
                "name": "Ergebnis",
                "type": "Element",
                "required": True,
            }
        )
        generierungs_parameter: "Linienfahrplan.Generierung.GenerierungsParameter" = field(
            metadata={
                "name": "GenerierungsParameter",
                "type": "Element",
                "required": True,
            }
        )

        @dataclass(kw_only=True)
        class Schnittstellenversion:
            version: Decimal = field(
                metadata={
                    "name": "Version",
                    "type": "Element",
                    "required": True,
                }
            )
            release: str = field(
                metadata={
                    "name": "Release",
                    "type": "Element",
                    "required": True,
                }
            )
            build: str = field(
                metadata={
                    "name": "Build",
                    "type": "Element",
                    "required": True,
                }
            )

        @dataclass(kw_only=True)
        class Datenversion:
            deployment_id: str = field(
                metadata={
                    "name": "deploymentID",
                    "type": "Element",
                    "required": True,
                }
            )

        @dataclass(kw_only=True)
        class Ergebnis:
            return_code: ErgebnisReturnCode = field(
                metadata={
                    "name": "ReturnCode",
                    "type": "Element",
                    "required": True,
                }
            )
            meldungsliste: "Linienfahrplan.Generierung.Ergebnis.Meldungsliste" = field(
                metadata={
                    "name": "Meldungsliste",
                    "type": "Element",
                    "required": True,
                }
            )

            @dataclass(kw_only=True)
            class Meldungsliste:
                meldung: "Linienfahrplan.Generierung.Ergebnis.Meldungsliste.Meldung" = field(
                    metadata={
                        "name": "Meldung",
                        "type": "Element",
                        "required": True,
                    }
                )

                @dataclass(kw_only=True)
                class Meldung:
                    meldungskategorie: MeldungMeldungskategorie = field(
                        metadata={
                            "name": "Meldungskategorie",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    meldungsnummer: MeldungMeldungsnummer = field(
                        metadata={
                            "name": "Meldungsnummer",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    meldungstext: MeldungMeldungstext = field(
                        metadata={
                            "name": "Meldungstext",
                            "type": "Element",
                            "required": True,
                        }
                    )

        @dataclass(kw_only=True)
        class GenerierungsParameter:
            parameter: list["Linienfahrplan.Generierung.GenerierungsParameter.Parameter"] = field(
                default_factory=list,
                metadata={
                    "name": "Parameter",
                    "type": "Element",
                    "min_occurs": 1,
                },
            )

            @dataclass(kw_only=True)
            class Parameter:
                name: ParameterName = field(
                    metadata={
                        "name": "Name",
                        "type": "Element",
                        "required": True,
                    }
                )
                wert: str = field(
                    metadata={
                        "name": "Wert",
                        "type": "Element",
                        "required": True,
                    }
                )

    @dataclass(kw_only=True)
    class StreckennetzDaten:
        haltestellenbereiche: "Linienfahrplan.StreckennetzDaten.Haltestellenbereiche" = field(
            metadata={
                "name": "Haltestellenbereiche",
                "type": "Element",
                "required": True,
            }
        )
        netzpunkte: "Linienfahrplan.StreckennetzDaten.Netzpunkte" = field(
            metadata={
                "name": "Netzpunkte",
                "type": "Element",
                "required": True,
            }
        )
        gebietskoerperschaften: "Linienfahrplan.StreckennetzDaten.Gebietskoerperschaften" = field(
            metadata={
                "name": "Gebietskoerperschaften",
                "type": "Element",
                "required": True,
            }
        )
        strecken: "Linienfahrplan.StreckennetzDaten.Strecken" = field(
            metadata={
                "name": "Strecken",
                "type": "Element",
                "required": True,
            }
        )

        @dataclass(kw_only=True)
        class Haltestellenbereiche:
            haltestellenbereich: list[
                "Linienfahrplan.StreckennetzDaten.Haltestellenbereiche.Haltestellenbereich"
            ] = field(
                default_factory=list,
                metadata={
                    "name": "Haltestellenbereich",
                    "type": "Element",
                    "min_occurs": 1,
                },
            )

            @dataclass(kw_only=True)
            class Haltestellenbereich:
                nummer: int = field(
                    metadata={
                        "name": "Nummer",
                        "type": "Element",
                        "required": True,
                    }
                )
                kurzname: str = field(
                    metadata={
                        "name": "Kurzname",
                        "type": "Element",
                        "required": True,
                    }
                )
                fahrplanbuchname: str = field(
                    metadata={
                        "name": "Fahrplanbuchname",
                        "type": "Element",
                        "required": True,
                    }
                )

        @dataclass(kw_only=True)
        class Netzpunkte:
            netzpunkt: list["Linienfahrplan.StreckennetzDaten.Netzpunkte.Netzpunkt"] = field(
                default_factory=list,
                metadata={
                    "name": "Netzpunkt",
                    "type": "Element",
                    "min_occurs": 1,
                },
            )

            @dataclass(kw_only=True)
            class Netzpunkt:
                nummer: int = field(
                    metadata={
                        "name": "Nummer",
                        "type": "Element",
                        "required": True,
                    }
                )
                kurzname: str = field(
                    metadata={
                        "name": "Kurzname",
                        "type": "Element",
                        "required": True,
                    }
                )
                langname: str = field(
                    metadata={
                        "name": "Langname",
                        "type": "Element",
                        "required": True,
                    }
                )
                netzpunkttyp: NetzpunktNetzpunkttyp = field(
                    metadata={
                        "name": "Netzpunkttyp",
                        "type": "Element",
                        "required": True,
                    }
                )
                xkoordinate: int = field(
                    metadata={
                        "name": "Xkoordinate",
                        "type": "Element",
                        "required": True,
                    }
                )
                ykoordinate: int = field(
                    metadata={
                        "name": "Ykoordinate",
                        "type": "Element",
                        "required": True,
                    }
                )
                haltestellenbereich: Optional[int] = field(
                    default=None,
                    metadata={
                        "name": "Haltestellenbereich",
                        "type": "Element",
                    },
                )
                mit_fahrgastwechsel: NetzpunktMitFahrgastwechsel = field(
                    metadata={
                        "name": "mitFahrgastwechsel",
                        "type": "Element",
                        "required": True,
                    }
                )
                gebietskoerperschaften: "Linienfahrplan.StreckennetzDaten.Netzpunkte.Netzpunkt.Gebietskoerperschaften" = field(
                    metadata={
                        "name": "Gebietskoerperschaften",
                        "type": "Element",
                        "required": True,
                    }
                )

                @dataclass(kw_only=True)
                class Gebietskoerperschaften:
                    gebietskoerperschaft: list[str] = field(
                        default_factory=list,
                        metadata={
                            "name": "Gebietskoerperschaft",
                            "type": "Element",
                        },
                    )

        @dataclass(kw_only=True)
        class Gebietskoerperschaften:
            gebietskoerperschaft: list[
                "Linienfahrplan.StreckennetzDaten.Gebietskoerperschaften.Gebietskoerperschaft"
            ] = field(
                default_factory=list,
                metadata={
                    "name": "Gebietskoerperschaft",
                    "type": "Element",
                    "min_occurs": 1,
                },
            )

            @dataclass(kw_only=True)
            class Gebietskoerperschaft:
                kurzname: str = field(
                    metadata={
                        "name": "Kurzname",
                        "type": "Element",
                        "required": True,
                    }
                )
                langname: str = field(
                    metadata={
                        "name": "Langname",
                        "type": "Element",
                        "required": True,
                    }
                )

        @dataclass(kw_only=True)
        class Strecken:
            strecke: list["Linienfahrplan.StreckennetzDaten.Strecken.Strecke"] = field(
                default_factory=list,
                metadata={
                    "name": "Strecke",
                    "type": "Element",
                    "min_occurs": 1,
                },
            )

            @dataclass(kw_only=True)
            class Strecke:
                id: int = field(
                    metadata={
                        "name": "ID",
                        "type": "Element",
                        "required": True,
                    }
                )
                startpunkt: int = field(
                    metadata={
                        "name": "Startpunkt",
                        "type": "Element",
                        "required": True,
                    }
                )
                endpunkt: int = field(
                    metadata={
                        "name": "Endpunkt",
                        "type": "Element",
                        "required": True,
                    }
                )
                streckenlaenge: int = field(
                    metadata={
                        "name": "Streckenlaenge",
                        "type": "Element",
                        "required": True,
                    }
                )
                zwischenpunkte: "Linienfahrplan.StreckennetzDaten.Strecken.Strecke.Zwischenpunkte" = field(
                    metadata={
                        "name": "Zwischenpunkte",
                        "type": "Element",
                        "required": True,
                    }
                )

                @dataclass(kw_only=True)
                class Zwischenpunkte:
                    zwischenpunkt: Optional[
                        "Linienfahrplan.StreckennetzDaten.Strecken.Strecke.Zwischenpunkte.Zwischenpunkt"
                    ] = field(
                        default=None,
                        metadata={
                            "name": "Zwischenpunkt",
                            "type": "Element",
                        },
                    )

                    @dataclass(kw_only=True)
                    class Zwischenpunkt:
                        netzpunkt: ZwischenpunktNetzpunkt = field(
                            metadata={
                                "name": "Netzpunkt",
                                "type": "Element",
                                "required": True,
                            }
                        )
                        entfernung_vom_start: ZwischenpunktEntfernungVomStart = field(
                            metadata={
                                "name": "EntfernungVomStart",
                                "type": "Element",
                                "required": True,
                            }
                        )

    @dataclass(kw_only=True)
    class LinienDaten:
        linie: "Linienfahrplan.LinienDaten.Linie" = field(
            metadata={
                "name": "Linie",
                "type": "Element",
                "required": True,
            }
        )

        @dataclass(kw_only=True)
        class Linie:
            kurzname: str = field(
                metadata={
                    "name": "Kurzname",
                    "type": "Element",
                    "required": True,
                }
            )
            zugeordnete_betriebshoefe: "Linienfahrplan.LinienDaten.Linie.ZugeordneteBetriebshoefe" = field(
                metadata={
                    "name": "zugeordneteBetriebshoefe",
                    "type": "Element",
                    "required": True,
                }
            )
            routen_daten: "Linienfahrplan.LinienDaten.Linie.RoutenDaten" = field(
                metadata={
                    "name": "RoutenDaten",
                    "type": "Element",
                    "required": True,
                }
            )
            routenvarianten: "Linienfahrplan.LinienDaten.Linie.Routenvarianten" = field(
                metadata={
                    "name": "Routenvarianten",
                    "type": "Element",
                    "required": True,
                }
            )

            @dataclass(kw_only=True)
            class ZugeordneteBetriebshoefe:
                betriebshof: list[int] = field(
                    default_factory=list,
                    metadata={
                        "name": "Betriebshof",
                        "type": "Element",
                        "min_occurs": 1,
                    },
                )

            @dataclass(kw_only=True)
            class RoutenDaten:
                route: list["Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route"] = field(
                    default_factory=list,
                    metadata={
                        "name": "Route",
                        "type": "Element",
                        "min_occurs": 1,
                    },
                )

                @dataclass(kw_only=True)
                class Route:
                    lfd_nr: int = field(
                        metadata={
                            "name": "LfdNr",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    externe_routennummer: int = field(
                        metadata={
                            "name": "externeRoutennummer",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    richtung: RouteRichtung = field(
                        metadata={
                            "name": "Richtung",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    hauptroute: RouteHauptroute = field(
                        metadata={
                            "name": "Hauptroute",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    zielanzeigen: "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Zielanzeigen" = field(
                        metadata={
                            "name": "Zielanzeigen",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    streckenfolge: "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Streckenfolge" = field(
                        metadata={
                            "name": "Streckenfolge",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    punktfolge: "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Punktfolge" = field(
                        metadata={
                            "name": "Punktfolge",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    fahrzeitprofile: "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Fahrzeitprofile" = field(
                        metadata={
                            "name": "Fahrzeitprofile",
                            "type": "Element",
                            "required": True,
                        }
                    )

                    @dataclass(kw_only=True)
                    class Zielanzeigen:
                        zielanzeige: list[
                            "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Zielanzeigen.Zielanzeige"
                        ] = field(
                            default_factory=list,
                            metadata={
                                "name": "Zielanzeige",
                                "type": "Element",
                            },
                        )

                        @dataclass(kw_only=True)
                        class Zielanzeige:
                            nummer: int = field(
                                metadata={
                                    "name": "Nummer",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            anzeige_text: str = field(
                                metadata={
                                    "name": "AnzeigeText",
                                    "type": "Element",
                                    "required": True,
                                }
                            )

                    @dataclass(kw_only=True)
                    class Streckenfolge:
                        strecke: list[
                            "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Streckenfolge.Strecke"
                        ] = field(
                            default_factory=list,
                            metadata={
                                "name": "Strecke",
                                "type": "Element",
                                "min_occurs": 1,
                            },
                        )

                        @dataclass(kw_only=True)
                        class Strecke:
                            lfd_nr: int = field(
                                metadata={
                                    "name": "LfdNr",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            strecken_id: int = field(
                                metadata={
                                    "name": "StreckenID",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            auftraggeber: Optional[int] = field(
                                default=None,
                                metadata={
                                    "name": "Auftraggeber",
                                    "type": "Element",
                                },
                            )

                    @dataclass(kw_only=True)
                    class Punktfolge:
                        punkt: list["Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Punktfolge.Punkt"] = field(
                            default_factory=list,
                            metadata={
                                "name": "Punkt",
                                "type": "Element",
                                "min_occurs": 1,
                            },
                        )

                        @dataclass(kw_only=True)
                        class Punkt:
                            lfd_nr: int = field(
                                metadata={
                                    "name": "LfdNr",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            netzpunkt: int = field(
                                metadata={
                                    "name": "Netzpunkt",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            fahrgastwechsel: PunktFahrgastwechsel = field(
                                metadata={
                                    "name": "Fahrgastwechsel",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            veroeffentlicht: PunktVeroeffentlicht = field(
                                metadata={
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            zielanzeige: Optional[int] = field(
                                default=None,
                                metadata={
                                    "name": "Zielanzeige",
                                    "type": "Element",
                                },
                            )

                    @dataclass(kw_only=True)
                    class Fahrzeitprofile:
                        fahrzeitprofil: list[
                            "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Fahrzeitprofile.Fahrzeitprofil"
                        ] = field(
                            default_factory=list,
                            metadata={
                                "name": "Fahrzeitprofil",
                                "type": "Element",
                                "min_occurs": 1,
                            },
                        )

                        @dataclass(kw_only=True)
                        class Fahrzeitprofil:
                            fahrzeitprofil_nummer: int = field(
                                metadata={
                                    "name": "FahrzeitprofilNummer",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            fahrzeitprofilpunkte: "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Fahrzeitprofile.Fahrzeitprofil.Fahrzeitprofilpunkte" = field(
                                metadata={
                                    "name": "Fahrzeitprofilpunkte",
                                    "type": "Element",
                                    "required": True,
                                }
                            )

                            @dataclass(kw_only=True)
                            class Fahrzeitprofilpunkte:
                                punkt: list[
                                    "Linienfahrplan.LinienDaten.Linie.RoutenDaten.Route.Fahrzeitprofile.Fahrzeitprofil.Fahrzeitprofilpunkte.Punkt"
                                ] = field(
                                    default_factory=list,
                                    metadata={
                                        "name": "Punkt",
                                        "type": "Element",
                                        "min_occurs": 1,
                                    },
                                )

                                @dataclass(kw_only=True)
                                class Punkt:
                                    lfd_nr: int = field(
                                        metadata={
                                            "name": "LfdNr",
                                            "type": "Element",
                                            "required": True,
                                        }
                                    )
                                    streckenfahrzeit: int = field(
                                        metadata={
                                            "name": "Streckenfahrzeit",
                                            "type": "Element",
                                            "required": True,
                                        }
                                    )
                                    wartezeit: int = field(
                                        metadata={
                                            "name": "Wartezeit",
                                            "type": "Element",
                                            "required": True,
                                        }
                                    )

            @dataclass(kw_only=True)
            class Routenvarianten:
                routenvariante: list["Linienfahrplan.LinienDaten.Linie.Routenvarianten.Routenvariante"] = field(
                    default_factory=list,
                    metadata={
                        "name": "Routenvariante",
                        "type": "Element",
                        "min_occurs": 1,
                    },
                )

                @dataclass(kw_only=True)
                class Routenvariante:
                    lfd_nr: int = field(
                        metadata={
                            "name": "LfdNr",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    lfd_nr_route: int = field(
                        metadata={
                            "name": "LfdNrRoute",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    abweichender_auftraggeber: Optional[
                        "Linienfahrplan.LinienDaten.Linie.Routenvarianten.Routenvariante.AbweichenderAuftraggeber"
                    ] = field(
                        default=None,
                        metadata={
                            "name": "abweichenderAuftraggeber",
                            "type": "Element",
                        },
                    )
                    abweichende_veroeffentlichung: Optional[
                        "Linienfahrplan.LinienDaten.Linie.Routenvarianten.Routenvariante.AbweichendeVeroeffentlichung"
                    ] = field(
                        default=None,
                        metadata={
                            "name": "abweichendeVeroeffentlichung",
                            "type": "Element",
                        },
                    )

                    @dataclass(kw_only=True)
                    class AbweichenderAuftraggeber:
                        strecke: list[
                            "Linienfahrplan.LinienDaten.Linie.Routenvarianten.Routenvariante.AbweichenderAuftraggeber.Strecke"
                        ] = field(
                            default_factory=list,
                            metadata={
                                "name": "Strecke",
                                "type": "Element",
                                "min_occurs": 1,
                            },
                        )

                        @dataclass(kw_only=True)
                        class Strecke:
                            lfd_nr: int = field(
                                metadata={
                                    "name": "LfdNr",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            auftraggeber: int = field(
                                metadata={
                                    "name": "Auftraggeber",
                                    "type": "Element",
                                    "required": True,
                                }
                            )

                    @dataclass(kw_only=True)
                    class AbweichendeVeroeffentlichung:
                        punkt: list[
                            "Linienfahrplan.LinienDaten.Linie.Routenvarianten.Routenvariante.AbweichendeVeroeffentlichung.Punkt"
                        ] = field(
                            default_factory=list,
                            metadata={
                                "name": "Punkt",
                                "type": "Element",
                                "min_occurs": 1,
                            },
                        )

                        @dataclass(kw_only=True)
                        class Punkt:
                            lfd_nr: int = field(
                                metadata={
                                    "name": "LfdNr",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            veroeffentlicht: str = field(
                                metadata={
                                    "type": "Element",
                                    "required": True,
                                }
                            )

    @dataclass(kw_only=True)
    class FahrtDaten:
        fahrt: list["Linienfahrplan.FahrtDaten.Fahrt"] = field(
            default_factory=list,
            metadata={
                "name": "Fahrt",
                "type": "Element",
                "min_occurs": 1,
            },
        )

        @dataclass(kw_only=True)
        class Fahrt:
            id: int = field(
                metadata={
                    "name": "ID",
                    "type": "Element",
                    "required": True,
                }
            )
            linie: str = field(
                metadata={
                    "name": "Linie",
                    "type": "Element",
                    "required": True,
                }
            )
            fahrgastrelevant: FahrtFahrgastrelevant = field(
                metadata={
                    "type": "Element",
                    "required": True,
                }
            )
            lfd_nr_routenvariante: int = field(
                metadata={
                    "name": "LfdNrRoutenvariante",
                    "type": "Element",
                    "required": True,
                }
            )
            startzeit: int = field(
                metadata={
                    "name": "Startzeit",
                    "type": "Element",
                    "required": True,
                }
            )
            fahrtart: str = field(
                metadata={
                    "name": "Fahrtart",
                    "type": "Element",
                    "required": True,
                }
            )
            fahrzeitprofil: int = field(
                metadata={
                    "name": "Fahrzeitprofil",
                    "type": "Element",
                    "required": True,
                }
            )
            fahrzeugtyp: str = field(
                metadata={
                    "name": "Fahrzeugtyp",
                    "type": "Element",
                    "required": True,
                }
            )
            fremdunternehmer: Optional[int] = field(
                default=None,
                metadata={
                    "name": "Fremdunternehmer",
                    "type": "Element",
                },
            )
            auftraggeber: Optional[int] = field(
                default=None,
                metadata={
                    "name": "Auftraggeber",
                    "type": "Element",
                },
            )
            veroeffentlicht: T41Veroeffentlicht = field(
                metadata={
                    "type": "Element",
                    "required": True,
                }
            )

    @dataclass(kw_only=True)
    class FahrzeugumlaufDaten:
        fahrzeugumlauf: list["Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf"] = field(
            default_factory=list,
            metadata={
                "name": "Fahrzeugumlauf",
                "type": "Element",
                "min_occurs": 1,
            },
        )

        @dataclass(kw_only=True)
        class Fahrzeugumlauf:
            lfd_nr: int = field(
                metadata={
                    "name": "LfdNr",
                    "type": "Element",
                    "required": True,
                }
            )
            betriebshof: int = field(
                metadata={
                    "name": "Betriebshof",
                    "type": "Element",
                    "required": True,
                }
            )
            fahrzeugtyp: str = field(
                metadata={
                    "name": "Fahrzeugtyp",
                    "type": "Element",
                    "required": True,
                }
            )
            umlaeufe: "Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf.Umlaeufe" = field(
                metadata={
                    "name": "Umlaeufe",
                    "type": "Element",
                    "required": True,
                }
            )

            @dataclass(kw_only=True)
            class Umlaeufe:
                umlauf: list["Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf.Umlaeufe.Umlauf"] = field(
                    default_factory=list,
                    metadata={
                        "name": "Umlauf",
                        "type": "Element",
                        "min_occurs": 1,
                    },
                )

                @dataclass(kw_only=True)
                class Umlauf:
                    lfd_nr: int = field(
                        metadata={
                            "name": "LfdNr",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    umlauf_id: int = field(
                        metadata={
                            "name": "UmlaufID",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    umlaufbezeichnung: str = field(
                        metadata={
                            "name": "Umlaufbezeichnung",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    kalenderdatum: str = field(
                        metadata={
                            "name": "Kalenderdatum",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    umlaufteilgruppen: "Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf.Umlaeufe.Umlauf.Umlaufteilgruppen" = field(
                        metadata={
                            "name": "Umlaufteilgruppen",
                            "type": "Element",
                            "required": True,
                        }
                    )
                    gueltigkeiten: "Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf.Umlaeufe.Umlauf.Gueltigkeiten" = (
                        field(
                            metadata={
                                "name": "Gueltigkeiten",
                                "type": "Element",
                                "required": True,
                            }
                        )
                    )

                    @dataclass(kw_only=True)
                    class Umlaufteilgruppen:
                        umlaufteilgruppe: list[
                            "Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf.Umlaeufe.Umlauf.Umlaufteilgruppen.Umlaufteilgruppe"
                        ] = field(
                            default_factory=list,
                            metadata={
                                "name": "Umlaufteilgruppe",
                                "type": "Element",
                                "min_occurs": 1,
                            },
                        )

                        @dataclass(kw_only=True)
                        class Umlaufteilgruppe:
                            lfd_nr: int = field(
                                metadata={
                                    "name": "LfdNr",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            wagenfolgenummer: int = field(
                                metadata={
                                    "name": "Wagenfolgenummer",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            linie: str = field(
                                metadata={
                                    "name": "Linie",
                                    "type": "Element",
                                    "required": True,
                                }
                            )
                            beginn: Optional[int] = field(
                                default=None,
                                metadata={
                                    "name": "Beginn",
                                    "type": "Element",
                                },
                            )
                            ende: Optional[int] = field(
                                default=None,
                                metadata={
                                    "name": "Ende",
                                    "type": "Element",
                                },
                            )
                            fahrzeugtyp: list[str] = field(
                                default_factory=list,
                                metadata={
                                    "name": "Fahrzeugtyp",
                                    "type": "Element",
                                    "max_occurs": 2,
                                },
                            )
                            fahrtreihenfolge: Optional[
                                "Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf.Umlaeufe.Umlauf.Umlaufteilgruppen.Umlaufteilgruppe.Fahrtreihenfolge"
                            ] = field(
                                default=None,
                                metadata={
                                    "name": "Fahrtreihenfolge",
                                    "type": "Element",
                                },
                            )

                            @dataclass(kw_only=True)
                            class Fahrtreihenfolge:
                                fahrt: list[
                                    "Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf.Umlaeufe.Umlauf.Umlaufteilgruppen.Umlaufteilgruppe.Fahrtreihenfolge.Fahrt"
                                ] = field(
                                    default_factory=list,
                                    metadata={
                                        "name": "Fahrt",
                                        "type": "Element",
                                        "min_occurs": 1,
                                    },
                                )

                                @dataclass(kw_only=True)
                                class Fahrt:
                                    lfd_nr: int = field(
                                        metadata={
                                            "name": "LfdNr",
                                            "type": "Element",
                                            "required": True,
                                        }
                                    )
                                    fahrt_id: int = field(
                                        metadata={
                                            "name": "FahrtID",
                                            "type": "Element",
                                            "required": True,
                                        }
                                    )

                    @dataclass(kw_only=True)
                    class Gueltigkeiten:
                        kalenderzeitraum: "Linienfahrplan.FahrzeugumlaufDaten.Fahrzeugumlauf.Umlaeufe.Umlauf.Gueltigkeiten.Kalenderzeitraum" = field(
                            metadata={
                                "name": "Kalenderzeitraum",
                                "type": "Element",
                                "required": True,
                            }
                        )

                        @dataclass(kw_only=True)
                        class Kalenderzeitraum:
                            kalendertag: list[str] = field(
                                default_factory=list,
                                metadata={
                                    "name": "Kalendertag",
                                    "type": "Element",
                                    "min_occurs": 1,
                                },
                            )
