master 9d281aebc56e cached
297 files
2.6 MB
702.1k tokens
2194 symbols
1 requests
Download .txt
Showing preview only (2,834K chars total). Download the full file or copy to clipboard to get everything.
Repository: VictorPhilipp/Cities-Skylines-Traffic-Manager-President-Edition
Branch: master
Commit: 9d281aebc56e
Files: 297
Total size: 2.6 MB

Directory structure:
gitextract_wdu8mnk_/

├── .gitattributes
├── .gitignore
├── .gitmodules
├── .travis.yml
├── CHANGELOG.md
├── LICENSE
├── README.md
└── TLM/
    ├── .vs/
    │   └── config/
    │       └── applicationhost.config
    ├── ATTACHING_DEBUGGER.md
    ├── BUILDING_INSTRUCTIONS.md
    ├── CSUtil.Commons/
    │   ├── ArrowDirection.cs
    │   ├── ArrowDirectionUtil.cs
    │   ├── Benchmark/
    │   │   ├── Benchmark.cs
    │   │   ├── BenchmarkProfile.cs
    │   │   └── BenchmarkProfileProvider.cs
    │   ├── CSUtil.Commons.csproj
    │   ├── EnumUtil.cs
    │   ├── Log.cs
    │   ├── LogicUtil.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── TernaryBool.cs
    │   ├── TernaryBoolUtil.cs
    │   ├── ToStringExt.cs
    │   ├── VectorUtil.cs
    │   └── packages.config
    ├── CSUtil.Redirection/
    │   ├── CSUtil.Redirection.csproj
    │   ├── MethodInfoExt.cs
    │   ├── NetworkExtensions.Framework.Unsafe.csproj.DotSettings
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── RedirectionHelper.cs
    │   ├── Redirector.cs
    │   ├── Transit.Framework.Redirection.csproj.DotSettings
    │   └── Transit.Framework.Unsafe.csproj.DotSettings
    ├── PR_REVIEW_INSTRUCTIONS.md
    ├── TLM/
    │   ├── CodeProfiler.cs
    │   ├── Constants.cs
    │   ├── Custom/
    │   │   ├── AI/
    │   │   │   ├── CustomAmbulanceAI.cs
    │   │   │   ├── CustomBuildingAI.cs
    │   │   │   ├── CustomBusAI.cs
    │   │   │   ├── CustomCarAI.cs
    │   │   │   ├── CustomCargoTruckAI.cs
    │   │   │   ├── CustomCitizenAI.cs
    │   │   │   ├── CustomCommonBuildingAI.cs
    │   │   │   ├── CustomFireTruckAI.cs
    │   │   │   ├── CustomHumanAI.cs
    │   │   │   ├── CustomPassengerCarAI.cs
    │   │   │   ├── CustomPoliceCarAI.cs
    │   │   │   ├── CustomResidentAI.cs
    │   │   │   ├── CustomRoadAI.cs
    │   │   │   ├── CustomShipAI.cs
    │   │   │   ├── CustomTaxiAI.cs
    │   │   │   ├── CustomTouristAI.cs
    │   │   │   ├── CustomTrainAI.cs
    │   │   │   ├── CustomTramBaseAI.cs
    │   │   │   ├── CustomTransportLineAI.cs
    │   │   │   ├── CustomVehicleAI.cs
    │   │   │   └── README.md
    │   │   ├── Data/
    │   │   │   ├── CustomVehicle.cs
    │   │   │   └── README.md
    │   │   ├── Manager/
    │   │   │   ├── CustomCitizenManager.cs
    │   │   │   ├── CustomNetManager.cs
    │   │   │   ├── CustomVehicleManager.cs
    │   │   │   └── README.md
    │   │   ├── PathFinding/
    │   │   │   ├── CustomPathFind.cs
    │   │   │   ├── CustomPathFind2.cs
    │   │   │   ├── CustomPathManager.cs
    │   │   │   ├── README.md
    │   │   │   └── StockPathFind.cs
    │   │   └── README.md
    │   ├── Geometry/
    │   │   ├── GeometryCalculationMode.cs
    │   │   ├── ISegmentEndId.cs
    │   │   ├── Impl/
    │   │   │   ├── NodeGeometry.cs
    │   │   │   ├── SegmentEndGeometry.cs
    │   │   │   ├── SegmentEndId.cs
    │   │   │   └── SegmentGeometry.cs
    │   │   └── README.md
    │   ├── LoadingExtension.cs
    │   ├── Manager/
    │   │   ├── AbstractCustomManager.cs
    │   │   ├── AbstractFeatureManager.cs
    │   │   ├── AbstractGeometryObservingManager.cs
    │   │   ├── IAdvancedParkingManager.cs
    │   │   ├── ICustomDataManager.cs
    │   │   ├── ICustomManager.cs
    │   │   ├── ICustomSegmentLightsManager.cs
    │   │   ├── IExtBuildingManager.cs
    │   │   ├── IExtCitizenInstanceManager.cs
    │   │   ├── IExtCitizenManager.cs
    │   │   ├── IFeatureManager.cs
    │   │   ├── IGeometryManager.cs
    │   │   ├── IJunctionRestrictionsManager.cs
    │   │   ├── ILaneArrowManager.cs
    │   │   ├── ILaneConnectionManager.cs
    │   │   ├── IManagerFactory.cs
    │   │   ├── IOptionsManager.cs
    │   │   ├── IParkingRestrictionsManager.cs
    │   │   ├── IRoutingManager.cs
    │   │   ├── ISegmentEndManager.cs
    │   │   ├── ISpeedLimitManager.cs
    │   │   ├── ITrafficLightManager.cs
    │   │   ├── ITrafficLightSimulationManager.cs
    │   │   ├── ITrafficMeasurementManager.cs
    │   │   ├── ITrafficPriorityManager.cs
    │   │   ├── ITurnOnRedManager.cs
    │   │   ├── IUtilityManager.cs
    │   │   ├── IVehicleBehaviorManager.cs
    │   │   ├── IVehicleRestrictionsManager.cs
    │   │   ├── IVehicleStateManager.cs
    │   │   ├── Impl/
    │   │   │   ├── AdvancedParkingManager.cs
    │   │   │   ├── CustomSegmentLightsManager.cs
    │   │   │   ├── ExtBuildingManager.cs
    │   │   │   ├── ExtCitizenInstanceManager.cs
    │   │   │   ├── ExtCitizenManager.cs
    │   │   │   ├── GeometryManager.cs
    │   │   │   ├── JunctionRestrictionsManager.cs
    │   │   │   ├── LaneArrowManager.cs
    │   │   │   ├── LaneConnectionManager.cs
    │   │   │   ├── ManagerFactory.cs
    │   │   │   ├── OptionsManager.cs
    │   │   │   ├── ParkingRestrictionsManager.cs
    │   │   │   ├── RoutingManager.cs
    │   │   │   ├── SegmentEndManager.cs
    │   │   │   ├── SpeedLimitManager.cs
    │   │   │   ├── TrafficLightManager.cs
    │   │   │   ├── TrafficLightSimulationManager.cs
    │   │   │   ├── TrafficMeasurementManager.cs
    │   │   │   ├── TrafficPriorityManager.cs
    │   │   │   ├── TurnOnRedManager.cs
    │   │   │   ├── UtilityManager.cs
    │   │   │   ├── VehicleBehaviorManager.cs
    │   │   │   ├── VehicleRestrictionsManager.cs
    │   │   │   └── VehicleStateManager.cs
    │   │   └── README.md
    │   ├── PrintTransportLines.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── README.md
    │   ├── Resources/
    │   │   ├── incompatible_mods.txt
    │   │   ├── lang.txt
    │   │   ├── lang_de.txt
    │   │   ├── lang_es.txt
    │   │   ├── lang_fr.txt
    │   │   ├── lang_it.txt
    │   │   ├── lang_ja.txt
    │   │   ├── lang_ko.txt
    │   │   ├── lang_nl.txt
    │   │   ├── lang_pl.txt
    │   │   ├── lang_pt.txt
    │   │   ├── lang_ru.txt
    │   │   ├── lang_template.txt
    │   │   ├── lang_zh-tw.txt
    │   │   └── lang_zh.txt
    │   ├── State/
    │   │   ├── ConfigData/
    │   │   │   ├── AdvancedVehicleAI.cs
    │   │   │   ├── Debug.cs
    │   │   │   ├── DynamicLaneSelection.cs
    │   │   │   ├── Main.cs
    │   │   │   ├── ParkingAI.cs
    │   │   │   ├── PathFinding.cs
    │   │   │   ├── PriorityRules.cs
    │   │   │   └── TimedTrafficLights.cs
    │   │   ├── Configuration.cs
    │   │   ├── Flags.cs
    │   │   ├── GlobalConfig.cs
    │   │   ├── Options.cs
    │   │   ├── README.md
    │   │   └── SerializableDataExtension.cs
    │   ├── TLM.csproj
    │   ├── TMPE.csproj
    │   ├── ThreadingExtension.cs
    │   ├── Traffic/
    │   │   ├── Data/
    │   │   │   ├── ExtBuilding.cs
    │   │   │   ├── ExtCitizen.cs
    │   │   │   ├── ExtCitizenInstance.cs
    │   │   │   ├── PrioritySegment.cs
    │   │   │   ├── SegmentEndFlags.cs
    │   │   │   ├── SegmentFlags.cs
    │   │   │   ├── TurnOnRedSegments.cs
    │   │   │   └── VehicleState.cs
    │   │   ├── ExtVehicleType.cs
    │   │   ├── ISegmentEnd.cs
    │   │   ├── Impl/
    │   │   │   └── SegmentEnd.cs
    │   │   ├── README.md
    │   │   └── VehicleJunctionTransitState.cs
    │   ├── TrafficLight/
    │   │   ├── Data/
    │   │   │   └── TrafficLightSimulation.cs
    │   │   ├── FlowWaitCalcMode.cs
    │   │   ├── ICustomSegmentLight.cs
    │   │   ├── ICustomSegmentLights.cs
    │   │   ├── ITimedTrafficLights.cs
    │   │   ├── ITimedTrafficLightsStep.cs
    │   │   ├── Impl/
    │   │   │   ├── CustomSegment.cs
    │   │   │   ├── CustomSegmentLight.cs
    │   │   │   ├── CustomSegmentLights.cs
    │   │   │   ├── TimedTrafficLights.cs
    │   │   │   └── TimedTrafficLightsStep.cs
    │   │   ├── LightMode.cs
    │   │   ├── README.md
    │   │   ├── StepChangeMetric.cs
    │   │   └── TrafficLightSimulationType.cs
    │   ├── TrafficManager.cs
    │   ├── TrafficManagerMod.cs
    │   ├── TrafficManagerMode.cs
    │   ├── UI/
    │   │   ├── CustomKeyHandler.cs
    │   │   ├── IncompatibleModsPanel.cs
    │   │   ├── LinearSpriteButton.cs
    │   │   ├── MainMenu/
    │   │   │   ├── ClearTrafficButton.cs
    │   │   │   ├── DebugMenu.cs
    │   │   │   ├── DespawnButton.cs
    │   │   │   ├── JunctionRestrictionsButton.cs
    │   │   │   ├── LaneArrowsButton.cs
    │   │   │   ├── LaneConnectorButton.cs
    │   │   │   ├── MainMenuPanel.cs
    │   │   │   ├── ManualTrafficLightsButton.cs
    │   │   │   ├── MenuButton.cs
    │   │   │   ├── MenuToolModeButton.cs
    │   │   │   ├── ParkingRestrictionsButton.cs
    │   │   │   ├── PrioritySignsButton.cs
    │   │   │   ├── README.md
    │   │   │   ├── SpeedLimitsButton.cs
    │   │   │   ├── StatsLabel.cs
    │   │   │   ├── TimedTrafficLightsButton.cs
    │   │   │   ├── ToggleTrafficLightsButton.cs
    │   │   │   ├── VehicleRestrictionsButton.cs
    │   │   │   └── VersionLabel.cs
    │   │   ├── README.md
    │   │   ├── RemoveCitizenInstanceButtonExtender.cs
    │   │   ├── RemoveVehicleButtonExtender.cs
    │   │   ├── SubTool.cs
    │   │   ├── SubTools/
    │   │   │   ├── JunctionRestrictionsTool.cs
    │   │   │   ├── LaneArrowTool.cs
    │   │   │   ├── LaneConnectorTool.cs
    │   │   │   ├── ManualTrafficLightsTool.cs
    │   │   │   ├── ParkingRestrictionsTool.cs
    │   │   │   ├── PrioritySignsTool.cs
    │   │   │   ├── README.md
    │   │   │   ├── SpeedLimitsTool.cs
    │   │   │   ├── TimedTrafficLightsTool.cs
    │   │   │   ├── ToggleTrafficLightsTool.cs
    │   │   │   └── VehicleRestrictionsTool.cs
    │   │   ├── TextureResources.cs
    │   │   ├── ToolMode.cs
    │   │   ├── TrafficManagerTool.cs
    │   │   ├── Translation.cs
    │   │   ├── TransportDemandViewMode.cs
    │   │   ├── UIBase.cs
    │   │   ├── UIMainMenuButton.cs
    │   │   └── UITransportDemand.cs
    │   ├── Util/
    │   │   ├── GenericObservable.cs
    │   │   ├── GenericUnsubscriber.cs
    │   │   ├── IObservable.cs
    │   │   ├── IObserver.cs
    │   │   ├── IVisitor.cs
    │   │   ├── LoopUtil.cs
    │   │   ├── ModsCompatibilityChecker.cs
    │   │   ├── README.md
    │   │   ├── RedirectionHelper.cs
    │   │   ├── SegmentLaneTraverser.cs
    │   │   ├── SegmentTraverser.cs
    │   │   ├── TextureUtil.cs
    │   │   └── TinyDictionary.cs
    │   └── packages.config
    ├── TLM.sln.DotSettings
    ├── TMPE.CitiesGameBridge/
    │   ├── Factory/
    │   │   └── ServiceFactory.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── Service/
    │   │   ├── BuildingService.cs
    │   │   ├── CitizenService.cs
    │   │   ├── NetService.cs
    │   │   ├── PathService.cs
    │   │   ├── SimulationService.cs
    │   │   └── VehicleService.cs
    │   ├── TMPE.CitiesGameBridge.csproj
    │   └── packages.config
    ├── TMPE.GenericGameBridge/
    │   ├── Factory/
    │   │   └── IServiceFactory.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── Service/
    │   │   ├── IBuildingService.cs
    │   │   ├── ICitizenService.cs
    │   │   ├── INetService.cs
    │   │   ├── IPathService.cs
    │   │   ├── ISimulationService.cs
    │   │   └── IVehicleService.cs
    │   ├── TMPE.GenericGameBridge.csproj
    │   └── packages.config
    ├── TMPE.GlobalConfigGenerator/
    │   ├── App.config
    │   ├── Generator.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── TMPE.GlobalConfigGenerator.csproj
    │   └── packages.config
    ├── TMPE.SpiralLoopTest/
    │   ├── App.config
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   └── SpiralLoopTest.csproj
    ├── TMPE.TestGameBridge/
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── TMPE.TestGameBridge.csproj
    │   └── packages.config
    ├── TMPE.UnitTest/
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── TMPE.UnitTest.csproj
    │   ├── Util/
    │   │   ├── LogicUtilUnitTest.cs
    │   │   └── TinyDictionaryUnitTest.cs
    │   └── packages.config
    ├── TMPE.ruleset
    └── TMPE.sln

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following 
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
# 
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the 
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/

# Roslyn cache directories
*.ide/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

#NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding addin-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
_NCrunch_*
.*crunch*.local.xml

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings 
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# If using the old MSBuild-Integrated Package Restore, uncomment this:
#!**/packages/repositories.config

# Windows Azure Build Output
csx/
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/
/logo/

# MSVS 2017 artifacts
/.vs/slnx.sqlite
/TLM/.vs/TMPE/*

# Dependecies game dlls
/TLM/dependencies

================================================
FILE: .gitmodules
================================================
[submodule "TLM/OptionsFramework"]
	path = TLM/OptionsFramework
	url = ../OptionsFramework.git
[submodule "TLM/CSUtil.CameraControl"]
	path = TLM/CSUtil.CameraControl
	url = ../CSUtil.CameraControl.git


================================================
FILE: .travis.yml
================================================
language: csharp
solution: "./TLM/TMPE.sln"
branches:
  only:
    - master
    - stable
notifications:
  - email: false


================================================
FILE: CHANGELOG.md
================================================
# Cities: Skylines - Traffic Manager: *President Edition* [![Discord](https://img.shields.io/discord/545065285862948894.svg)](https://discord.gg/faKUnST)

# Changelog
10.18, 29/03/2019
- Bugfix: Parking AI: Cars do not spawn at outside connections (#245)
- Bugfix: Trams perform turns on red (#248)
- Update: Service Radius Adjuster mod by Egi removed from incompatible mods list (#255)

10.17, 23/03/2019
- Introduced new versioning scheme (10.17 instead of 1.10.17)
- Synchronized code and version with stable version
- Updated russian translation (thanks to @vitalii201 for translating) (#207)
- Updated list of incompatible mods (#115)
- Removed stable version from list of incompatible mods (#168)
- Turn-on-red can now be toggled for unpreferred turns between one-ways
- Improved train behavior at shunts: Trains now prefer to stay on their track (#230)
- Fixed and optimized lane selection for u-turns and at dead ends (#101)
- Parking AI: Improved public transport (PT) usage patterns, mixed car/PT paths are now possible  (#218)
- Bugfix: Parking AI: Tourist cars despawn because they assume they are at an outside connection (#218)
- Bugfix: Parking AI: Return path calculation did not accept beautification segments (#218)
- Bugfix: Parking AI: Cars/Citizens waiting for a path might jump around (#218)
- Bugfix: Vanilla lane randomization does not work as intended at highway transitions (#112)
- Bugfix: Vehicles change lanes at tollbooths (#225)
- Bugfix: Path-finding: Array index is out of range due to a race condition (#221)
- Bugfix: Citizen not found errors when using walking tours (#219)
- Bugfix: Timed light indicator only visible when any timed light node is selected (#222)

1.10.16, 24/02/2019
- Gameplay: Fixed problem with vehicle despawn after road upgrade/remove (thanks @pcfantasy for implementation suggestion)(#86, #101)
- Gameplay: Fixed problem with vehicles unable to choose lane when u-turn at dead-end (thanks @pcfantasy for implementation and @aubergine10 for neccesary tests)(#101)
- Gameplay: Fixed problem when user couldn't change state of 'Turn on Red' while enabled_by_default option not selected (thanks @Sp3ctre18 for bug confirmation) (#102)
- Gameplay: Added missing logic for noise density calculations (thanks to @pcfantasy for fix) (#66)
- UI: New icons for empty and remove_priority_sign settings (thanks @aubergine10 for those icons) (#75, #77)
- Other: Greatly improved incompatible mod scanner, added dialog to list and unsubscribe incompatible mods (#91)
- Other: Changed mod name in Content Manager to __TM:PE__
- Other: Discord server was set up by @FireController1847 - link in mod description
- Other: Fixed 'silent error' inside log related with "Esc key handler" (#92)
- Contribution: Added project building instructions and PR review

1.10.15, 10/02/2019
- Enhancement: Now you can use Escape key to close Traffic Manager without returning to Pause Menu (thanks to @aubergine10 for suggestion) (#16)
- Gameplay: Updated pathfinding with missing vanilla logic
- Gameplay: Tweaked values in CargoTruckAI path finding (thanks to @pcfantasy for improvement suggestion)
- Gameplay: Tweaked speed multiplier of reckless drivers to get more realistic speed range (thanks to @aubergine10 for suggestion) (#23)
- UI: New icons for cargo and passenger train restriction (thanks to @aubergine10) (#17)
- Translations: Simplified Chinese translation updated (thanks to @Emphasia for translating)
- Other: Added notification if user is still subscribed to old original TM:PE
- [Experimental feature] Turn on red (thanks to @FireController1847 for implementation and to @pcfantasy for source code base)

1.10.14, 27/01/2019
- Bugfix: Added missing Car AI type (postVanAI) - now post vans and post trucks are assigned to service vehicles group
- Bugfix: Vehicles doesn't stop when driving through toll booth - fixes toll booth income too
- Bugfix: Cargo Airport doesn't work (Cargo planes not spawning and not arriving)
- Updated Polish translation
- Updated Korean translation (thanks to @Toothless FLY [ROK]LSh.st for translating)
- Fixed Mod Options layout (text label overlaps slider control if too wide)

1.10.13, 31/10/2018
- Bugfix: Tollbooth fix

1.10.12, 08/12/2018
- Added the option to allow/disallow vehicles to enter a blocked junction at transition and pedestrian crossing nodes (#195)
- Updated Russian translation (thanks to vitalii2011 for translating)
- Bent nodes do not allow for u-turns by default (#170)
- Bugfix: Emergency vehicles pass closed barriers at level crossings
- Bugfix: Bus lines render u-turn where they should not (#207)
- Bugfix: Parking AI: Cims leaving the city despawn their car at public transport stations (#214)
- Bugfix: Crossing restrictions do not work at intersection between road and highway (#212)

1.10.11, 21/07/2018
- U-turn lane connections are represented by appropriate lane arrow (#201)
- Bugfix: Heavy vehicles are unable to u-turn at dead ends (#194)
- Bugfix: Routing & Priority rules do not work properly for acute (< 30°)/obtuse(> 150°) segment angles (#199)
- Bugfix: Buses do not prefer lanes with correct lane arrow (#206)
- Bugfix: Race condition in path-finding might cause paths to be assigned to wrong vehicle/citizen (#205)
- Bugfix: Vehicles are unable to perform u-turns when setting off on multi-lane roads (#197)

1.10.10, 14/07/2018
- Parking AI: Improved park & ride behavior
- Parking AI: Walking paths from parking position to destination building take public transportation into account
- Bugfix: Parking AI causes unnecessary path-findings (#183, thanks to Sipke82 for reporting)
- Bugfix: Prohibiting cims from crossing the road also affect paths where crossing is unnecessary (#168, thanks to aubergine10 for reporting)

1.10.9, 13/07/2018
- Updated for game version 1.10.1-f3
- Re-implemented path-finding algorithm
- Updated French translation (thanks to mjm92150 for translating!)

1.10.8, 01/07/2018
- Updated Korean translation (thanks to @Toothless FLY [ROK]LSh.st for translating)
- Updated Polish translation (thanks to @Krzychu1245 for translating)
- Added button to remove parked vehicles (in options dialog, see maintenance tab)
- Parking AI: Removed check for distance between parked vehicle and target building
- Bugfix: Parking AI: Cims spawn pocket cars when they originate from an outside connection
- Bugfix: Incorrect speed limits returned for pedestrian lanes
- Bugfix: Routing is not updated while the game is paused (thanks to @Oh My Lawwwd! for reporting)
- Bugfix: Vanilla traffic lights are ignored when either the priority signs or timed traffic light features are disabled (thanks to @aubergine10 for reporting)
- Bugfix: Park maintenance vehicles are not recognized as service vehicles
- Bugfix: Cars leaving city state "thinking of a good parking spot" (thanks to @aubergine10 for reporting)

1.10.7, 28/05/2018
- Bugfix: U-turn routing is inconsistent on transport lines vs. bus paths (#137, thanks to @Zorgoth for reporting this issue)
- Bugfix: Junction restrictions for pedestrian crossings are sometimes not preserved (#142, thanks to Anrew and @wizardrazer for reporting this issue)
- Fixed: Geometry subscription feature may cause performance issues (#145)
- Fixed: Parking AI: Transport mode storage causes performance issues during loading (#147, thanks to @hannebambel002 and @oneeyets for reporting and further for providing logs and savegames)

1.10.6, 24/05/2018
- Updated for game version 1.10.0-f3
- Accessibility: New option: Main menu size can be controlled
- Accessibility: New option: GUI and overlay transparency can be controlled
- New option: Penalties for switching between different public transport lines can be toggled
- Cims can now be removed from the game
- Improved window design
- Path-finding: Service vehicles are now allowed to ignore lane arrows right after leaving their source building, thus service buildings should now work properly at dead-end roads with median
- Lane connector can be used on monorail tracks
- Advanced Vehicle AI: Tuned parameters
- Dynamic Lane Selection: Absolute speed measurements are used instead of relative measurements
- Improved randomization for realistic speeds such that vehicles may change their target velocity over time
- Improved vehicle position tracking
- Improved mod compatibility checks
- Parking AI: Improved behavior in situations where vehicles are parked near public transport hubs and road connections are partially unavailable
- Bugfix: Parking AI: Not all possible paths are regarded during path-finding
- Bugfix: Parking AI: Cims become confused when trying to return their abandoned car back home (special thanks to Wildcard-25 for reporting and solving this issue)
- Bugfix: Parking AI: Cims do not search for parking building when road-side parking spaces are found
- Bugfix: Parking AI: Parked vehicles are spawned near the source building even when cims are already en route
- Bugfix: Parking AI: Cims sometimes get stuck in an infinite loop while trying to enter their parked car
- Bugfix: Lane connector does not work for roads with more than ten lanes
- Bugfix: Allowing/Disallowing vehicles to enter a blocked junction does not work for certain junctions
- Updated Korean translation (thanks to @Toothless FLY [ROK]LSh.st for translating)

1.10.5, 06/01/2018
- UI scaling removed
- Simplified Chinese translation updated (thanks to Emphasia for translating)
- Polish translation updated (thanks to @Krzychu1245 for translating)
- Introduced randomization for lane changing costs
- Introduced randomization for "trucks prefer innermost lanes on highways" costs
- Removed unnecessary calculations in path-finding
- Added path-finding costs for public transport transitions
- Pedestrian traffic lights do not show up if crossing the street is prohibited
- Busses are allowed to switch multiple lanes after leaving a bus stop
- Bugfix: Main menu button might be out of view
- Bugfix: Division by zero occurs for low speed roads
- Bugfix: Automatic pedestrian lights at railroad do not work as expected
- Bugfix: Timed traffic lights show up for bicycles (they should not)
- Bugfix: Due to a multi-threading issue junction restrictions may cause the game state to become inconsistent
- Bugfix: Routing rules prevents vehicles from spawning when starting building lies too close to an intersection/road end
- Bugfix: Disabling tutorial message has no effect
- Bugfix: "Stay on lane" feature does not work as intended for certain nodes

1.10.4, 19/10/2017
- Updated for game version 1.9.0-f5
- Added possibility to add priority signs at multiple junctions at once (press Shift)
- Added tutorials (can be disabled in the options window globally)

1.10.3, 18/08/2017
- Bugfix: Setting unlimited speed limit causes vehicles to crawl at low speed (thanks to @sethisuwan for reporting this issue)
- Bugfix: Vehicle-separated traffic lights do not show up for trams & monorails (thanks to @thecitiesdork for reporting this issue)

1.10.2, 17/08/2017
- Updated for game version 1.8.0-f3
- Improved performance
- Bugfix: Pedestrians sometimes ignore red traffic light signals (thanks to @(c)RIKUPI™ for reporting this issue)
- Bugfix: Timed traffic lights do not correctly recognize set vehicle restrictions (thanks to @alborzka for reporting this issue)

1.10.1, 05/08/2017
- Updated Polish, Korean, and Simplified Chinese translations
- Bugfix: Default routing is disabled if the lane connector is used on a subset of all available lanes only
- Bugfix: Parking AI cannot be enabled/disabled
- Bugfix: Lane connection points can connected to themselves

1.10.0, 30/07/2017
- New feature: Dynamic Lane Selection
- New feature: Adaptive step switching
- New feature: Individual vehicles may be removed from the game
- New option: Vehicle restrictions aggression
- New option: Vehicles follow priority rules at junctions with timed traffic lights
- Improved path-finding performance
- Improved traffic measurement engine performance
- Reorganized global configuration file (sorry, your main menu and main button positions are reset)
- The option "Road condition has a bigger impact on vehicle speed" is only shown if the Snowfall DLC is owned
- The flow/wait calculation mode to be used is now configurable via the global configuration file
- Added path-find statistics label
- Added confirmation dialog for "Clear Traffic" button
- Currently active timed traffic light step is remembered
- Trains do not wait for each other anymore near timed traffic lights
- It is now possible to connect train station tracks and outside connections with the lane connector
- Disabling the Parking AI triggers graceful clean up procedure
- Relocated some options
- Improved vehicle state tracking
- Workaround for a base game issue that causes trams to get stuck
- Trains do not longer stop in front of green timed traffic lights
- Vehicles use queue skipping to prioritize path-finding runs that are caused by road modifications
- Adding a vehicle separate light to a timed traffic lights applies the main light configuration
- Parking AI: Vehicles can now find parking spaces at the opposite road side
- Parking AI: Included an improved fallback logic for some edge cases
- Parking AI: Citizens should now be more successful in returning their cars back home  
- Parking AI: Tuned parking radius parameters
- Parking AI: If the limit for parked vehicles is reached and parking fails due to it, no alternative parking space is queried
- Vehicle AI: Busses prefer lanes with correct lane arrow over incorrect ones
- Bugfix: Using the bulldozer tool might lead to inconsistent road geometry information
- Bugfix: Citizens that fail to approach their parked car fly towards their target building
- Bugfix: Parking AI: Path-finding fails if cars are parked too far away from a road
- Bugfix: Parking AI: Citizens approaching a car start to float away
- Bugfix: "Heavy vehicles prefer outer lanes on highways" does not work
- Bugfix: The lane connector does not allow connecting all available lane end points at train stations and on bidirectional one-lane train tracks
- Bugfix: Vehicles may get stuck in several situations
- Upgrading to a road with bus lanes now copies an already existing traffic light state to the new traffic light

1.9.6, 28/05/2017
- Updated Simplified Chinese translation
- Bugfix: Vehicles cannot perform u-turns at junctions with only one outgoing segment (thanks to @Sunbird for reporting this issue)
- Bugfix: Path-finding costs for large distances exceed the maximum allowed value (thanks to @Huitsi for reporting this issue)
- Bugfix: Under certain circumstances path-finding at railroad crossings allow switching from road to rail tracks.

1.9.5, 24/05/2017
- Updated for game version 1.7.1-f1
- Updated Polish, Korean and Italian translation
- Language can now be switched without requiring a game restart
- Bugfix: Routing calculation does not work as expected for one-way roads with tram tracks (thanks to @bigblade66, @Battelman2 and @AS_ for reporting and providing extensive information)
- Bugfix: Copying timed traffic lights lead to inconsistent internal states which causes timed traffic lights to be omitted during the save process (thanks to @jakeroot and @t1a2l for reporting this issue)
- Bugfix: In certain situations unnecessary vehicle-seperate traffic lights are being created
- Bugfix: Upgrading a train track segment next to a timed traffic light causes trains to ignore the traffic light
- Hotfix: Cable cars despawn at end-of-line stations

1.9.4, 23/05/2017
- New option: Ban private cars and trucks on bus lanes
- Updated Spanish and French translation
- Optimized path-finding
- Increased path-finding cost for private cars driving on bus lanes
- Increased path-finding cost for disregarding vehicle restrictions
- Bugfix: Path-finding is unable to calculate certain paths after modifying the road network

1.9.3, 22/05/2017
- Disabled notification of route recalculating because some players report crashes
- Removed default vehicle restrictions from bus lanes
- Modified junction restrictions come into effect instantaneously
- UI: Saving a timed step does not reset the timed traffic light to the first state
- Bugfix: AI: Segment traffic data is not taken into account
- Bugfix: Priority rules are not properly obeyed
- Bugfix: Under certain circumstances priority signs cannot be removed
- Bugfix: Path-finding is unable to calculate certain paths

1.9.2, 20/05/2017
- UI: Main menu & UI tools performance improved
- Bugfix: Traffic lights can be removed from junctions that are controlled by a timed traffic light program

1.9.1, 19/05/2017
- Updated French, Dutch and Korean translation
- Bugfix: Using the vanilla traffic light toggling feature crashes the game if TMPE's main menu has not been opened at least once
- Bugfix: AI: More car traffic and less public transportation present than in vanilla

1.9.0, 18/05/2017
- Updated for game version 1.7.0-f5
- New feature: Parking restrictions
- New feature: Speed limits can be set up for individual lanes with the Control key
- New feature: Added timed traffic light and speed limit support for monorails
- New feature: Copy & paste for individual timed traffic lights
- New feature: Rotate individual timed traffic lights
- New feature: Lane customizations may come into effect instantaneously
- Unified traffic light toggling feature with game code
- Performance improvements
- Reworked the way that traffic measurements are performed
- Advanced Vehicle AI: Algorithm updated, performance improved - Possible routing decisions are now being precalculated
- Path-finding cost multiplicator for vehicle restrictions is now configurable in TMPE_GlobalConfig.xml
- UI: More compact, movable main menu UI
- Added support for custom languages
- Added Korean translation (thanks to @Toothless FLY [ROK]LSh.st for translating)
- Updated translations: German, Polish, Russian, Portuguese, Traditional Chinese
- Major code refactorings
- AI: Tuned path-finding parameters
- New option: Main button position can be locked
- New option: Main menu position can be locked
- New option: Added language selection in options dialog
- New option: Customization of lane arrows, lane connections and vehicle restrictions can now come into effect instantaneously
- Bugfix: Cars sometimes get stuck forever when the Advanced Parking AI is activated (thanks to @cmfcmf for reporting this issue)
- Bugfix: Busses do not perform u-turns even if the transport line show u-turns (thanks to @dymanoid for reporting this issue)
- Bugfix: Timed traffic lights do not work as expected on single-direction train tracks (thanks to @DaEgi01 for reporting this issue)
- Bugfix: Vehicle restriction and speed limit signs overlay is displayed on the wrong side of inverted road segments
- Bugfix: Influx statistics value is zero (thanks to @hjo for reporting this issue)

1.8.16, 20/03/2017
- Lane connections can now also be removed by pressing the backspace key
- Improved lane selection for busses if the option "Busses may ignore lane arrows" is activated
- Bugfix: The game sometimes freezes when using the timed traffic light tool
- Bugfix: Lane connections are not correctly removed after modifying/removing a junction
- Bugfix: Selecting a junction for setting up junction restrictions toggles the currently hovered junction restriction icon

1.8.15, 27/01/2017
- Updated for game version 1.6.3-f1

1.8.14, 07/01/2017
- Bugfix: Wait/flow ratio at timed traffic lights is sometimes not correctly calculated
- Bugfix: A deadlock situation can arise at junctions with priority signs such that no vehicle enters the junction
- Bugfix: When adding a junction to a timed traffic light, sometimes light states given by user input are not correctly stored
- Bugfix: Joining two timed traffic lights sets the minimum time to "1" for steps with zero minimum time assigned
- Bugfix: Modifications of timed traffic light states are sometimes not visible while editting the light (but they are applied nonetheless)
- Bugfix: Button background is not always correctly changed after clicking on a button within the main menu
- Tram lanes can now be customized by using the lane connector tool
- Minor performance optimizations for priority sign simulation

1.8.13, 05/01/2017
- Bugfix: Timed traffic ligt data can become corrupt when upgrading a road segment next to a traffic light, leading to faulty UI behavior (thanks to @Brain for reporting this issue)
- Bugfix: The position of the main menu button resets after switching to the free camera mode (thanks to @Impact and @gravage for reporting this issue)
- Bugfix: A division by zero exception can occur when calculating the average number of waiting/floating vehicles
- Improved selection of overlay markers on underground roads (thanks to @Padi for reminding me of that issue)
- Minor performance improvements

1.8.12, 02/01/2017
- Updated for game version 1.6.2-f1
- Bugfix: After leaving the "Manual traffic lights" mode the traffic light simulation is not cleaned up correctly (thanks to @diezelunderwood for reporting this issue)
- Bugfix: Insufficient access rights to log file causes the mod to crash

1.8.11, 02/01/2017
- Bugfix: Speed limits for elevated/underground road segments are sometimes not correctly loaded (thanks to @Pirazel and @[P.A.N] Uf0 for reporting this issue)

1.8.10, 31/12/2016
- Improved path-finding performance (a bit)
- Added a check for invalid road thumbnails in the "custom default speed limits" dialog

1.8.9, 29/12/2016
- It is now possible to set speed limits for metro tracks
- Custom default speed limits may now be defined for train and metro tracks
- Junction restrictions may now be controlled at bend road segments
- Customizable junctions are now highlighted by the lane connector tool
- Improved UI behavior
- Performance improvements
- Bugfix: Selecting a junction to set up priority signs sometimes does not work (thanks to @Artemis *Seven* for reporting this issue)
- Bugfix: Automatic pedestrian lights do not work as expected at junctions with incoming one-ways and on left-hand traffic maps

1.8.8, 25/12/2016
- Bugfix: Taxis are not being used
- Bugfix: Prohibiting u-turns with the junction restriction tool does not work (thanks to @Kisoe for reporting this issue)
- Bugfix: Cars are sometimes floating across the map while trying to park (thanks to @[Delta ²k5] for reporting this issue)

1.8.7, 24/12/2016
- Bugfix: Parking AI: Cims that try to reach their parked car are sometimes teleported to another location where they start to fly through the map in order to reach their car
- Bugfix: Parking AI: Cims owning a parked car do not consider using other means of transportation
- Bugfix: Parking AI: Residents are unable to leave the city through a highway outside connection
- Bugfix: Trains/Trams are sometimes not detected at timed traffic lights
- Advanced AI: Improved lane selection
- The position of the main menu button is now forced inside screen bounds on startup
- Improved overall user interface performance
- Improved overlay behavior
- Improved traffic measurement
- Auto pedestrian lights at timed traffic lights behave more intelligently now
- A timed traffic light step with zero minimum time assigned can now be skipped automatically
- Using the lane connector to create a u-turn now automatically enables the "u-turn allowed" junction restriction
- Updated French translation (thanks to @simon.royer007 for translating)
- Added Italian translation (thanks to @Admix for translating)  

1.8.6, 12/12/2016
- Added Korean language (thanks to @Toothless FLY [ROK]LSh.st for translating)
- Updated Chinese language code (zh-cn -> zh) in order to make it compatible with the game (thanks to @Lost丶青柠 for reporting this issue)

1.8.5, 11/12/2016
- Updated to game version 1.6.1-f2
- Removed option "Evacuation busses may only be used to reach a shelter" (CO fixed this issue)
- Bugfix: Average speed limits are not correctly calculated for road segments with bicycle lanes (thanks to @Toothless FLY [ROK]LSh.st for reporting this issue)

1.8.4, 11/12/2016
- New feature: "Stay on lane": By pressing Shift + S in the Lane Connector tool you can now link connected lanes such that vehicles are not allowed to change lanes at this point. Press Shift + S again to restrict "stay on lane" to either road direction.
- U-turns are now only allowed to be performed from the innermost lane     
- TMPE now detects if the number of spawned vehicles is reaching its limit (16384). If so, spawning of service/emergency vehicles is prioritized over spawning other vehicles.
- Bugfix: Bicycles cannot change from bicycle lanes to pedestrian lanes
- Bugfix: Travel probabilities set in the "Citizen Lifecycle Rebalance v2.1" mod are not obeyed (thanks to @informmanuel, @shaundoddmusic for reporting this issue)
- Bugfix: Number of tourists seems to drop when activating the mod (statistics were not updated, thanks to @hpp7117, @wjrohn for reporting this issue)
- Bugfix: When loading a second savegame a second main menu button is displayed (thanks to @Cpt. Whitepaw for reporting this issue)
- Bugfix: While path-finding is in progress vehicles do "bungee-jumping" on the current segment (thanks to @mxolsenx, @Howzitworld for reporting this issue)
- Bugfix: Cims leaving the city search for parking spaces near the outside connection which is obviously not required   

1.8.3, 4/12/2016
- Bugfix: Despite having the Parking AI activated, cims sometimes still spawn pocket cars.
- Bugfix: When the Parking AI is active, bicycle lanes are not used (thanks to @informmanuel for reporting this issue)
- Tweaked u-turn behavior
- Improved info views

1.8.2, 3/12/2016
- Bugfix: Taxis were not used (thanks to @[Delta ²k5] for reporting)
- Bugfix: Minor UI fix in Default speed limits dialog

1.8.1, 1/12/2016
- Updated translations: Polish, Chinese (simplified)
- Bugfix: Mod crashed when loading a second savegame

1.8.0, 29/11/2016
- Updated to game version 1.6.0-f4
- New feature: Default speed limits
- New feature: Parking AI (replaces "Prohibit cims from spawning pocket cars")
- New option: Heavy vehicles prefer outer lanes on highways
- New option: Realistic speeds
- New option: Evacuation busses may ignore traffic rules (Natural Disasters DLC required)
- New option: Evacuation busses may only be used to reach a shelter (Natural Disasters DLC required)
- AI: Improved lane selection, especially on busy roads
- AI: Improved mean lane speed measurement
- Traffic info view shows parking space demand if Parking AI is activated
- Public transport info view shows transport demand if Parking AI is activated
- Added info texts for citizen and vehicle tool tips if Parking AI is activated
- Extracted internal configuration to XML configuration file
- Changed main menu button due to changes in the game's user interface
- Main menu button is now moveable
- Removed compatibility check for Traffic++ V2 (Traffic++ V2 is no longer compatible with TMPE because maintaining compatibility is no longer feasible due to the high effort)
- Updated translations: German, Portuguese, Russian, Dutch, Chinese (traditional)

1.7.15, 26/10/2016
- Bugfix: Timed traffic lights window disappears when clicking on it with the middle mouse button (thanks to @Nexus and @Mariobro14 for helping me identifying the cause of this bug)

1.7.14, 18/10/2016
- Updated for game version 1.5.2-f3

1.7.13, 15/09/2016
- Implemented a permanent fix to solve problems with stuck vehicles/cims caused by third party mods
- Added a button to reset stuck vehicles/cims (see mod settings menu)
- AI: Improved lane selection algorithm
- Bugfix: AI: Lane merging was not working as expected
- Bugfix: Pedestrian light states were sometimes not being stored correctly (thanks to Filip for pointing out this problem)

1.7.12, 09/09/2016
- AI: Lane changes are reduced on congested road segments
- Timed traffic lights should now correctly detect trains and trams
- Bugfix: GUI: Junction restriction icons sometimes disappear
- Updated Chinese (simplified) translation

1.7.11, 01/09/2016
- Updated to game version 1.5.1-f3

1.7.10, 31/08/2016
- Players can now disable spawning of pocket cars
- Updated Chinese (simplified) translation
- Bugfix: Timed traffic lights were flickering
- Bugfix: Pedestrian traffic lights were not working as expected
- Bugfix: When upgrading/removing/adding a road segment, nearby junction restrictions were removed
- Bugfix: Setting up vehicle restrictions affects trams (thanks to @chem for reporting)
- Bugfix: Manual pedestrian traffic light states were not correctly handled
- Bugfix: Junction restrictions overlay did not show all restricted junctions

1.7.9, 22/08/2016
- In-game traffic light states are now correctly rendered when showing "yellow"
- Removed negative effects on public transport usage
- GUI: Traffic light states do not flicker anymore
- Performance improvements

1.7.8, 18/08/2016:
- Bugfix: Cims sometimes got stuck (thanks to all reports and especially to @Thilawyn for providing a savegame)
- GUI: Improved traffic light arrow display
- Improved performance while saving

1.7.7, 16/08/2016:
- AI: Instead of walking long distances, citizens now use a car
- AI: Citizens will remember their last used mode of transport (e.g. they will not drive to work and come return by bus anymore)
- AI: Increased path-finding costs for traversing over restricted road segments
- Added "110" speed limit
- GUI: Windows are draggable
- GUI: Improved window scaling on lower resolutions
- Improved performance while saving

1.7.6, 14/08/2016:
- New feature: Players may now prohibit cims from crossing the street
- AI: Tuned randomization of lane changing behavior
- AI: Introduced path-finding costs for leaving main highway (should reduce amount of detours taken)
- UI: Clicking with the secondary mouse button now deselects the currently selected node/segment for all tools
- Added the possibility to connect train track lanes with the lane connector (as requested by @pilot.patrick93)
- Moved options from "Change lane arrows" to "Vehicle restrictions" tool
- Updated Russian translation
- Bugfix: AI: At specific junctions, vehicles were not obeying lane connections correctly (thanks to @Mariobro14 for pointing out this problem)
- Bugfix: AI: Path-finding costs for u-turns were not correctly calculated (thanks to @Mariobro14 for pointing out this problem)
- Bugfix: Vehicles were endlessly waiting for each other at junctions with certain priority sign configurations
- Bugfix: AI: Lane changing costs corrected

1.7.5, 07/08/2016:
- Bugfix: AI: Cims were using pocket cars whenever possible
- Bugfix: AI: Path-finding failures led to much less vehicles spawning
- Bugfix: AI: Lane selection at junctions with custom lane connection was not always working properly (e.g. for Network Extensions roads with middle lane)
- Bugfix: While editing a timed traffic light it could happen that the traffic light was deleted

1.7.4, 31/07/2016:
- AI: Switched from relative to absolute traffic density measurement
- AI: Tuned new parameters
- Bugfix: Activated/Disabled features were not loaded correctly
- Bugfix: AI: At specific junctions the lane changer did not work as intended
- Possible fix for OSX performance issues
- Code improvements
- Added French translations (thanks to @simon.royer007 for translating!)

1.7.3, 29/07/2016:
- Added the ability to enable/disable mod features (e.g. for performance reasons)
- Bugfix: Vehicle type determination was incorrect (fixed u-turning trams/trains, stuck vehicles)
- Bugfix: Clicking on a train/tram node with the lane connector tool led to an uncorrectable error (thanks to @noaccount for reporting this problem)
- Further code improvements

1.7.2, 26/07/2016:
- Optimized UI overlay performance

1.7.1, 24/07/2016:
- Reverted "Busses now may only ignore lane arrows if driving on a bus lane" for now
- Bugfix: Trains were not despawning if no path could be calculated
- Workaround for third-party issue: TM:PE now detects if the calculation of total vehicle length fails    

1.7.0, 23/07/2016:
- New feature: Traffic++ lane connector
- Busses now may only ignore lane arrows if driving on a bus lane
- Rewritten and simplified vehicle position tracking near timed traffic lights and priority signs for performance reasons
- Improved performance of priority sign rules
- AI: Cims now ignore junctions where pedestrian lights never change to green
- AI: Removed the need to define a lane changing probability
- AI: Tweaked lane changing parameters
- AI: Highway rules are automatically disabled at complex junctions (= more than 1 incoming and more than 1 outgoing roads)
- Improved UI performance if overlays are deactivated
- Simulation accuracy now also controls time intervals between traffic measurements
- Added compatibility detection for the Rainfall mod
- Improved fault-tolerance of the load/save system
- Default wait-flow balance is set to 0.8
- Bugfix: Taxis were allowed to ignore lane arrows
- Bugfix: AI: Highway rules on left-hand traffic maps did not work the same as on right-hand traffic maps
- Bugfix: Upgrading a road segment next to a timed traffic light removed the traffic light leading to an inconsistent state (thanks to @ad.vissers for pointing out this problem)

1.6.22, 29/06/2016:
- AI: Taxis now may not ignore lane arrows and are using bus lanes whenever possible (thanks to @Cochy for pointing out this issue)
- AI: Busses may only ignore lane arrows while driving on a bus lane
- Bugfix: Traffic measurement at timed traffic lights was incorrect

1.6.22, 21/06/2016:
- Speed/vehicle restrictions may now be applied to all road segments between two junctions by holding the shift key
- Reworked how changes in the road network are recognized
- Advanced Vehicle AI: Improved lane selection at junctions where bus lanes end
- Advanced Vehicle AI: Improved lane selection of busses
- Improved automatic pedestrian lights
- Improved separate traffic lights: Traffic lights now control traffic lane-wise
- UI: Sensitivity slider is only available while adding/editing a step or while in test mode
- Bugfix: Lane selection on maps with left-hand traffic was incorrect
- Bugfix: While building in pause mode, changes in the road network were not always recognized causing vehicles to stop/despawn
- Bugfix: Police cars off-duty were ignoring lane arrows
- Bugfix: If public transport stops were near a junction, trams/busses were not counted by timed traffic lights (many thanks to Filip for identifying this problem)
- Bugfix: Trains/Trams were sometimes ignoring timed traffic lights (many thanks to Filip for identifying this problem)
- Bugfix: Building roads with bus lanes caused garbage, bodies, etc. to pile up

1.6.21, 14/06/2016:
- Bugfix: Too few cargo trains were spawning (thanks to @Scratch, @toruk_makto1, @Mr.Miyagi, @mottoh and @Syparo for pointing out this problem)       
- Bugfix: Vehicle restrictions did not work as expected (thanks to @nordlaser for pointing out this problem)

1.6.20, 11/06/2016:
- Bugfix: Priority signs were not working correctly (thanks to @mottoth, @Madgemade for pointing out this problem)

1.6.19, 11/06/2016
- Bugfix: Timed traffic lights UI not working as expected (thanks to @Madgemade for pointing out this problem)

1.6.18, 09/06/2016
- Updated for game patch 1.5.0-f4
- Improved performance of priority signs and timed traffic lights
- Players can now select elevated rail segments/nodes
- Trams and trains now follow priority signs
- Improved UI behavior when setting up priority signs

1.6.17, 20/04/2016
- Hotfix for reported path-finding problems

1.6.16, 19/04/2016
- Updated for game patch 1.4.1-f2

1.6.15, 22/03/2016
- Updated for game path 1.4.0-f3
- Possible fix for crashes described by @cosminel1982
- Added traditional Chinese translation

1.6.14, 17/03/2016
- Bugfix: Cargo trucks did not obey vehicle restrictions (thanks to @ad.vissers for pointing out this problem)
- Bugfix: When Advanced AI was deactivated, u-turns did not have costs assigned

1.6.13, 16/03/2016
- Added Dutch translation
- The pedestrian light mode of a traffic light can now be switched back to automatic
- Vehicles approaching a different speed limit change their speed more gradually
- The size of signs and symbols in the overlay is determined by screen resolution height, not by width
- Path-finding: Performance improvements
- Path-finding: Fine-tuned lane changing behaviour
- Bugfix: After loading another savegame, timed traffic lights stopped working for a certain time
- Bugfix: Lane speed calculation corrected

1.6.12, 03/03/2016
- Improved memory usage
- Bugfix: Adding/removing junctions to/from existing timed traffic lights did not work (thanks to @nieksen for pointing out this problem)
- Bugfix: Separate timed traffic lights were sometimes not saved (thanks to @nieksen for pointing out this problem)
- Bugfix: Fixed an initialization error (thanks to @GordonDry for pointing out this problem)

1.6.11, 03/03/2016
- Added Chinese translation
- By pressing "Page up"/"Page down" you can now switch between traffic and default map view
- Size of information icons and signs is now based on your screen resolution
- UI code refactored

1.6.10, 02/03/2016
- Additional controls for vehicle restrictions added
- Bugfix: Clicking on a Traffic Manager overlay resulted in vanilla game components (e.g. houses, vehicles) being activated

1.6.9, 02/03/2016
- Updated for game patch 1.3.2-f1

1.6.8, 01/03/2016
- Path-finding: Major performance improvements
- Updated Japanese translation (thanks to @Akira Ishizaki for translating!)
- Added Spanish translation

1.6.7, 27/02/2016
- Tuned AI parameters
- Improved traffic density measurements
- Improved lane changing near junctions: Reintroduced costs for lane changing before junctions
- Improved vehicle behavior near blocked roads (e.g. while a building is burning)
- Bugfix: Automatic pedestrian lights for outgoing one-ways fixed
- Bugfix: U-turns did not have appropriate costs assigned
- Bugfix: The time span between AI traffic measurements was too high

1.6.6, 27/02/2016
- It should now be easier to select segment ends in order to change lane arrows.
- Priority signs now cannot be setup at outgoing one-ways.
- Updated French translation (thanks to @simon.royer007 for translating!)
- Updated Polish translation (thanks to @Krzychu1245 for translating!)
- Updated Portuguese translation (thanks to @igordeeoliveira for translating!)
- Updated Russian translation (thanks to @FireGames for translating!)
- Bugfix: U-turning vehicles were not obeying the correct directional traffic light (thanks to @t1a2l for pointing out this problem)

1.6.5, 24/02/2016
- Added despawning setting to options dialog
- Improved detection of Traffic++ V2

1.6.4, 23/02/2016
- Minor performance improvements
- Bugfix: Path-finding calculated erroneous traffic density values
- Bugfix: Cims left the bus just to hop on a bus of the same line again (thanks to @kamzik911 for pointing out this problem)
- Bugfix: Despawn control did not work (thanks to @xXHistoricalxDemoXx for pointing out this problem)
- Bugfix: State of new settings was not displayed corretly (thanks to @Lord_Assaultーさま for pointing out this problem)
- Bugfix: Default settings for vehicle restrictions on bus lanes corrected
- Bugfix: Pedestrian lights at railway junctions fixed (they are still invisible but are derived from the car traffic light state automatically)

1.6.3, 22/02/2016
- Bugfix: Using the "Old Town" policy led to vehicles not spawning.
- Bugfix: Planes, cargo trains and ship were sometimes not arriving
- Bugfix: Trams are not doing u-turns anymore

1.6.2, 20/02/2016
- Trams are now obeying speed limits (thanks to @Clausewitz for pointing out the issue)
- Bugfix: Clear traffic sometimes throwed an error
- Bugfix: Vehicle restrctions did not work as expected (thanks to @[Delta ²k5] for pointing out this problem)
- Bugfix: Transition of automatic pedestrian lights fixed

1.6.1, 20/02/2016
- Improved performance
- Bugfix: Fixed UI issues
- Modifying mod options through the main menu now gives an annoying warning message instead of a blank page.

1.6.0, 18/02/2016
- New feature: Separate traffic lights for different vehicle types
- New feature: Vehicle restrictions
- Snowfall compatibility
- Better handling of vehicle bans
- Improved the method for calculating lane traffic densities
- Ambulances, fire trucks and police cars on duty are now ignoring lane arrows
- Timed traffic lights may now be setup at arbitrary nodes on railway tracks
- Reckless drivers now do not enter railroad crossings if the barrier is down
- Option dialog is disabled if accessed through the main menu
- Performance optimizations
- Advanced Vehicle AI: Improved lane spreading
- The option "Vehicles may enter blocked junctions" may now be defined for each junction separately
- Vehicles going straight may now change lanes at junctions
- Vehicles may now perform u-turns at junctions that have an appropriate lane arrow configuration
- Road conditions (snow, maintenance state) may now have a higher impact on vehicle speed (see "Options" menu)
- Emergency vehicles on duty now always aim for the the fastest route
- Bugfix: Path-finding costs for crossing a junction fixed
- Bugfix: Vehicle detection at timed traffic lights did not work as expected
- Bugfix: Not all valid traffic light arrow modes were reachable

1.5.2, 01/02/2016
- Traffic lights may now be added to/removed from underground junctions
- Traffic lights may now be setup at *some* points of railway tracks (there seems to be a game-internal bug that prevents selecting arbitrary railway nodes)
- Display of priority signs, speed limits and timed traffic lights may now be toggled via the options dialog
- Bugfix: Reckless driving does not apply for trains (thanks to @GordonDry for pointing out this problem)
- Bugfix: Manual traffic lights were not working (thanks to @Mas71 for pointing out this problem)
- Bugfix: Pedestrians were ignoring timed traffic lights (thanks to @Hannes8910 for pointing out this problem)
- Bugfix: Sometimes speed limits were not saved (thanks to @cca_mikeman for pointing out this problem)

1.5.1, 31/01/2016
- Trains are now following speed limits

1.5.0, 30/01/2016
- New feature: Speed restrictions (as requested by @Gfurst)
- AI: Parameters tuned
- Code improvements
- Lane arrow changer window is now positioned near the edited junction (as requested by @GordonDry)
- Bugfix: Flowing/Waiting vehicles count corrected

1.4.9, 27/01/2016
- Junctions may now be added to/removed from timed traffic lights after they are created
- When viewing/moving a timed step, the displayed/moved step is now highlighted (thanks to Joe for this idea)
- Performance improvements
- Bugfix (AI): Fixed a division by zero error (thanks to @GordonDry for pointing out this problem)
- Bugfix (AI): Near highway exits vehicles tended to use the outermost lane (thanks to @Zake for pointing out this problem)
- Bugfix: Some lane arrows disappeared on maps using left-hand traffic systems (thanks to @Mas71 for pointing out this problem)
- Bugfix: In lane arrow edit mode, the order of arrows was sometimes incorrect (thanks to @Glowstrontium for pointing out this problem)
- Bugfix: Lane merging in left-hand traffic systems fixed
- Bugfix: Turning priority roads fixed (thanks to @GordonDry for pointing out this problem)

1.4.8, 25/01/2016
- AI: Parameters have been tuned
- AI: Added traffic density measurements
- Performance improvements
- Added translation to Polish (thanks to @Krzychu1245 for working on this!)
- Added translation to Russian (thanks to @FireGames for working on this!)
- Bugfix: After removing a timed or manual light the traffic light was deleted (thanks to @Mas71 for pointing out this problem)
- Bugfix: Segment geometries were not always calculated
- Bugfix: In highway rule mode, lane arrows sometimes flickered
- Bugfix: Some traffic light arrows were sometimes not selectable

1.4.7, 22/01/2016
- Added translation to Portuguese (thanks to @igordeeoliveira for working on this!)
- Reduced mean size of files can become quite big (thanks to @GordonDry for reporting this problem)
- Bugfix: Freight ships/trains were not coming in (thanks to @Mas71 and @clus for reporting this problem)
- Bugfix: The toggle "Vehicles may enter blocked junctions" did not work properly (thanks for @exxonic for reporting this problem)
- Bugfix: If a timed traffic light is being edited the segment geometry information is not updated (thanks to @GordonDry for reporting this problem)

1.4.6, 22/01/2016
- Running average lane speeds are measured now
- Minor fixes

1.4.5, 22/01/2016
- The option "Vehicles may enter blocked junctions" may now be defined for each junction separately
- Bugfix: A deadlock in the path-finding is fixed
- Bugfix: Small timed light sensitivity values (< 0.1) were not saved correctly
- Bugfix: Timed traffic lights were not working for some players
- Refactored segment geometry calculation

1.4.4, 21/01/2016
- Added localization support

1.4.3, 20/01/2016
- Several performance improvements
- Improved calculation of segment geometries
- Improved load balancing
- Police cars, ambulances, fire trucks and hearses are now also controlled by the AI
- Bugfix: Vehicles did not always take the shortest path
- Bugfix: Vehicles disappeared after deleting/upgrading a road segment
- Bugfix: Fixed an error in path-finding cost calculation
- Bugfix: Outgoing roads were treated as ingoing roads when highway rules were activated

1.4.2, 16/01/2016
- Several major performance improvements (thanks to @sci302 for pointing out those issues)
- Improved the way traffic lights are saved/loaded
- Lane-wise traffic density is only measured if Advanced AI is activated
- Bugfix: AI did not consider speed limits/road types during path calculation (thanks to @bhanhart, @sa62039 for pointing out this problem)
- Connecting a city road to a highway road that does not supply enough lanes for merging leads to behavior people do not understand (see manual). Option added to disable highway rules.  
- Bugfix: Vehicles were stopping in front of green traffic lights
- Bugfix: Stop/Yield signs were not working properly (thanks to @GordonDry, @Glowstrontium for pointing out this problem)
- Bugfix: Cargo trucks were ignoring the "Heavy ban" policy, they should do now (thanks to @Scratch for pointing out this problem)

1.4.1, 15/01/2016
- Bugfix: Path-finding near junctions fixed

1.4.0, 15/01/2016
- Introducing Advanced Vehicle AI (disabled by default! Go to "Options" and enable it if you want to use it.)
- Bugfix: Traffic lights were popping up in the middle of roads
- Bugfix: Fixed the lane changer for left-hand traffic systems (thanks to @Phishie for pointing out this problem)
- Bugfix: Traffic lights on invalid nodes are not saved anymore

1.3.24, 13/01/2016
- Improved handling of priority signs
- Priority signs: After adding two main road signs the next offered sign is a yield sign
- Priority signs: Vehicles now should notice earlier that they can enter a junction
- Removed the legacy XML file save system
- Invalid (not created) lanes are not saved/loaded anymore
- Added a configuration option that allows vehicles to enter blocked junctions
- Bugfix: Some priority signs were not saved
- Bugfix: Priority signs on deleted segments are now deleted too
- Bugfix: Lane arrows on removed lanes are now removed too
- Bugfix: Adding a priority sign to a junction having more than one main sign creates a yield sign (thanks to @GordonDry for pointing out this problem)
- Bugfix: If reckless driving was set to "The Holy City (0 %)", vehicles blocked intersections with traffic light.
- Bugfix: Traffic light arrow modes were sometimes not correctly saved  

1.3.23, 09/01/2016
- Bugfix: Corrected an issue where toggled traffic lights would not be saved/loaded correctly (thanks to @Jeffrios and @AOD_War_2g for pointing out this problem)
- Option added to forget all toggled traffic lights

1.3.22, 08/01/2016
- Added an option allowing busses to ignore lane arrows
- Added an option to display nodes and segments

1.3.21, 06/01/2016
- New feature: Traffic Sensitivity Tuning
- UI improvements: When adding a new step to a timed traffic light the lights are inverted.
- Timed traffic light status symbols should now be less annoying
- Bugfix: Deletion of junctions that were members of a traffic light group is now handled correctly

1.3.20, 04/01/2016
- Bugfix: Timed traffic lights are not saved correctly after upgrading a road nearby
- UI improvements
- New feature: Reckless driving

1.3.19, 04/01/2016
- Timed traffic lights: Absolute minimum time changed to 1
- Timed traffic lights: Velocity of vehicles is being measured to detect traffic jams
- Improved traffic flow measurement
- Improved path finding: Cims may now choose their lanes more independently
- Bugfix: Upgrading a road resets the traffic light arrow mode

1.3.18, 03/01/2016
- Provided a fix for unconnected junctions caused by other mods
- Crosswalk feature removed. If you need to add/remove crosswalks please use the "Crossings" mod.
- UI improvements: You can now switch between activated timed traffic lights without clicking on the menu button again

1.3.17, 03/01/2016
- Bugfix: Timed traffic lights cannot be added again after removal, toggling traffic lights does not work (thanks to @Fabrice, @ChakyHH, @sensual.heathen for pointing out this problem)
- Bugfix: After using the "Manual traffic lights" option, toggling lights does not work (thanks to @Timso113 for pointing out this problem)

1.3.16, 03/01/2016
- Bugfix: Traffic light settings on roads of the Network Extensions mods are not saved (thanks to @Scarface, @martintech and @Sonic for pointing out this problem)
- Improved save data management

1.3.15, 02/01/2016
- Simulation accuracy (and thus performance) is now controllable through the game options dialog
- Bugfix: Vehicles on a priority road sometimes stop without an obvious reason

1.3.14, 01/01/2016
- Improved performance
- UI: Non-timed traffic lights are now automatically removed when adding priority signs to a junction
- Adjusted the adaptive traffic light decision formula (vehicle lengths are considered now)
- Traffic two road segments in front of a timed traffic light is being measured now  

1.3.13, 01/01/2016
- Bugfix: Lane arrows are not correctly translated into path finding decisions (thanks to @bvoice360 for pointing out this problem)
- Bugfix: Priority signs are sometimes undeletable (thank to @Blackwolf for pointing out this problem)
- Bugfix: Errors occur when other mods without namespace definitions are loaded (thanks to @Arch Angel for pointing out this problem)
- Connecting a new road segment to a junction that already has priority signs now allows modification of the new priority sign

1.3.12, 30/12/2015
- Bugfix: Priority signs are not editable (thanks to @ningcaohan for pointing out this problem)

1.3.11, 30/12/2015
- Road segments next to a timed traffic light may now be deleted/upgraded/added without leading to deletion of the light
- Priority signs and Timed traffic light state symbols are now visible as soon as the menu is opened

1.3.10, 29/12/2015
- Fixed an issue where timed traffic light groups were not deleted after deleting an adjacent segment

1.3.9, 29/12/2015
- Introduced information icons for timed traffic lights
- Mod is now compatible with "Improved AI" (Lane changer is deactivated if "Improved AI" is active)

1.3.8, 29/12/2015
- Articulated busses are now simulated correctly (thanks to @nieksen for pointing out this problem)
- UI improvements

1.3.7, 28/12/2015
- When setting up a new timed traffic light, yellow lights from the real-world state are not taken over
- When loading another save game via the escape menu, Traffic Manager does not crash
- When loading another save game via the escape menu, Traffic++ detection works as intended
- Lane arrows are saved correctly

1.3.6, 28/12/2015
- Bugfix: wrong flow value taken when comparing flowing vehicles
- Forced node rendering after modifying a crosswalk

1.3.5, 28/12/2015
- Fixed pedestrian traffic Lights (thanks to @Glowstrontium for pointing out this problem)
- Better fix for: Deleting a segment with a timed traffic light does not cause a NullReferenceException
- Adjusted the comparison between flowing (green light) and waiting (red light) traffic

1.3.4, 27/12/2015
- Better traffic jam handling

1.3.3, 27/12/2015
- (Temporary) hotfix: Deleting a segment with a timed traffic light does not cause a NullReferenceException
- If priority signs are located behind the camera they are not rendered anymore

1.3.2, 27/12/2015
- Priority signs are persistently visible when Traffic Manager is in "Add priority sign" mode
- Synchronized traffic light rendering: In-game Traffic lights display the correct color (Thanks to @Fabrice for pointing out this problem)
- Traffic lights switch between green, yellow and red. Not only between green and red.
- UI tool tips are more explanatory and are shown longer.

1.3.1, 26/12/2015
- Minimum time units may be zero now
- Timed traffic lights of deleted/modified junctions get properly disposed

1.3.0, 25/12/2015
- **Adaptive Timed Traffic Lights** (automatically adjusted based on traffic amount)

1.2.0 (iMarbot)
- Updated for 1.2.2-f2 game patch.


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2015 Svetlozar

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: README.md
================================================
# Traffic Manager: *President Edition* [![Discord](https://img.shields.io/discord/545065285862948894.svg)](https://discord.gg/faKUnST) [![Build status](https://ci.appveyor.com/api/projects/status/dehkvuxk8b3h66e7/branch/master?svg=true)](https://ci.appveyor.com/project/krzychu124/cities-skylines-traffic-manager-president-edition/branch/master)

A mod for **Cities: Skylines** that gives you more control over road and rail traffic in your city.

[Steam Workshop](https://steamcommunity.com/sharedfiles/filedetails/?id=1637663252) • [Installation](https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/wiki/Installation) • [User Guide](http://www.viathinksoft.de/tmpe/wiki) • [Issue Tracker](https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/issues) • [Report a Bug](https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/wiki/Report-a-Bug)

# Features

* Timed traffic lights
* Change lane arrows
* Edit lane connections
* Add priority signs
* Junction restrictions
    * Toggle u-turns
    * Allow "turn on red"
    * Enter blocked junctions
    * Toggle pedestrian crossings
* Vehicle restrictions
    * For roads and trains!
* Customise speed limits
* Toggle despawn
* Clear traffic, stuck cims, etc.

# Changelog
### [10.18](https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/compare/10.17...10.18), 29/03/2019
- Bugfix: Parking AI: Cars do not spawn at outside connections (#245)
- Bugfix: Trams perform turns on red (#248)
- Update: Service Radius Adjuster mod by Egi removed from incompatible mods list (#255)

See [Full Changelog](https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/blob/master/CHANGELOG.md) for details of earlier releases.

# Contributing

We welcome contributions from the community!

Contact us:

* [Issue tracker](https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/issues)
* [Discord (chat)](https://discord.gg/faKUnST)
* [Steam Workshop](https://steamcommunity.com/sharedfiles/filedetails/?id=1637663252)

# License

[MIT License](https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/blob/master/LICENSE) (open source)


================================================
FILE: TLM/.vs/config/applicationhost.config
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--

    IIS configuration sections.

    For schema documentation, see
    %IIS_BIN%\config\schema\IIS_schema.xml.
    
    Please make a backup of this file before making any changes to it.

    NOTE: The following environment variables are available to be used
          within this file and are understood by the IIS Express.

          %IIS_USER_HOME% - The IIS Express home directory for the user
          %IIS_SITES_HOME% - The default home directory for sites
          %IIS_BIN% - The location of the IIS Express binaries
          %SYSTEMDRIVE% - The drive letter of %IIS_BIN%

-->

<configuration>

    <!--

        The <configSections> section controls the registration of sections.
        Section is the basic unit of deployment, locking, searching and
        containment for configuration settings.
        
        Every section belongs to one section group.
        A section group is a container of logically-related sections.
        
        Sections cannot be nested.
        Section groups may be nested.
        
        <section
            name=""  [Required, Collection Key] [XML name of the section]
            allowDefinition="Everywhere" [MachineOnly|MachineToApplication|AppHostOnly|Everywhere] [Level where it can be set]
            overrideModeDefault="Allow"  [Allow|Deny] [Default delegation mode]
            allowLocation="true"  [true|false] [Allowed in location tags]
        />
        
        The recommended way to unlock sections is by using a location tag:
        <location path="Default Web Site" overrideMode="Allow">
            <system.webServer>
                <asp />
            </system.webServer>
        </location>

    -->
    <configSections>
        <sectionGroup name="system.applicationHost">
            <section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="configHistory" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="preloadProviders" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
        </sectionGroup>

        <sectionGroup name="system.webServer">
            <section name="asp" overrideModeDefault="Deny" />
            <section name="caching" overrideModeDefault="Allow" />
            <section name="cgi" overrideModeDefault="Deny" />
            <section name="defaultDocument" overrideModeDefault="Allow" />
            <section name="directoryBrowse" overrideModeDefault="Allow" />
            <section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="globalModules" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
            <section name="handlers" overrideModeDefault="Deny" />
            <section name="httpCompression" overrideModeDefault="Allow" />
            <section name="httpErrors" overrideModeDefault="Allow" />
            <section name="httpLogging" overrideModeDefault="Deny" />
            <section name="httpProtocol" overrideModeDefault="Allow" />
            <section name="httpRedirect" overrideModeDefault="Allow" />
            <section name="httpTracing" overrideModeDefault="Deny" />
            <section name="isapiFilters" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
            <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
            <section name="odbcLogging" overrideModeDefault="Deny" />
            <sectionGroup name="security">
                <section name="access" overrideModeDefault="Deny" />
                <section name="applicationDependencies" overrideModeDefault="Deny" />
                <sectionGroup name="authentication">
                    <section name="anonymousAuthentication" overrideModeDefault="Deny" />
                    <section name="basicAuthentication" overrideModeDefault="Deny" />
                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="digestAuthentication" overrideModeDefault="Deny" />
                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="windowsAuthentication" overrideModeDefault="Deny" />
                </sectionGroup>
                <section name="authorization" overrideModeDefault="Allow" />
                <section name="ipSecurity" overrideModeDefault="Deny" />
                <section name="dynamicIpSecurity" overrideModeDefault="Deny" />
                <section name="isapiCgiRestriction" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
                <section name="requestFiltering" overrideModeDefault="Allow" />
            </sectionGroup>
            <section name="serverRuntime" overrideModeDefault="Deny" />
            <section name="serverSideInclude" overrideModeDefault="Deny" />
            <section name="staticContent" overrideModeDefault="Allow" />
            <sectionGroup name="tracing">
                <section name="traceFailedRequests" overrideModeDefault="Allow" />
                <section name="traceProviderDefinitions" overrideModeDefault="Deny" />
            </sectionGroup>
            <section name="urlCompression" overrideModeDefault="Allow" />
            <section name="validation" overrideModeDefault="Allow" />
            <sectionGroup name="webdav">
                <section name="globalSettings" overrideModeDefault="Deny" />
                <section name="authoring" overrideModeDefault="Deny" />
                <section name="authoringRules" overrideModeDefault="Deny" />
            </sectionGroup>
            <sectionGroup name="rewrite">
                <section name="allowedServerVariables" overrideModeDefault="Deny" />
                <section name="rules" overrideModeDefault="Allow" />
                <section name="outboundRules" overrideModeDefault="Allow" />
                <section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
                <section name="providers" overrideModeDefault="Allow" />
                <section name="rewriteMaps" overrideModeDefault="Allow" />
            </sectionGroup>
            <section name="applicationInitialization" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
            <section name="webSocket" overrideModeDefault="Deny" />
        </sectionGroup>
    </configSections>

    <configProtectedData>
        <providers>
            <add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
            <add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAAKmFQvWHDEETRz8l2bjZlRxIkwcqTFaCUnCLljn3Q1OkesrhEO9YyLyx4bUhsj1/DyShAv7OAFFhXlrlomaornnk5PLeyO4lIXxaiT33yOFUUgxDx4GSaygkqghVV0tO5yQ/XguUBp2juMfZyztnsNa4pLcz7ZNZQ6p4yn9hxwNs=" />
            <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAA4WoiRJ8KHwzAG8AgejPxEOO4/2Vhkolbwo/8gZeNdUDSD36m55hWv4uC9tr/MlKdnwRLL0NhT50Gccyftqz5xTZ0dg5FtvQhTw/he1NwexTKbV+I4Zrd+sZUqHZTsr7JiEr6OHGXL70qoISW5G2m9U8wKT3caPiDPNj2aAaYPLo=" />
        </providers>
    </configProtectedData>

    <system.applicationHost>

        <applicationPools>
            <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
            <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
            <applicationPoolDefaults managedRuntimeLoader="v4.0" >
                <processModel/>
            </applicationPoolDefaults>
        </applicationPools>

        <!--

          The <listenerAdapters> section defines the protocols with which the
          Windows Process Activation Service (WAS) binds.

        -->
        <listenerAdapters>
            <add name="http" />
        </listenerAdapters>

        <sites>
            <site name="WebSite1" id="1" serverAutoStart="true">
                <application path="/">
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                </bindings>
            </site>
            <siteDefaults>
                <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
                <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
            </siteDefaults>
            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
            <virtualDirectoryDefaults allowSubDirConfig="true" />
        </sites>

        <webLimits />

    </system.applicationHost>

    <system.webServer>

        <serverRuntime />

        <asp scriptErrorSentToBrowser="true">
            <cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" />
            <limits />
        </asp>

        <caching enabled="true" enableKernelCache="true">
        </caching>

        <cgi />

        <defaultDocument enabled="true">
            <files>
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.htm" />
                <add value="index.html" />
                <add value="iisstart.htm" />
                <add value="default.aspx" />
            </files>
        </defaultDocument>

        <directoryBrowse enabled="false" />

        <fastCgi />

        <!--

          The <globalModules> section defines all native-code modules.
          To enable a module, specify it in the <modules> section.

        -->
        <globalModules>
            <add name="HttpLoggingModule" image="%IIS_BIN%\loghttp.dll" />
            <add name="UriCacheModule" image="%IIS_BIN%\cachuri.dll" />
<!--            <add name="FileCacheModule" image="%IIS_BIN%\cachfile.dll" />  -->
            <add name="TokenCacheModule" image="%IIS_BIN%\cachtokn.dll" />
<!--            <add name="HttpCacheModule" image="%IIS_BIN%\cachhttp.dll" /> -->
            <add name="DynamicCompressionModule" image="%IIS_BIN%\compdyn.dll" />
            <add name="StaticCompressionModule" image="%IIS_BIN%\compstat.dll" />
            <add name="DefaultDocumentModule" image="%IIS_BIN%\defdoc.dll" />
            <add name="DirectoryListingModule" image="%IIS_BIN%\dirlist.dll" />
            <add name="ProtocolSupportModule" image="%IIS_BIN%\protsup.dll" />
            <add name="HttpRedirectionModule" image="%IIS_BIN%\redirect.dll" />
            <add name="ServerSideIncludeModule" image="%IIS_BIN%\iis_ssi.dll" />
            <add name="StaticFileModule" image="%IIS_BIN%\static.dll" />
            <add name="AnonymousAuthenticationModule" image="%IIS_BIN%\authanon.dll" />
            <add name="CertificateMappingAuthenticationModule" image="%IIS_BIN%\authcert.dll" />
            <add name="UrlAuthorizationModule" image="%IIS_BIN%\urlauthz.dll" />
            <add name="BasicAuthenticationModule" image="%IIS_BIN%\authbas.dll" />
            <add name="WindowsAuthenticationModule" image="%IIS_BIN%\authsspi.dll" />
<!--            <add name="DigestAuthenticationModule" image="%IIS_BIN%\authmd5.dll" /> -->
            <add name="IISCertificateMappingAuthenticationModule" image="%IIS_BIN%\authmap.dll" />
            <add name="IpRestrictionModule" image="%IIS_BIN%\iprestr.dll" />
            <add name="DynamicIpRestrictionModule" image="%IIS_BIN%\diprestr.dll" />
            <add name="RequestFilteringModule" image="%IIS_BIN%\modrqflt.dll" />
            <add name="CustomLoggingModule" image="%IIS_BIN%\logcust.dll" />
            <add name="CustomErrorModule" image="%IIS_BIN%\custerr.dll" />
<!--            <add name="TracingModule" image="%IIS_BIN%\iisetw.dll" /> -->
            <add name="FailedRequestsTracingModule" image="%IIS_BIN%\iisfreb.dll" />
            <add name="RequestMonitorModule" image="%IIS_BIN%\iisreqs.dll" />
            <add name="IsapiModule" image="%IIS_BIN%\isapi.dll" />
            <add name="IsapiFilterModule" image="%IIS_BIN%\filter.dll" />
            <add name="CgiModule" image="%IIS_BIN%\cgi.dll" />
            <add name="FastCgiModule" image="%IIS_BIN%\iisfcgi.dll" />
<!--            <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" /> -->
            <add name="RewriteModule" image="%IIS_BIN%\rewrite.dll" />
            <add name="ConfigurationValidationModule" image="%IIS_BIN%\validcfg.dll" />
            <add name="WebSocketModule" image="%IIS_BIN%\iiswsock.dll" />
            <add name="WebMatrixSupportModule" image="%IIS_BIN%\webmatrixsup.dll" />
            <add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" />
            <add name="ManagedEngine64" image="%windir%\Microsoft.NET\Framework64\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness64" />
            <add name="ManagedEngineV4.0_32bit" image="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
            <add name="ManagedEngineV4.0_64bit" image="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />
            <add name="ApplicationInitializationModule" image="%IIS_BIN%\warmup.dll" />
        </globalModules>

        <httpCompression directory="%TEMP%\iisexpress\IIS Temporary Compressed Files">
            <scheme name="gzip" dll="%IIS_BIN%\gzip.dll" />
            <dynamicTypes>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="message/*" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
                <add mimeType="application/atom+xml" enabled="true" />
                <add mimeType="application/xaml+xml" enabled="true" />
                <add mimeType="*/*" enabled="false" />
            </dynamicTypes>
            <staticTypes>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="message/*" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
                <add mimeType="application/atom+xml" enabled="true" />
                <add mimeType="application/xaml+xml" enabled="true" />
                <add mimeType="*/*" enabled="false" />
            </staticTypes>
        </httpCompression>

        <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
            <error statusCode="401" prefixLanguageFilePath="%IIS_BIN%\custerr" path="401.htm" />
            <error statusCode="403" prefixLanguageFilePath="%IIS_BIN%\custerr" path="403.htm" />
            <error statusCode="404" prefixLanguageFilePath="%IIS_BIN%\custerr" path="404.htm" />
            <error statusCode="405" prefixLanguageFilePath="%IIS_BIN%\custerr" path="405.htm" />
            <error statusCode="406" prefixLanguageFilePath="%IIS_BIN%\custerr" path="406.htm" />
            <error statusCode="412" prefixLanguageFilePath="%IIS_BIN%\custerr" path="412.htm" />
            <error statusCode="500" prefixLanguageFilePath="%IIS_BIN%\custerr" path="500.htm" />
            <error statusCode="501" prefixLanguageFilePath="%IIS_BIN%\custerr" path="501.htm" />
            <error statusCode="502" prefixLanguageFilePath="%IIS_BIN%\custerr" path="502.htm" />
        </httpErrors>

        <httpLogging dontLog="false" />

        <httpProtocol>
            <customHeaders>
                <clear />
                <add name="X-Powered-By" value="ASP.NET" />
            </customHeaders>
            <redirectHeaders>
                <clear />
            </redirectHeaders>
        </httpProtocol>

        <httpRedirect enabled="false" />

        <httpTracing>
        </httpTracing>

        <isapiFilters>
            <filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" />
            <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />
            <filter name="ASP.Net_2.0_for_v1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />
            <filter name="ASP.Net_4.0_32bit" path="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv4.0" />
            <filter name="ASP.Net_4.0_64bit" path="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv4.0" />
        </isapiFilters>

        <odbcLogging />

        <security>

            <access sslFlags="None" />

            <applicationDependencies>
                <application name="Active Server Pages" groupId="ASP" />
            </applicationDependencies>

            <authentication>

                <anonymousAuthentication enabled="true" userName="" />

                <basicAuthentication enabled="false" />

                <clientCertificateMappingAuthentication enabled="false" />

                <digestAuthentication enabled="false" />

                <iisClientCertificateMappingAuthentication enabled="false">
                </iisClientCertificateMappingAuthentication>

                <windowsAuthentication enabled="false">
                    <providers>
                        <add value="Negotiate" />
                        <add value="NTLM" />
                    </providers>
                </windowsAuthentication>

            </authentication>

            <authorization>
                <add accessType="Allow" users="*" />
            </authorization>

            <ipSecurity allowUnlisted="true" />

            <isapiCgiRestriction notListedIsapisAllowed="true" notListedCgisAllowed="true">
                <add path="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
                <add path="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
                <add path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
                <add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
            </isapiCgiRestriction>

            <requestFiltering>
                <fileExtensions allowUnlisted="true" applyToWebDAV="true">
                    <add fileExtension=".asax" allowed="false" />
                    <add fileExtension=".ascx" allowed="false" />
                    <add fileExtension=".master" allowed="false" />
                    <add fileExtension=".skin" allowed="false" />
                    <add fileExtension=".browser" allowed="false" />
                    <add fileExtension=".sitemap" allowed="false" />
                    <add fileExtension=".config" allowed="false" />
                    <add fileExtension=".cs" allowed="false" />
                    <add fileExtension=".csproj" allowed="false" />
                    <add fileExtension=".vb" allowed="false" />
                    <add fileExtension=".vbproj" allowed="false" />
                    <add fileExtension=".webinfo" allowed="false" />
                    <add fileExtension=".licx" allowed="false" />
                    <add fileExtension=".resx" allowed="false" />
                    <add fileExtension=".resources" allowed="false" />
                    <add fileExtension=".mdb" allowed="false" />
                    <add fileExtension=".vjsproj" allowed="false" />
                    <add fileExtension=".java" allowed="false" />
                    <add fileExtension=".jsl" allowed="false" />
                    <add fileExtension=".ldb" allowed="false" />
                    <add fileExtension=".dsdgm" allowed="false" />
                    <add fileExtension=".ssdgm" allowed="false" />
                    <add fileExtension=".lsad" allowed="false" />
                    <add fileExtension=".ssmap" allowed="false" />
                    <add fileExtension=".cd" allowed="false" />
                    <add fileExtension=".dsprototype" allowed="false" />
                    <add fileExtension=".lsaprototype" allowed="false" />
                    <add fileExtension=".sdm" allowed="false" />
                    <add fileExtension=".sdmDocument" allowed="false" />
                    <add fileExtension=".mdf" allowed="false" />
                    <add fileExtension=".ldf" allowed="false" />
                    <add fileExtension=".ad" allowed="false" />
                    <add fileExtension=".dd" allowed="false" />
                    <add fileExtension=".ldd" allowed="false" />
                    <add fileExtension=".sd" allowed="false" />
                    <add fileExtension=".adprototype" allowed="false" />
                    <add fileExtension=".lddprototype" allowed="false" />
                    <add fileExtension=".exclude" allowed="false" />
                    <add fileExtension=".refresh" allowed="false" />
                    <add fileExtension=".compiled" allowed="false" />
                    <add fileExtension=".msgx" allowed="false" />
                    <add fileExtension=".vsdisco" allowed="false" />
                    <add fileExtension=".rules" allowed="false" />
                </fileExtensions>
                <verbs allowUnlisted="true" applyToWebDAV="true" />
                <hiddenSegments applyToWebDAV="true">
                    <add segment="web.config" />
                    <add segment="bin" />
                    <add segment="App_code" />
                    <add segment="App_GlobalResources" />
                    <add segment="App_LocalResources" />
                    <add segment="App_WebReferences" />
                    <add segment="App_Data" />
                    <add segment="App_Browsers" />
                </hiddenSegments>
            </requestFiltering>

        </security>

        <serverSideInclude ssiExecDisable="false" />

        <staticContent lockAttributes="isDocFooterFileName">
            <mimeMap fileExtension=".323" mimeType="text/h323" />
            <mimeMap fileExtension=".3g2" mimeType="video/3gpp2" />
            <mimeMap fileExtension=".3gp2" mimeType="video/3gpp2" />
            <mimeMap fileExtension=".3gp" mimeType="video/3gpp" />
            <mimeMap fileExtension=".3gpp" mimeType="video/3gpp" />
            <mimeMap fileExtension=".aac" mimeType="audio/aac" />
            <mimeMap fileExtension=".aaf" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".aca" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".accdb" mimeType="application/msaccess" />
            <mimeMap fileExtension=".accde" mimeType="application/msaccess" />
            <mimeMap fileExtension=".accdt" mimeType="application/msaccess" />
            <mimeMap fileExtension=".acx" mimeType="application/internet-property-stream" />
            <mimeMap fileExtension=".adt" mimeType="audio/vnd.dlna.adts" />
            <mimeMap fileExtension=".adts" mimeType="audio/vnd.dlna.adts" />
            <mimeMap fileExtension=".afm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ai" mimeType="application/postscript" />
            <mimeMap fileExtension=".aif" mimeType="audio/x-aiff" />
            <mimeMap fileExtension=".aifc" mimeType="audio/aiff" />
            <mimeMap fileExtension=".aiff" mimeType="audio/aiff" />
            <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" />
            <mimeMap fileExtension=".application" mimeType="application/x-ms-application" />
            <mimeMap fileExtension=".art" mimeType="image/x-jg" />
            <mimeMap fileExtension=".asd" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".asf" mimeType="video/x-ms-asf" />
            <mimeMap fileExtension=".asi" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".asm" mimeType="text/plain" />
            <mimeMap fileExtension=".asr" mimeType="video/x-ms-asf" />
            <mimeMap fileExtension=".asx" mimeType="video/x-ms-asf" />
            <mimeMap fileExtension=".atom" mimeType="application/atom+xml" />
            <mimeMap fileExtension=".au" mimeType="audio/basic" />
            <mimeMap fileExtension=".avi" mimeType="video/msvideo" />
            <mimeMap fileExtension=".axs" mimeType="application/olescript" />
            <mimeMap fileExtension=".bas" mimeType="text/plain" />
            <mimeMap fileExtension=".bcpio" mimeType="application/x-bcpio" />
            <mimeMap fileExtension=".bin" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".bmp" mimeType="image/bmp" />
            <mimeMap fileExtension=".c" mimeType="text/plain" />
            <mimeMap fileExtension=".cab" mimeType="application/vnd.ms-cab-compressed" />
            <mimeMap fileExtension=".calx" mimeType="application/vnd.ms-office.calx" />
            <mimeMap fileExtension=".cat" mimeType="application/vnd.ms-pki.seccat" />
            <mimeMap fileExtension=".cdf" mimeType="application/x-cdf" />
            <mimeMap fileExtension=".chm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".class" mimeType="application/x-java-applet" />
            <mimeMap fileExtension=".clp" mimeType="application/x-msclip" />
            <mimeMap fileExtension=".cmx" mimeType="image/x-cmx" />
            <mimeMap fileExtension=".cnf" mimeType="text/plain" />
            <mimeMap fileExtension=".cod" mimeType="image/cis-cod" />
            <mimeMap fileExtension=".cpio" mimeType="application/x-cpio" />
            <mimeMap fileExtension=".cpp" mimeType="text/plain" />
            <mimeMap fileExtension=".crd" mimeType="application/x-mscardfile" />
            <mimeMap fileExtension=".crl" mimeType="application/pkix-crl" />
            <mimeMap fileExtension=".crt" mimeType="application/x-x509-ca-cert" />
            <mimeMap fileExtension=".csh" mimeType="application/x-csh" />
            <mimeMap fileExtension=".css" mimeType="text/css" />
            <mimeMap fileExtension=".csv" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".cur" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".dcr" mimeType="application/x-director" />
            <mimeMap fileExtension=".deploy" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".der" mimeType="application/x-x509-ca-cert" />
            <mimeMap fileExtension=".dib" mimeType="image/bmp" />
            <mimeMap fileExtension=".dir" mimeType="application/x-director" />
            <mimeMap fileExtension=".disco" mimeType="text/xml" />
            <mimeMap fileExtension=".dll" mimeType="application/x-msdownload" />
            <mimeMap fileExtension=".dll.config" mimeType="text/xml" />
            <mimeMap fileExtension=".dlm" mimeType="text/dlm" />
            <mimeMap fileExtension=".doc" mimeType="application/msword" />
            <mimeMap fileExtension=".docm" mimeType="application/vnd.ms-word.document.macroEnabled.12" />
            <mimeMap fileExtension=".docx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
            <mimeMap fileExtension=".dot" mimeType="application/msword" />
            <mimeMap fileExtension=".dotm" mimeType="application/vnd.ms-word.template.macroEnabled.12" />
            <mimeMap fileExtension=".dotx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.template" />
            <mimeMap fileExtension=".dsp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".dtd" mimeType="text/xml" />
            <mimeMap fileExtension=".dvi" mimeType="application/x-dvi" />
            <mimeMap fileExtension=".dvr-ms" mimeType="video/x-ms-dvr" />
            <mimeMap fileExtension=".dwf" mimeType="drawing/x-dwf" />
            <mimeMap fileExtension=".dwp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".dxr" mimeType="application/x-director" />
            <mimeMap fileExtension=".eml" mimeType="message/rfc822" />
            <mimeMap fileExtension=".emz" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
            <mimeMap fileExtension=".eps" mimeType="application/postscript" />
            <mimeMap fileExtension=".etx" mimeType="text/x-setext" />
            <mimeMap fileExtension=".evy" mimeType="application/envoy" />
            <mimeMap fileExtension=".exe" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".exe.config" mimeType="text/xml" />
            <mimeMap fileExtension=".fdf" mimeType="application/vnd.fdf" />
            <mimeMap fileExtension=".fif" mimeType="application/fractals" />
            <mimeMap fileExtension=".fla" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".flr" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".flv" mimeType="video/x-flv" />
            <mimeMap fileExtension=".gif" mimeType="image/gif" />
            <mimeMap fileExtension=".gtar" mimeType="application/x-gtar" />
            <mimeMap fileExtension=".gz" mimeType="application/x-gzip" />
            <mimeMap fileExtension=".h" mimeType="text/plain" />
            <mimeMap fileExtension=".hdf" mimeType="application/x-hdf" />
            <mimeMap fileExtension=".hdml" mimeType="text/x-hdml" />
            <mimeMap fileExtension=".hhc" mimeType="application/x-oleobject" />
            <mimeMap fileExtension=".hhk" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".hhp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".hlp" mimeType="application/winhlp" />
            <mimeMap fileExtension=".hqx" mimeType="application/mac-binhex40" />
            <mimeMap fileExtension=".hta" mimeType="application/hta" />
            <mimeMap fileExtension=".htc" mimeType="text/x-component" />
            <mimeMap fileExtension=".htm" mimeType="text/html" />
            <mimeMap fileExtension=".html" mimeType="text/html" />
            <mimeMap fileExtension=".htt" mimeType="text/webviewhtml" />
            <mimeMap fileExtension=".hxt" mimeType="text/html" />
            <mimeMap fileExtension=".ico" mimeType="image/x-icon" />
            <mimeMap fileExtension=".ics" mimeType="text/calendar" />
            <mimeMap fileExtension=".ief" mimeType="image/ief" />
            <mimeMap fileExtension=".iii" mimeType="application/x-iphone" />
            <mimeMap fileExtension=".inf" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ins" mimeType="application/x-internet-signup" />
            <mimeMap fileExtension=".isp" mimeType="application/x-internet-signup" />
            <mimeMap fileExtension=".IVF" mimeType="video/x-ivf" />
            <mimeMap fileExtension=".jar" mimeType="application/java-archive" />
            <mimeMap fileExtension=".java" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".jck" mimeType="application/liquidmotion" />
            <mimeMap fileExtension=".jcz" mimeType="application/liquidmotion" />
            <mimeMap fileExtension=".jfif" mimeType="image/pjpeg" />
            <mimeMap fileExtension=".jpb" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".jpe" mimeType="image/jpeg" />
            <mimeMap fileExtension=".jpeg" mimeType="image/jpeg" />
            <mimeMap fileExtension=".jpg" mimeType="image/jpeg" />
            <mimeMap fileExtension=".js" mimeType="application/javascript" />
            <mimeMap fileExtension=".json" mimeType="application/json" />
            <mimeMap fileExtension=".jsonld" mimeType="application/ld+json" />
            <mimeMap fileExtension=".jsx" mimeType="text/jscript" />
            <mimeMap fileExtension=".latex" mimeType="application/x-latex" />
            <mimeMap fileExtension=".less" mimeType="text/css" />
            <mimeMap fileExtension=".lit" mimeType="application/x-ms-reader" />
            <mimeMap fileExtension=".lpk" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".lsf" mimeType="video/x-la-asf" />
            <mimeMap fileExtension=".lsx" mimeType="video/x-la-asf" />
            <mimeMap fileExtension=".lzh" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".m13" mimeType="application/x-msmediaview" />
            <mimeMap fileExtension=".m14" mimeType="application/x-msmediaview" />
            <mimeMap fileExtension=".m1v" mimeType="video/mpeg" />
            <mimeMap fileExtension=".m2ts" mimeType="video/vnd.dlna.mpeg-tts" />
            <mimeMap fileExtension=".m3u" mimeType="audio/x-mpegurl" />
            <mimeMap fileExtension=".m4a" mimeType="audio/mp4" />
            <mimeMap fileExtension=".m4v" mimeType="video/mp4" />
            <mimeMap fileExtension=".man" mimeType="application/x-troff-man" />
            <mimeMap fileExtension=".manifest" mimeType="application/x-ms-manifest" />
            <mimeMap fileExtension=".map" mimeType="text/plain" />
            <mimeMap fileExtension=".mdb" mimeType="application/x-msaccess" />
            <mimeMap fileExtension=".mdp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".me" mimeType="application/x-troff-me" />
            <mimeMap fileExtension=".mht" mimeType="message/rfc822" />
            <mimeMap fileExtension=".mhtml" mimeType="message/rfc822" />
            <mimeMap fileExtension=".mid" mimeType="audio/mid" />
            <mimeMap fileExtension=".midi" mimeType="audio/mid" />
            <mimeMap fileExtension=".mix" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".mmf" mimeType="application/x-smaf" />
            <mimeMap fileExtension=".mno" mimeType="text/xml" />
            <mimeMap fileExtension=".mny" mimeType="application/x-msmoney" />
            <mimeMap fileExtension=".mov" mimeType="video/quicktime" />
            <mimeMap fileExtension=".movie" mimeType="video/x-sgi-movie" />
            <mimeMap fileExtension=".mp2" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mp3" mimeType="audio/mpeg" />
            <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
            <mimeMap fileExtension=".mp4v" mimeType="video/mp4" />
            <mimeMap fileExtension=".mpa" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mpe" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mpeg" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mpg" mimeType="video/mpeg" />
            <mimeMap fileExtension=".mpp" mimeType="application/vnd.ms-project" />
            <mimeMap fileExtension=".mpv2" mimeType="video/mpeg" />
            <mimeMap fileExtension=".ms" mimeType="application/x-troff-ms" />
            <mimeMap fileExtension=".msi" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".mso" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".mvb" mimeType="application/x-msmediaview" />
            <mimeMap fileExtension=".mvc" mimeType="application/x-miva-compiled" />
            <mimeMap fileExtension=".nc" mimeType="application/x-netcdf" />
            <mimeMap fileExtension=".nsc" mimeType="video/x-ms-asf" />
            <mimeMap fileExtension=".nws" mimeType="message/rfc822" />
            <mimeMap fileExtension=".ocx" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".oda" mimeType="application/oda" />
            <mimeMap fileExtension=".odc" mimeType="text/x-ms-odc" />
            <mimeMap fileExtension=".ods" mimeType="application/oleobject" />
            <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
            <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
            <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
            <mimeMap fileExtension=".one" mimeType="application/onenote" />
            <mimeMap fileExtension=".onea" mimeType="application/onenote" />
            <mimeMap fileExtension=".onetoc" mimeType="application/onenote" />
            <mimeMap fileExtension=".onetoc2" mimeType="application/onenote" />
            <mimeMap fileExtension=".onetmp" mimeType="application/onenote" />
            <mimeMap fileExtension=".onepkg" mimeType="application/onenote" />
            <mimeMap fileExtension=".osdx" mimeType="application/opensearchdescription+xml" />
            <mimeMap fileExtension=".otf" mimeType="font/otf" />
            <mimeMap fileExtension=".p10" mimeType="application/pkcs10" />
            <mimeMap fileExtension=".p12" mimeType="application/x-pkcs12" />
            <mimeMap fileExtension=".p7b" mimeType="application/x-pkcs7-certificates" />
            <mimeMap fileExtension=".p7c" mimeType="application/pkcs7-mime" />
            <mimeMap fileExtension=".p7m" mimeType="application/pkcs7-mime" />
            <mimeMap fileExtension=".p7r" mimeType="application/x-pkcs7-certreqresp" />
            <mimeMap fileExtension=".p7s" mimeType="application/pkcs7-signature" />
            <mimeMap fileExtension=".pbm" mimeType="image/x-portable-bitmap" />
            <mimeMap fileExtension=".pcx" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pcz" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pdf" mimeType="application/pdf" />
            <mimeMap fileExtension=".pfb" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pfm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pfx" mimeType="application/x-pkcs12" />
            <mimeMap fileExtension=".pgm" mimeType="image/x-portable-graymap" />
            <mimeMap fileExtension=".pko" mimeType="application/vnd.ms-pki.pko" />
            <mimeMap fileExtension=".pma" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".pmc" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".pml" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".pmr" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".pmw" mimeType="application/x-perfmon" />
            <mimeMap fileExtension=".png" mimeType="image/png" />
            <mimeMap fileExtension=".pnm" mimeType="image/x-portable-anymap" />
            <mimeMap fileExtension=".pnz" mimeType="image/png" />
            <mimeMap fileExtension=".pot" mimeType="application/vnd.ms-powerpoint" />
            <mimeMap fileExtension=".potm" mimeType="application/vnd.ms-powerpoint.template.macroEnabled.12" />
            <mimeMap fileExtension=".potx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.template" />
            <mimeMap fileExtension=".ppam" mimeType="application/vnd.ms-powerpoint.addin.macroEnabled.12" />
            <mimeMap fileExtension=".ppm" mimeType="image/x-portable-pixmap" />
            <mimeMap fileExtension=".pps" mimeType="application/vnd.ms-powerpoint" />
            <mimeMap fileExtension=".ppsm" mimeType="application/vnd.ms-powerpoint.slideshow.macroEnabled.12" />
            <mimeMap fileExtension=".ppsx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slideshow" />
            <mimeMap fileExtension=".ppt" mimeType="application/vnd.ms-powerpoint" />
            <mimeMap fileExtension=".pptm" mimeType="application/vnd.ms-powerpoint.presentation.macroEnabled.12" />
            <mimeMap fileExtension=".pptx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
            <mimeMap fileExtension=".prf" mimeType="application/pics-rules" />
            <mimeMap fileExtension=".prm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".prx" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ps" mimeType="application/postscript" />
            <mimeMap fileExtension=".psd" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".psm" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".psp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".pub" mimeType="application/x-mspublisher" />
            <mimeMap fileExtension=".qt" mimeType="video/quicktime" />
            <mimeMap fileExtension=".qtl" mimeType="application/x-quicktimeplayer" />
            <mimeMap fileExtension=".qxd" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ra" mimeType="audio/x-pn-realaudio" />
            <mimeMap fileExtension=".ram" mimeType="audio/x-pn-realaudio" />
            <mimeMap fileExtension=".rar" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".ras" mimeType="image/x-cmu-raster" />
            <mimeMap fileExtension=".rf" mimeType="image/vnd.rn-realflash" />
            <mimeMap fileExtension=".rgb" mimeType="image/x-rgb" />
            <mimeMap fileExtension=".rm" mimeType="application/vnd.rn-realmedia" />
            <mimeMap fileExtension=".rmi" mimeType="audio/mid" />
            <mimeMap fileExtension=".roff" mimeType="application/x-troff" />
            <mimeMap fileExtension=".rpm" mimeType="audio/x-pn-realaudio-plugin" />
            <mimeMap fileExtension=".rtf" mimeType="application/rtf" />
            <mimeMap fileExtension=".rtx" mimeType="text/richtext" />
            <mimeMap fileExtension=".scd" mimeType="application/x-msschedule" />
            <mimeMap fileExtension=".sct" mimeType="text/scriptlet" />
            <mimeMap fileExtension=".sea" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".setpay" mimeType="application/set-payment-initiation" />
            <mimeMap fileExtension=".setreg" mimeType="application/set-registration-initiation" />
            <mimeMap fileExtension=".sgml" mimeType="text/sgml" />
            <mimeMap fileExtension=".sh" mimeType="application/x-sh" />
            <mimeMap fileExtension=".shar" mimeType="application/x-shar" />
            <mimeMap fileExtension=".sit" mimeType="application/x-stuffit" />
            <mimeMap fileExtension=".sldm" mimeType="application/vnd.ms-powerpoint.slide.macroEnabled.12" />
            <mimeMap fileExtension=".sldx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slide" />
            <mimeMap fileExtension=".smd" mimeType="audio/x-smd" />
            <mimeMap fileExtension=".smi" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".smx" mimeType="audio/x-smd" />
            <mimeMap fileExtension=".smz" mimeType="audio/x-smd" />
            <mimeMap fileExtension=".snd" mimeType="audio/basic" />
            <mimeMap fileExtension=".snp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".spc" mimeType="application/x-pkcs7-certificates" />
            <mimeMap fileExtension=".spl" mimeType="application/futuresplash" />
            <mimeMap fileExtension=".spx" mimeType="audio/ogg" />
            <mimeMap fileExtension=".src" mimeType="application/x-wais-source" />
            <mimeMap fileExtension=".ssm" mimeType="application/streamingmedia" />
            <mimeMap fileExtension=".sst" mimeType="application/vnd.ms-pki.certstore" />
            <mimeMap fileExtension=".stl" mimeType="application/vnd.ms-pki.stl" />
            <mimeMap fileExtension=".sv4cpio" mimeType="application/x-sv4cpio" />
            <mimeMap fileExtension=".sv4crc" mimeType="application/x-sv4crc" />
            <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
            <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" />
            <mimeMap fileExtension=".swf" mimeType="application/x-shockwave-flash" />
            <mimeMap fileExtension=".t" mimeType="application/x-troff" />
            <mimeMap fileExtension=".tar" mimeType="application/x-tar" />
            <mimeMap fileExtension=".tcl" mimeType="application/x-tcl" />
            <mimeMap fileExtension=".tex" mimeType="application/x-tex" />
            <mimeMap fileExtension=".texi" mimeType="application/x-texinfo" />
            <mimeMap fileExtension=".texinfo" mimeType="application/x-texinfo" />
            <mimeMap fileExtension=".tgz" mimeType="application/x-compressed" />
            <mimeMap fileExtension=".thmx" mimeType="application/vnd.ms-officetheme" />
            <mimeMap fileExtension=".thn" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".tif" mimeType="image/tiff" />
            <mimeMap fileExtension=".tiff" mimeType="image/tiff" />
            <mimeMap fileExtension=".toc" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".tr" mimeType="application/x-troff" />
            <mimeMap fileExtension=".trm" mimeType="application/x-msterminal" />
            <mimeMap fileExtension=".ts" mimeType="video/vnd.dlna.mpeg-tts" />
            <mimeMap fileExtension=".tsv" mimeType="text/tab-separated-values" />
            <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".tts" mimeType="video/vnd.dlna.mpeg-tts" />
            <mimeMap fileExtension=".txt" mimeType="text/plain" />
            <mimeMap fileExtension=".u32" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".uls" mimeType="text/iuls" />
            <mimeMap fileExtension=".ustar" mimeType="application/x-ustar" />
            <mimeMap fileExtension=".vbs" mimeType="text/vbscript" />
            <mimeMap fileExtension=".vcf" mimeType="text/x-vcard" />
            <mimeMap fileExtension=".vcs" mimeType="text/plain" />
            <mimeMap fileExtension=".vdx" mimeType="application/vnd.ms-visio.viewer" />
            <mimeMap fileExtension=".vml" mimeType="text/xml" />
            <mimeMap fileExtension=".vsd" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vss" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vst" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vsto" mimeType="application/x-ms-vsto" />
            <mimeMap fileExtension=".vsw" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vsx" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".vtx" mimeType="application/vnd.visio" />
            <mimeMap fileExtension=".wav" mimeType="audio/wav" />
            <mimeMap fileExtension=".wax" mimeType="audio/x-ms-wax" />
            <mimeMap fileExtension=".wbmp" mimeType="image/vnd.wap.wbmp" />
            <mimeMap fileExtension=".wcm" mimeType="application/vnd.ms-works" />
            <mimeMap fileExtension=".wdb" mimeType="application/vnd.ms-works" />
            <mimeMap fileExtension=".webm" mimeType="video/webm" />
            <mimeMap fileExtension=".wks" mimeType="application/vnd.ms-works" />
            <mimeMap fileExtension=".wm" mimeType="video/x-ms-wm" />
            <mimeMap fileExtension=".wma" mimeType="audio/x-ms-wma" />
            <mimeMap fileExtension=".wmd" mimeType="application/x-ms-wmd" />
            <mimeMap fileExtension=".wmf" mimeType="application/x-msmetafile" />
            <mimeMap fileExtension=".wml" mimeType="text/vnd.wap.wml" />
            <mimeMap fileExtension=".wmlc" mimeType="application/vnd.wap.wmlc" />
            <mimeMap fileExtension=".wmls" mimeType="text/vnd.wap.wmlscript" />
            <mimeMap fileExtension=".wmlsc" mimeType="application/vnd.wap.wmlscriptc" />
            <mimeMap fileExtension=".wmp" mimeType="video/x-ms-wmp" />
            <mimeMap fileExtension=".wmv" mimeType="video/x-ms-wmv" />
            <mimeMap fileExtension=".wmx" mimeType="video/x-ms-wmx" />
            <mimeMap fileExtension=".wmz" mimeType="application/x-ms-wmz" />
            <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
            <mimeMap fileExtension=".wps" mimeType="application/vnd.ms-works" />
            <mimeMap fileExtension=".wri" mimeType="application/x-mswrite" />
            <mimeMap fileExtension=".wrl" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".wrz" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".wsdl" mimeType="text/xml" />
            <mimeMap fileExtension=".wtv" mimeType="video/x-ms-wtv" />
            <mimeMap fileExtension=".wvx" mimeType="video/x-ms-wvx" />
            <mimeMap fileExtension=".x" mimeType="application/directx" />
            <mimeMap fileExtension=".xaf" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" />
            <mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" />
            <mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" />
            <mimeMap fileExtension=".xbm" mimeType="image/x-xbitmap" />
            <mimeMap fileExtension=".xdr" mimeType="text/plain" />
            <mimeMap fileExtension=".xht" mimeType="application/xhtml+xml" />
            <mimeMap fileExtension=".xhtml" mimeType="application/xhtml+xml" />
            <mimeMap fileExtension=".xla" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xlam" mimeType="application/vnd.ms-excel.addin.macroEnabled.12" />
            <mimeMap fileExtension=".xlc" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xlm" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xls" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xlsb" mimeType="application/vnd.ms-excel.sheet.binary.macroEnabled.12" />
            <mimeMap fileExtension=".xlsm" mimeType="application/vnd.ms-excel.sheet.macroEnabled.12" />
            <mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
            <mimeMap fileExtension=".xlt" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xltm" mimeType="application/vnd.ms-excel.template.macroEnabled.12" />
            <mimeMap fileExtension=".xltx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.template" />
            <mimeMap fileExtension=".xlw" mimeType="application/vnd.ms-excel" />
            <mimeMap fileExtension=".xml" mimeType="text/xml" />
            <mimeMap fileExtension=".xof" mimeType="x-world/x-vrml" />
            <mimeMap fileExtension=".xpm" mimeType="image/x-xpixmap" />
            <mimeMap fileExtension=".xps" mimeType="application/vnd.ms-xpsdocument" />
            <mimeMap fileExtension=".xsd" mimeType="text/xml" />
            <mimeMap fileExtension=".xsf" mimeType="text/xml" />
            <mimeMap fileExtension=".xsl" mimeType="text/xml" />
            <mimeMap fileExtension=".xslt" mimeType="text/xml" />
            <mimeMap fileExtension=".xsn" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".xtp" mimeType="application/octet-stream" />
            <mimeMap fileExtension=".xwd" mimeType="image/x-xwindowdump" />
            <mimeMap fileExtension=".z" mimeType="application/x-compress" />
            <mimeMap fileExtension=".zip" mimeType="application/x-zip-compressed" />
        </staticContent>

        <tracing>

             <traceProviderDefinitions>
                <add name="WWW Server" guid="{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}">
                    <areas>
                        <clear />
                        <add name="Authentication" value="2" />
                        <add name="Security" value="4" />
                        <add name="Filter" value="8" />
                        <add name="StaticFile" value="16" />
                        <add name="CGI" value="32" />
                        <add name="Compression" value="64" />
                        <add name="Cache" value="128" />
                        <add name="RequestNotifications" value="256" />
                        <add name="Module" value="512" />
                        <add name="Rewrite" value="1024" />
                        <add name="FastCGI" value="4096" />
                        <add name="WebSocket" value="16384" />
                    </areas>
                </add>
                <add name="ASP" guid="{06b94d9a-b15e-456e-a4ef-37c984a2cb4b}">
                    <areas>
                        <clear />
                    </areas>
                </add>
                <add name="ISAPI Extension" guid="{a1c2040e-8840-4c31-ba11-9871031a19ea}">
                    <areas>
                        <clear />
                    </areas>
                </add>
                <add name="ASPNET" guid="{AFF081FE-0247-4275-9C4E-021F3DC1DA35}">
                    <areas>
                        <add name="Infrastructure" value="1" />
                        <add name="Module" value="2" />
                        <add name="Page" value="4" />
                        <add name="AppServices" value="8" />
                    </areas>
                </add>
            </traceProviderDefinitions>

            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="ASP" verbosity="Verbose" />
                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                        <add provider="ISAPI Extension" verbosity="Verbose" />
                        <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions statusCodes="200-999" />
                </add>
            </traceFailedRequests>

        </tracing>

        <urlCompression />

        <validation />
        <webdav>
            <globalSettings>
                <propertyStores>
                    <add name="webdav_simple_prop" image="%IIS_BIN%\webdav_simple_prop.dll" image32="%IIS_BIN%\webdav_simple_prop.dll" />
                </propertyStores>
                <lockStores>
                    <add name="webdav_simple_lock" image="%IIS_BIN%\webdav_simple_lock.dll" image32="%IIS_BIN%\webdav_simple_lock.dll" />
                </lockStores>

            </globalSettings>
            <authoring>
                <locks enabled="true" lockStore="webdav_simple_lock" />
            </authoring>
            <authoringRules />
        </webdav>
        <webSocket />
        <applicationInitialization />

    </system.webServer>
    <location path="" overrideMode="Allow">
        <system.webServer>
            <modules>
                <add name="IsapiFilterModule" lockItem="true" />
                <add name="BasicAuthenticationModule" lockItem="true" />
                <add name="IsapiModule" lockItem="true" />
                <add name="HttpLoggingModule" lockItem="true" />
                <!--
                <add name="HttpCacheModule" lockItem="true" />
-->
                <add name="DynamicCompressionModule" lockItem="true" />
                <add name="StaticCompressionModule" lockItem="true" />
                <add name="DefaultDocumentModule" lockItem="true" />
                <add name="DirectoryListingModule" lockItem="true" />

                <add name="ProtocolSupportModule" lockItem="true" />
                <add name="HttpRedirectionModule" lockItem="true" />
                <add name="ServerSideIncludeModule" lockItem="true" />
                <add name="StaticFileModule" lockItem="true" />
                <add name="AnonymousAuthenticationModule" lockItem="true" />
                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
                <add name="UrlAuthorizationModule" lockItem="true" />
                <add name="WindowsAuthenticationModule" lockItem="true" />
                <!--
                <add name="DigestAuthenticationModule" lockItem="true" />
-->
                <add name="IISCertificateMappingAuthenticationModule" lockItem="true" />
                <add name="WebMatrixSupportModule" lockItem="true" />
                <add name="IpRestrictionModule" lockItem="true" />
                <add name="DynamicIpRestrictionModule" lockItem="true" />
                <add name="RequestFilteringModule" lockItem="true" />
                <add name="CustomLoggingModule" lockItem="true" />
                <add name="CustomErrorModule" lockItem="true" />
                <add name="FailedRequestsTracingModule" lockItem="true" />
                <add name="CgiModule" lockItem="true" />
                <add name="FastCgiModule" lockItem="true" />
                <!--                <add name="WebDAVModule" /> -->
                <add name="RewriteModule" />
                <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" preCondition="managedHandler" />
                <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="managedHandler" />
                <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="managedHandler" />
                <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
                <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
                <add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />
                <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" />
                <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" preCondition="managedHandler" />
                <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" preCondition="managedHandler" />
                <add name="Profile" type="System.Web.Profile.ProfileModule" preCondition="managedHandler" />
                <add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" preCondition="managedHandler" />
                <add name="ConfigurationValidationModule" lockItem="true" />
                <add name="WebSocketModule" lockItem="true" />
                <add name="ServiceModel-4.0" type="System.ServiceModel.Activation.ServiceHttpModule,System.ServiceModel.Activation,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
                <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="managedHandler,runtimeVersionv4.0" />
                <add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
                <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler,runtimeVersionv2.0" />
                <add name="ApplicationInitializationModule" lockItem="true" />
            </modules>
            <handlers accessPolicy="Read, Script">
                <!--                <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> -->
                <add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
                <add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
                <add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
                <add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
                <add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="svc-ISAPI-2.0" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
                <add name="xoml-Integrated" path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="xoml-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
                <add name="rules-Integrated" path="*.rules" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="rules-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
                <add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
                <add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
                <add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
                <add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
                <add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="ScriptResourceIntegrated-4.0" path="*ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
                <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
                <add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
                <add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
                <add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
                <add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
                <add name="svc-ISAPI-2.0-64" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
                <add name="AXD-ISAPI-2.0-64" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="WebServiceHandlerFactory-ISAPI-2.0-64" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
                <add name="rules-64-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
                <add name="xoml-64-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
                <add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
                <add name="SSINC-stm" path="*.stm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
                <add name="SSINC-shtm" path="*.shtm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
                <add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
                <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
                <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
                <add name="ExtensionlessUrl-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
                <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
                <add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
                <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
            </handlers>
        </system.webServer>
    </location>
</configuration>


================================================
FILE: TLM/ATTACHING_DEBUGGER.md
================================================
# Attaching Debugger to Cities.exe

Use this guide to attach a debugger to Cities: Skylines.

> **Notes:**
> * Attaching a debugger can significantly reduce frame rate and cause lots of lag.
> * This has only been tested on Windows.

### Setup

> You only need to follow these steps once to set up your debug environment.

First, let's backup your current ```mono.dll```:

* Navigate to ```<%STEAM%>\steamapps\common\Cities_Skylines\Cities_Data\Mono\```
* Make a backup of ```mono.dll``` (you could just rename it ```mono-backup.dll```)

> The location of ```<%STEAM%>``` is usually ```C:\Program Files (x86)\Steam```

Next, download the following files from [```https://github.com/0xd4d/dnSpy/releases```](https://github.com/0xd4d/dnSpy/releases):

* ```dnSpy-net472.zip```
* ```Unity-debugging-5.x.zip```

Now we apply a new ```mono.dll``` and test the game is working:

* Make sure the game is **not** running
* Open ```Unity-debugging-5.x.zip```:
    * Navigate to ```Unity-debugging\unity-5.6.6\win64\``` (note: **```unity-5.6.6```**)
    * Copy ```mono.dll``` to ```<%STEAM%>\steamapps\common\Cities_Skylines\Cities_Data\Mono\```
* Run the game to check if it's working:
    * If not, delete the downloaded ```mono.dll``` then restore the original version
    * You'll have to scour the internet to work out what went wrong, sorry.
* Close the game

Next, add two environment variables:

* Press **Win+R** (_Run dialog appears_):
    * Enter ```sysdm.cpl```
    * Choose **OK**
* On the **Advanced** tab, choose **Environment Variables...**
* The variables to add are shown below:

1. > **key:** ```DNSPY_UNITY_DBG```  
   > **value:** ```--debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:55555,defer=y,no-hide-debugger```
2. > **key:** ```DNSPY_UNITY_DBG2```  
   > **value:** ```--debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:55555,suspend=n,no-hide-debugger```

Finally, unarchive **dnSpy**:

* Extract the downloaded ```dnSpy-net472.zip``` to a folder
    * It can be anywhere, eg. ```dnSpy/``` on your desktop

### Debugging

> Do this each time you want to debug the game.

First, launch **dnSpy**:

* Run ```dnSpy.exe```
* On the left, in **Assembly Explorer**, remove any ```.dll``` files that are listed
    * Tip: Select one, press **Ctrl+A** then **Delete**

Now run the game and attach **dnSpy**:

* Start ```Cities.exe```
* **Alt+Tab** to **dnSpy** app
* Press **F5** (or choose **Start**) and select:
    * **Debug Engine:** ```Unity (Connect)```
    * **Port:** ```55555```
* Click **OK**:
    * You should see an **orange status bar** at the bottom of application with text: ```Running...```
* From the **Debug** menu, choose **Windows -> Modules** _(Ctrl+Shift+A)_
* You should see lots of ```.dll``` files and some ```data-00...``` entries
* **Right-click** on any of them, select **Open All Modules**, then * Click **OK**
    * The game may hang for few seconds
* On the left, in **Assembly Explorer**, you should see all ```.dll``` files loaded in-game
    * There will be some duplicates
* **Right-click** on any of them, then **Sort Assemblies** to make the list easier to work with

That's it, you are debugging. Now your mods are sure to be bugless :P 

### Reverting

If you want to return the game back to normal:

* Exit the game
* Replace the downloaded ```mono.dll`` with your backup of the original ```mono.dll```
* Start the game

I'm sure you can work out how to simplify or automate toggling between the two ```mono.dll``` files :)

### Tips

* Use **Search** tab _(Ctrl+Shift+K)_ for to find class, property, field, method, etc...
* You can right-click a method definition then select **Analyze** to see where it's used

### Notes

* I have no idea why there are duplicated libraries (some sort of protection?)
* Only one copy of each library will have working breakpoints
    * After sorting assemblies, it's usually the first instance of a listed file
    * Once you know which one it is, you can safely remove the other from Assembly Explorer
* Don't rebuild your mod library with game running, otherwise you'll have to clear Assembly Explorer and open the modules again, which means the duplicates come back


================================================
FILE: TLM/BUILDING_INSTRUCTIONS.md
================================================


# Project building instructions


#### Prerequisites:
* [Git for Windows](https://gitforwindows.org/) / [GitHub Desktop](https://desktop.github.com/)
* one prefered __IDE__ _(Integrated Development Environment)_ to build project:
  * Visual Studio 2017 Community (free)
  * JetBrains Rider (paid)
  * or other similar...
* sources of this repository: 
  * Git for Windows console:
    * use ```git clone https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition``` to download sources of this repository
    * after successful cloning type ```cd Cities-Skylines-Traffic-Manager-President-Edition```
    * then ```git submodule update --init --recursive``` to fetch dependencies
  * Github desktop:
    * clone repository using this link ```https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition.git```
    * dependencies should be installed automatically
    
## To build project follow actions:


Open __TMPL.sln__ located at ``` <Your cloned source code folder>\TLM\``` using preferred __IDE__.

##### Visual Studio:

 * use dropdown from __actions bar__ _(dropdown located under Team menu)_ to select _desired_ solution configuration
 * fix missing libraries locations - inside __Solution Explorer__ right click on every project and select __Properties__
 then __Reference Paths__ and add __Managed__ folder from game directory located under ```<game_dir>\Cities_Data\Managed```
 * to build project with selected configuration choose one of actions:
   * right click on __TLM__ project from __Solution Explorer__
   * use _Build_ menu -> _Build Solution_ __F6__

##### JetBrains Rider:
 * currently there is no GUI for adding Reference Paths so you have to create config for every project inside from scratch: 
 
   1. Create file with extension ```*.csproj.user```named as project name e.g. ```TLM.csproj.user```
   2. Paste below code inside newly created file and replace ```<full_url_to_game_location>``` with correct path
   ```
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <ReferencePath><full_url_to_game_location>\Cities_Data\Managed\</ReferencePath>
      </PropertyGroup>
    </Project> 
   ```
 
 * select configuration using dropdown located on _actions bar_
 * use __Ctrl+F9__ to build solution, or __right click__ on solution inside __File Explorer (Alt+1)__


================================================
FILE: TLM/CSUtil.Commons/ArrowDirection.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace CSUtil.Commons {
	public enum ArrowDirection {
		None = 0,
		Left = 1,
		Forward = 2,
		Right = 3,
		Turn = 4
	}
}


================================================
FILE: TLM/CSUtil.Commons/ArrowDirectionUtil.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSUtil.Commons {
	public class ArrowDirectionUtil {
		public static ArrowDirection InvertLeftRight(ArrowDirection dir) {
			if (dir == ArrowDirection.Left)
				dir = ArrowDirection.Right;
			else if (dir == ArrowDirection.Right)
				dir = ArrowDirection.Left;
			return dir;
		}

		/// <summary>
		/// Calculates the direction of <paramref name="toRelDir"/> in relation to ArrowDirection.TURN.
		/// </summary>
		/// <param name="fromDir">source direction</param>
		/// <param name="toRelDir">target direction, relative to <paramref name="fromDir"/></param>
		/// <returns></returns>
		public static ArrowDirection MakeAbsolute(ArrowDirection fromDir, ArrowDirection toRelDir) {
			if (fromDir == ArrowDirection.None) {
				// invalid direction
				return ArrowDirection.None;
			}

			if (toRelDir == ArrowDirection.None) {
				// invalid direction
				return ArrowDirection.None;
			}

			if (fromDir == ArrowDirection.Turn) {
				// toRelDir is already relative to TURN
				return toRelDir;
			}

			if (toRelDir == ArrowDirection.Turn) {
				// toRelDir is fromDir
				return fromDir;
			}

			int fromDirBase0 = (int)fromDir - 1;
			int toRelDirBase1 = (int)toRelDir;
			/*
			 * Direction | Base 0 | Base 1
			 * ==========+========+=======
			 * Left      | 0      | 1
			 * Forward   | 1      | 2
			 * Right     | 2      | 3
			 * 
			 *
			 * Direction 1 | Direction 2 | Dir. 1 B0 | Dir. 2 B1 | Sum | (Sum + 1) % 4 | Desired dir.
			 * ============+=============+===========+===========+=====|===============+=============
			 * Left        | Left        | 0         | 1         | 1   | 2             | (Forward, 2)
			 * Left        | Forward     | 0         | 2         | 2   | 3             | (Right, 3)
			 * Left        | Right       | 0         | 3         | 3   | 0             | (Turn, 4)
			 * Forward     | Left        | 1         | 1         | 2   | 3             | (Right, 3)
			 * Forward     | Forward     | 1         | 2         | 3   | 0             | (Turn, 4)
			 * Forward     | Right       | 1         | 3         | 4   | 1             | (Left, 1)
			 * Right       | Left        | 2         | 1         | 3   | 0             | (Turn, 4)
			 * Right       | Forward     | 2         | 2         | 4   | 1             | (Left, 1)
			 * Right       | Right       | 2         | 3         | 5   | 2             | (Forward, 2)
			 */

			int ret = (fromDirBase0 + toRelDirBase1 + 1) % 4;
			if (ret == 0) {
				ret = 4;
			}
			return (ArrowDirection)ret;
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/Benchmark/Benchmark.cs
================================================
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;

namespace CSUtil.Commons.Benchmark {
	public class Benchmark : IDisposable {
		private BenchmarkProfile profile;

		public Benchmark(string id = null, string postfix = null) {
			if (id == null) {
				StackFrame frame = new StackFrame(1);
				MethodBase method = frame.GetMethod();
				id = method.DeclaringType.Name + "#" + method.Name;
			}

			if (postfix != null) {
				id += "#" + postfix;
			}

			profile = BenchmarkProfileProvider.Instance.GetProfile(id);
			profile.Start();
		}

		public void Dispose() {
			profile.Stop();
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/Benchmark/BenchmarkProfile.cs
================================================
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;

namespace CSUtil.Commons.Benchmark {
	public class BenchmarkProfile {
		public string Id { get; private set; }
		private Stopwatch timer;
		public int NumBenchmarks { get; private set; } = 0;

		public BenchmarkProfile(string id) {
			Id = id;
			timer = new Stopwatch();
		}

		public void Start() {
			timer.Start();
		}

		public void Stop() {
			if (timer.IsRunning) {
				timer.Stop();
				++NumBenchmarks;
			}
		}

		public TimeSpan GetElapsedTime() {
			return timer.Elapsed;
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/Benchmark/BenchmarkProfileProvider.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSUtil.Commons.Benchmark {
	public class BenchmarkProfileProvider {
		public static readonly BenchmarkProfileProvider Instance = new BenchmarkProfileProvider();

		private IDictionary<string, BenchmarkProfile> Profiles = new Dictionary<string, BenchmarkProfile>();

		public BenchmarkProfile GetProfile(string id) {
			BenchmarkProfile profile = null;
			Profiles.TryGetValue(id, out profile);
			if (profile == null) {
				profile = new BenchmarkProfile(id);
				Profiles.Add(id, profile);
			}
			return profile;
		}

		public void ClearProfiles() {
			Profiles.Clear();
		}

		public string CreateReport() {
			string ret = "=== BENCHMARK REPORT ===\n";

			ret += "=== ORDERED BY TOTAL TIME ===\n";
			List<string> orderedKeys = new List<string>(Profiles.Keys);
			orderedKeys.Sort(delegate (string x, string y) {
				long xTicks = Profiles[x].GetElapsedTime().Ticks;
				long yTicks = Profiles[y].GetElapsedTime().Ticks;
				return yTicks.CompareTo(xTicks);
			});
			ret = CreateReport(ret, orderedKeys);

			ret += "\n=== ORDERED BY AVG. TIME ===\n";
			orderedKeys = new List<string>(Profiles.Keys);
			orderedKeys.Sort(delegate (string x, string y) {
				BenchmarkProfile xProfile = Profiles[x];
				BenchmarkProfile yProfile = Profiles[y];
				if (xProfile.NumBenchmarks <= 0 && yProfile.NumBenchmarks <= 0) {
					return 0;
				} else if (xProfile.NumBenchmarks > 0 && yProfile.NumBenchmarks <= 0) {
					return -1;
				} else if (xProfile.NumBenchmarks <= 0 && yProfile.NumBenchmarks > 0) {
					return 1;
				} else {
					float xAvg = (float)xProfile.GetElapsedTime().TotalMilliseconds / (float)xProfile.NumBenchmarks;
					float yAvg = (float)yProfile.GetElapsedTime().TotalMilliseconds / (float)yProfile.NumBenchmarks;
					return yAvg.CompareTo(xAvg);
				}
			});

			ret = CreateReport(ret, orderedKeys);
			return ret;
		}

		private string CreateReport(string ret, List<string> orderedKeys) {
			foreach (string key in orderedKeys) {
				BenchmarkProfile profile = Profiles[key];
				ret += $"\t{key}: {profile.GetElapsedTime()} ({profile.NumBenchmarks} benchmarks, avg. {(profile.NumBenchmarks <= 0 ? 0f : (float)profile.GetElapsedTime().TotalMilliseconds / (float)profile.NumBenchmarks)})\n";
			}

			return ret;
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/CSUtil.Commons.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{D3ADE06E-F493-4819-865A-3BB44FEEDF01}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>CSUtil.Commons</RootNamespace>
    <AssemblyName>CSUtil.Commons</AssemblyName>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <CodeAnalysisRuleSet>..\TMPE.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <CodeAnalysisRuleSet>..\TMPE.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Benchmark|AnyCPU'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\Benchmark\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>..\TMPE.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PF2_Debug|AnyCPU'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\PF2_Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>..\TMPE.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
    <Reference Include="UnityEngine">
      <HintPath>..\dependencies\UnityEngine.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="ArrowDirection.cs" />
    <Compile Include="ArrowDirectionUtil.cs" />
    <Compile Include="Benchmark\BenchmarkProfileProvider.cs" />
    <Compile Include="EnumUtil.cs" />
    <Compile Include="Log.cs" />
    <Compile Include="LogicUtil.cs" />
    <Compile Include="Benchmark\Benchmark.cs" />
    <Compile Include="Benchmark\BenchmarkProfile.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="TernaryBool.cs" />
    <Compile Include="TernaryBoolUtil.cs" />
    <Compile Include="ToStringExt.cs" />
    <Compile Include="VectorUtil.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="packages.config" />
  </ItemGroup>
  <ItemGroup>
    <Analyzer Include="..\packages\StyleCop.Analyzers.1.0.2\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll" />
    <Analyzer Include="..\packages\StyleCop.Analyzers.1.0.2\analyzers\dotnet\cs\StyleCop.Analyzers.dll" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: TLM/CSUtil.Commons/EnumUtil.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSUtil.Commons {
	public static class EnumUtil {
		public static IEnumerable<T> GetValues<T>() {
			return Enum.GetValues(typeof(T)).Cast<T>();
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/Log.cs
================================================
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading;
using UnityEngine;

namespace CSUtil.Commons {

	public static class Log {
		private enum LogLevel {
			Debug,
			Info,
			Warning,
			Error
		}

		private static object logLock = new object();

		private static string logFilename = Path.Combine(Application.dataPath, "TMPE.log"); // TODO refactor log filename to configuration
		private static Stopwatch sw = Stopwatch.StartNew();

		static Log() {
			try {
				if (File.Exists(logFilename)) {
					File.Delete(logFilename);
				}
			} catch (Exception) {
				
			}
		}

		[Conditional("DEBUG")]
		public static void _Debug(string s) {
			LogToFile(s, LogLevel.Debug);
		}

		public static void Info(string s) {
			LogToFile(s, LogLevel.Info);
		}

		public static void Warning(string s) {
			LogToFile(s, LogLevel.Warning);
		}

		public static void Error(string s) {
			LogToFile(s, LogLevel.Error);
		}

		private static void LogToFile(string log, LogLevel level) {
			try {
				Monitor.Enter(logLock);
				
				using (StreamWriter w = File.AppendText(logFilename)) {
					w.WriteLine($"[{level.ToString()}] @ {sw.ElapsedTicks} {log}");
					if (level == LogLevel.Warning || level == LogLevel.Error) {
						w.WriteLine((new System.Diagnostics.StackTrace()).ToString());
						w.WriteLine();
					}
				}
			} finally {
				Monitor.Exit(logLock);
			}
		}
	}

}


================================================
FILE: TLM/CSUtil.Commons/LogicUtil.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSUtil.Commons {
	public static class LogicUtil {
		public static bool CheckFlags(uint flags, uint flagMask, uint? expectedResult=null) {
			uint res = flags & flagMask;
			if (expectedResult == null) {
				return res != 0;
			} else {
				return res == expectedResult;
			}
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Util")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Util")]
[assembly: AssemblyCopyright("Copyright ©  2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("d3ade06e-f493-4819-865a-3bb44feedf01")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.*")]


================================================
FILE: TLM/CSUtil.Commons/TernaryBool.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSUtil.Commons {
	public enum TernaryBool {
		Undefined = 0,
		False = 1,
		True = 2
	}
}


================================================
FILE: TLM/CSUtil.Commons/TernaryBoolUtil.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSUtil.Commons {
	public static class TernaryBoolUtil {
		public static bool ToBool(TernaryBool tb) {
			if (tb == TernaryBool.Undefined) {
				throw new ArgumentException("Cannot determine boolean value for undefined ternary bool");
			}

			return tb == TernaryBool.True;
		}

		public static bool? ToOptBool(TernaryBool tb) {
			if (tb == TernaryBool.Undefined) {
				return null;
			}

			return tb == TernaryBool.True;
		}

		public static TernaryBool ToTernaryBool(bool? b) {
			switch (b) {
				case null:
				default:
					return TernaryBool.Undefined;
				case false:
					return TernaryBool.False;
				case true:
					return TernaryBool.True;
			}
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/ToStringExt.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSUtil.Commons {
	public static class ToStringExt {
		public static string DictionaryToString<K, V>(this IDictionary<K, V> element) {
			return string.Join(", ", element.Keys.Select(x => $"{ToString(x)}={ToString(element[x])}").ToArray());
		}

		public static string CollectionToString<T>(this ICollection<T> elements) {
			return string.Join(", ", elements.Select(x => ToString(x)).ToArray());
		}

		public static string ArrayToString<T>(this T[] elements) {
			return string.Join(", ", elements.Select(x => ToString(x)).ToArray());
		}

		public static string ToString(object obj) {
			return obj == null ? "<null>" : obj.ToString();
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/VectorUtil.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;

namespace CSUtil.Commons {
	public static class VectorUtil {
		public static void ClampRectToScreen(ref Rect rect, Vector2 resolution) {
			Log._Debug($"ClampPosToScreen([{rect.x}, {rect.y}, {rect.xMax}, {rect.yMax}], [{resolution.x}, {resolution.y}]) called");
			if (rect.x < 0)
				rect.x = 0;
			if (rect.y < 0)
				rect.y = 0;
			if (rect.xMax >= resolution.x)
				rect.x = resolution.x - rect.width;
			if (rect.yMax >= resolution.y)
				rect.y = resolution.y - rect.height;
			Log._Debug($"ClampPosToScreen() -> [{rect.x}, {rect.y}, {rect.xMax}, {rect.yMax}]");
		}
	}
}


================================================
FILE: TLM/CSUtil.Commons/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="StyleCop.Analyzers" version="1.0.2" targetFramework="net35" developmentDependency="true" />
</packages>

================================================
FILE: TLM/CSUtil.Redirection/CSUtil.Redirection.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{7DCC08EF-DC85-47A4-BD6F-79FC52C7EF13}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>CSUtil.Redirection</RootNamespace>
    <AssemblyName>CSUtil.Redirection</AssemblyName>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Benchmark|AnyCPU'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\Benchmark\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <DebugType>full</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="RedirectionHelper.cs" />
    <Compile Include="Redirector.cs" />
    <Compile Include="MethodInfoExt.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\CSUtil.Commons\CSUtil.Commons.csproj">
      <Project>{D3ADE06E-F493-4819-865A-3BB44FEEDF01}</Project>
      <Name>CSUtil.Commons</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: TLM/CSUtil.Redirection/MethodInfoExt.cs
================================================
using System;
using System.Reflection;

namespace CSUtil.Redirection {
    public static class MethodInfoExt
    {
        internal static Redirector.MethodRedirection RedirectTo(this MethodInfo originalMethod, MethodInfo newMethod, Assembly redirectionSource)
        {
            return new Redirector.MethodRedirection(originalMethod, newMethod, redirectionSource);
        }

        public static bool IsCompatibleWith(this MethodInfo thisMethod, MethodInfo otherMethod)
        {
            if (thisMethod.ReturnType != otherMethod.ReturnType)
                return false;

            ParameterInfo[] thisParameters = thisMethod.GetParameters();
            ParameterInfo[] otherParameters = otherMethod.GetParameters();

            if (thisParameters.Length != otherParameters.Length)
                return false;

            for (int i = 0; i < thisParameters.Length; i++)
            {
                if (!otherParameters[i].ParameterType.IsAssignableFrom(thisParameters[i].ParameterType))
                {
                    return false;
                }
            }

            return true;
        }
    }
}

================================================
FILE: TLM/CSUtil.Redirection/NetworkExtensions.Framework.Unsafe.csproj.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=_005FExtensions/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

================================================
FILE: TLM/CSUtil.Redirection/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Transit.Framework.Redirection")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Transit.Framework.Redirection")]
[assembly: AssemblyCopyright("Copyright ©  2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("4250c75b-3c80-494f-a5c9-7e49c18ef1bc")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.*")]


================================================
FILE: TLM/CSUtil.Redirection/RedirectionHelper.cs
================================================
/*
The MIT License (MIT)
Copyright (c) 2015 Sebastian Schöner
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

using System;
using System.Reflection;

namespace CSUtil.Redirection {

    public struct RedirectCallsState
    {
        public byte a, b, c, d, e;
        public ulong f;
    }

    /// <summary>
    /// Helper class to deal with detours. This version is for Unity 5 x64 on Windows.
    /// We provide three different methods of detouring.
    /// </summary>
    public static class RedirectionHelper
    {
        /// <summary>
        /// Redirects all calls from method 'from' to method 'to'.
        /// </summary>
        /// <param name="from"></param>
        /// <param name="to"></param>
        public static RedirectCallsState RedirectCalls(MethodInfo from, MethodInfo to)
        {
            // GetFunctionPointer enforces compilation of the method.
            var fptr1 = from.MethodHandle.GetFunctionPointer();
            var fptr2 = to.MethodHandle.GetFunctionPointer();
            return PatchJumpTo(fptr1, fptr2);
        }

        public static RedirectCallsState RedirectCalls(RuntimeMethodHandle from, RuntimeMethodHandle to)
        {
            // GetFunctionPointer enforces compilation of the method.
            var fptr1 = from.GetFunctionPointer();
            var fptr2 = to.GetFunctionPointer();
            return PatchJumpTo(fptr1, fptr2);
        }

        public static void RevertRedirect(MethodInfo from, RedirectCallsState state)
        {
            try
            {
                var fptr1 = from.MethodHandle.GetFunctionPointer();
                RevertJumpTo(fptr1, state);
            }
            catch
            {
                // ignored
            }
        }

        /// <summary>
        /// Primitive patching. Inserts a jump to 'target' at 'site'. Works even if both methods'
        /// callers have already been compiled.
        /// </summary>
        /// <param name="site"></param>
        /// <param name="target"></param>
        public static RedirectCallsState PatchJumpTo(IntPtr site, IntPtr target)
        {
            RedirectCallsState state = new RedirectCallsState();

            // R11 is volatile.
            unsafe
            {
                byte* sitePtr = (byte*)site.ToPointer();
                state.a = *sitePtr;
                state.b = *(sitePtr + 1);
                state.c = *(sitePtr + 10);
                state.d = *(sitePtr + 11);
                state.e = *(sitePtr + 12);
                state.f = *((ulong*)(sitePtr + 2));

                *sitePtr = 0x49; // mov r11, target
                *(sitePtr + 1) = 0xBB;
                *((ulong*)(sitePtr + 2)) = (ulong)target.ToInt64();
                *(sitePtr + 10) = 0x41; // jmp r11
                *(sitePtr + 11) = 0xFF;
                *(sitePtr + 12) = 0xE3;
            }

            return state;
        }

        public static void RevertJumpTo(IntPtr site, RedirectCallsState state)
        {
            unsafe
            {
                byte* sitePtr = (byte*)site.ToPointer();
                *sitePtr = state.a; // mov r11, target
                *(sitePtr + 1) = state.b;
                *((ulong*)(sitePtr + 2)) = state.f;
                *(sitePtr + 10) = state.c; // jmp r11
                *(sitePtr + 11) = state.d;
                *(sitePtr + 12) = state.e;
            }
        }

    }
}

================================================
FILE: TLM/CSUtil.Redirection/Redirector.cs
================================================
using CSUtil.Commons;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace CSUtil.Redirection {
    public abstract class RedirectAttribute : Attribute
    {
        public RedirectAttribute(Type classType, string methodName, ulong bitSetOption = 0)
        {
            ClassType = classType;
            MethodName = methodName;
            BitSetRequiredOption = bitSetOption;
        }

        public RedirectAttribute(Type classType, ulong bitSetOption = 0)
            : this(classType, null, bitSetOption)
        { }

        public Type ClassType { get; set; }
        public string MethodName { get; set; }
        public ulong BitSetRequiredOption { get; set; }
    }

    /// <summary>
    /// Marks a method for redirection. All marked methods are redirected by calling
    /// <see cref="Redirector.PerformRedirections"/> and reverted by <see cref="Redirector.RevertRedirections"/>
    /// <para>NOTE: only the methods belonging to the same assembly that calls Perform/RevertRedirections are redirected.</para>
    /// </summary>
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
    public class RedirectFromAttribute : RedirectAttribute
    {
        /// <param name="classType">The class of the method that will be redirected</param>
        /// <param name="methodName">The name of the method that will be redirected. If null,
        /// the name of the attribute's target method will be used.</param>
        public RedirectFromAttribute(Type classType, string methodName, ulong bitSetOption = 0)
            : base(classType, methodName, bitSetOption)
        { }

        public RedirectFromAttribute(Type classType, ulong bitSetOption = 0)
            : base(classType, bitSetOption)
        { }
    }

    /// <summary>
    /// Marks a method for redirection. All marked methods are redirected by calling
    /// <see cref="Redirector.PerformRedirections"/> and reverted by <see cref="Redirector.RevertRedirections"/>
    /// <para>NOTE: only the methods belonging to the same assembly that calls Perform/RevertRedirections are redirected.</para>
    /// </summary>
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    public class RedirectToAttribute : RedirectAttribute
    {
        /// <param name="classType">The class of the target method</param>
        /// <param name="methodName">The name of the target method. If null,
        /// the name of the attribute's target method will be used.</param>
        public RedirectToAttribute(Type classType, string methodName, ulong bitSetOption = 0)
            : base(classType, methodName, bitSetOption)
        { }

        public RedirectToAttribute(Type classType, ulong bitSetOption = 0)
            : base(classType, bitSetOption)
        { }
    }

    public static class Redirector
    {
        internal class MethodRedirection : IDisposable
        {
            private bool _isDisposed = false;

            private MethodInfo _originalMethod;
            private readonly RedirectCallsState _callsState;
            public Assembly RedirectionSource { get; set; }

            public MethodRedirection(MethodInfo originalMethod, MethodInfo newMethod, Assembly redirectionSource)
            {
                _originalMethod = originalMethod;
                _callsState = RedirectionHelper.RedirectCalls(_originalMethod, newMethod);
                RedirectionSource = redirectionSource;
            }

            public void Dispose()
            {
                if (!_isDisposed)
                {
                    RedirectionHelper.RevertRedirect(_originalMethod, _callsState);
                    _originalMethod = null;
                    _isDisposed = true;
                }
            }

            public MethodInfo OriginalMethod
            {
                get
                {
                    return _originalMethod;
                }
            }
        }

        private static List<MethodRedirection> s_redirections = new List<MethodRedirection>();

        public static void PerformRedirections(ulong bitMask = 0)
        {
            Assembly callingAssembly = Assembly.GetCallingAssembly();

            IEnumerable<MethodInfo> methods = from type in callingAssembly.GetTypes()
                                              from method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)
                                              where method.GetCustomAttributes(typeof(RedirectAttribute), false).Length > 0
                                              select method;

            foreach (MethodInfo method in methods)
            {
                foreach (RedirectAttribute redirectAttr in method.GetCustomAttributes(typeof(RedirectAttribute), false))
                {
                    if (redirectAttr.BitSetRequiredOption != 0 && (bitMask & redirectAttr.BitSetRequiredOption) == 0)
                        continue;

                    string originalName = String.IsNullOrEmpty(redirectAttr.MethodName) ? method.Name : redirectAttr.MethodName;

                    MethodInfo originalMethod = null;
                    foreach (MethodInfo m in redirectAttr.ClassType.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static))
                    {
                        if (m.Name != originalName)
                            continue;

                        if (method.IsCompatibleWith(m))
                        {
                            originalMethod = m;
                            break;
                        }
                    }

                    if (originalMethod == null)
                    {
                        throw new Exception(string.Format("Redirector: Original method {0} has not been found for redirection", originalName));
                    }

                    if (redirectAttr is RedirectFromAttribute)
                    {
                        if (!s_redirections.Any(r => r.OriginalMethod == originalMethod))
                        {
                            Log.Info(string.Format("Redirector: Detouring method calls from {0}.{1} to {2}.{3} via RedirectFrom",
                                originalMethod.DeclaringType,
                                originalMethod.Name,
                                method.DeclaringType,
                                method.Name));
                            s_redirections.Add(originalMethod.RedirectTo(method, callingAssembly));
                        }
                    }

                    if (redirectAttr is RedirectToAttribute)
                    {
                        if (!s_redirections.Any(r => r.OriginalMethod == method))
                        {
							Log.Info(string.Format("Redirector: Detouring method calls from {0}.{1} to {2}.{3} via RedirectTo",
                                method.DeclaringType,
                                method.Name,
                                originalMethod.DeclaringType,
                                originalMethod.Name));
                            s_redirections.Add(method.RedirectTo(originalMethod, callingAssembly));
                        }
                    }
                }
            }
        }

        public static void RevertRedirections()
        {
            Assembly callingAssembly = Assembly.GetCallingAssembly();

            for (int i = s_redirections.Count - 1; i >= 0; --i)
            {
                var redirection = s_redirections[i];

                if (Equals(redirection.RedirectionSource, callingAssembly))
                {
					Log.Info(string.Format("Redirector: Removing redirection {0}", s_redirections[i].OriginalMethod));
                    s_redirections[i].Dispose();
                    s_redirections.RemoveAt(i);
                }
            }
        }
    }
}


================================================
FILE: TLM/CSUtil.Redirection/Transit.Framework.Redirection.csproj.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	
	<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=_005FExtensions/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

================================================
FILE: TLM/CSUtil.Redirection/Transit.Framework.Unsafe.csproj.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=_005FExtensions/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

================================================
FILE: TLM/PR_REVIEW_INSTRUCTIONS.md
================================================

## Pull Request Review


### Clone PR as new branch inside repository folder:

#### Github Desktop(Atom-version):
* the PR can be selected from the 'Current Branch' drop-down.


#### Git for windows console
* get __PR__ index - this number with __#__ after __PR__ name
* inside project folder ``` \<Folder_of_cloned_repository>\TLM\ ```
  * type ```git fetch origin pull/<pr_number_skip_#>/head:<your_new_branch_name>``` _(skip <>)_ e.g. ```git fetch origin pull/123/head:PR_123```
* to switch to newly created branch:
  * type ```git checkout <your_new_branch_name>``` _(skip <>)_ e.g. ```git checkout PR_123```
  * or use branch switch menu _(usually bottom right corner of preferred __IDE__)_
  
  If you don't see new branch to select try to refresh available branches:
    * __VS 2017:__ _TeamExplorer -> Refresh_
    * __JB Rider:__ _VCS -> Git -> Fetch_

### Now newly created branch should be accessible from branch switch menu


================================================
FILE: TLM/TLM/CodeProfiler.cs
================================================
using ColossalFramework;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;

namespace TrafficManager {
#if TRACE
	public class CodeProfiler : Singleton<CodeProfiler> {
		private Dictionary<string, Stopwatch> watches = new Dictionary<string, Stopwatch>();
		private Dictionary<string, ulong> intervals = new Dictionary<string, ulong>();

		internal void Start(string name) {
			Validate(name);
			try {
				Monitor.Enter(watches);
				watches[name].Start();
			} finally {
				Monitor.Exit(watches);
			}
		}

		internal void Stop(string name) {
			Validate(name);
			try {
				Monitor.Enter(watches);
				watches[name].Stop();
				++intervals[name];
			} finally {
				Monitor.Exit(watches);
			}
		}

		internal void Reset(string name) {
			Validate(name);
			try {
				Monitor.Enter(watches);
				watches[name].Reset();
			} finally {
				Monitor.Exit(watches);
			}
		}

		internal ulong ElapsedNano(string name) {
			Validate(name);
			try {
				Monitor.Enter(watches);
				return (ulong)(watches[name].Elapsed.TotalMilliseconds * 1000d * 1000d);
			} finally {
				Monitor.Exit(watches);
			}
		}

		private void Validate(string name) {
			try {
				Monitor.Enter(watches);
				if (!watches.ContainsKey(name)) {
					watches[name] = new Stopwatch();
					intervals[name] = 0;
				}
			} finally {
				Monitor.Exit(watches);
			}
		}

		internal void OnLevelUnloading() {
			try {
				Monitor.Enter(watches);

				foreach (KeyValuePair<string, Stopwatch> we in watches) {
					Log._Debug($"Stopwatch {we.Key}: Total elapsed ns: {ElapsedNano(we.Key)} ms: {ElapsedNano(we.Key) / 1000u / 1000u} s: {ElapsedNano(we.Key) / 1000u / 1000u / 1000u} min: {ElapsedNano(we.Key) / 1000u / 1000u / 1000u / 60u} h: {ElapsedNano(we.Key) / 1000u / 1000u / 1000u / 60u / 60u} intervals: {intervals[we.Key]} avg. ns: {(intervals[we.Key] > 0 ? ("" + (ElapsedNano(we.Key) / intervals[we.Key])) : "n/a")}");
                }

				watches.Clear();
				intervals.Clear();
			} finally {
				Monitor.Exit(watches);
			}
		}
	}
#endif
}


================================================
FILE: TLM/TLM/Constants.cs
================================================
using GenericGameBridge.Factory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TrafficManager.Manager;

namespace TrafficManager {
	public static class Constants {
		public static readonly bool[] ALL_BOOL = new bool[] { false, true };

		public static IServiceFactory ServiceFactory {
			get {
#if UNITTEST
				return TestGameBridge.Factory.ServiceFactory.Instance;
#else
				return CitiesGameBridge.Factory.ServiceFactory.Instance;
#endif
			}
		}

		public static IManagerFactory ManagerFactory {
			get {
				return Manager.Impl.ManagerFactory.Instance;
			}
		}
	}
}


================================================
FILE: TLM/TLM/Custom/AI/CustomAmbulanceAI.cs
================================================
using ColossalFramework;
using System;
using System.Collections.Generic;
using System.Text;
using TrafficManager.Custom.PathFinding;
using TrafficManager.Geometry;
using TrafficManager.Manager;
using TrafficManager.Manager.Impl;
using TrafficManager.Traffic;
using TrafficManager.Traffic.Data;
using UnityEngine;
using static TrafficManager.Custom.PathFinding.CustomPathManager;

namespace TrafficManager.Custom.AI {
	class CustomAmbulanceAI : CarAI {
		public bool CustomStartPathFind(ushort vehicleID, ref Vehicle vehicleData, Vector3 startPos, Vector3 endPos, bool startBothWays, bool endBothWays, bool undergroundTarget) {
#if DEBUG
			//Log._Debug($"CustomAmbulanceAI.CustomStartPathFind called for vehicle {vehicleID}");
#endif

			ExtVehicleType vehicleType = VehicleStateManager.Instance.OnStartPathFind(vehicleID, ref vehicleData, (vehicleData.m_flags & Vehicle.Flags.Emergency2) != 0 ? ExtVehicleType.Emergency : ExtVehicleType.Service);

			VehicleInfo info = this.m_info;
			bool allowUnderground = (vehicleData.m_flags & (Vehicle.Flags.Underground | Vehicle.Flags.Transition)) != 0;
			PathUnit.Position startPosA;
			PathUnit.Position startPosB;
			float startDistSqrA;
			float startDistSqrB;
			PathUnit.Position endPosA;
			PathUnit.Position endPosB;
			float endDistSqrA;
			float endDistSqrB;
			if (CustomPathManager.FindPathPosition(startPos, ItemClass.Service.Road, NetInfo.LaneType.Vehicle | NetInfo.LaneType.TransportVehicle, info.m_vehicleType, allowUnderground, false, 32f, out startPosA, out startPosB, out startDistSqrA, out startDistSqrB) &&
				CustomPathManager.FindPathPosition(endPos, ItemClass.Service.Road, NetInfo.LaneType.Vehicle | NetInfo.LaneType.TransportVehicle, info.m_vehicleType, undergroundTarget, false, 32f, out endPosA, out endPosB, out endDistSqrA, out endDistSqrB)) {
				if (!startBothWays || startDistSqrA < 10f) {
					startPosB = default(PathUnit.Position);
				}
				if (!endBothWays || endDistSqrA < 10f) {
					endPosB = default(PathUnit.Positio
Download .txt
gitextract_wdu8mnk_/

├── .gitattributes
├── .gitignore
├── .gitmodules
├── .travis.yml
├── CHANGELOG.md
├── LICENSE
├── README.md
└── TLM/
    ├── .vs/
    │   └── config/
    │       └── applicationhost.config
    ├── ATTACHING_DEBUGGER.md
    ├── BUILDING_INSTRUCTIONS.md
    ├── CSUtil.Commons/
    │   ├── ArrowDirection.cs
    │   ├── ArrowDirectionUtil.cs
    │   ├── Benchmark/
    │   │   ├── Benchmark.cs
    │   │   ├── BenchmarkProfile.cs
    │   │   └── BenchmarkProfileProvider.cs
    │   ├── CSUtil.Commons.csproj
    │   ├── EnumUtil.cs
    │   ├── Log.cs
    │   ├── LogicUtil.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── TernaryBool.cs
    │   ├── TernaryBoolUtil.cs
    │   ├── ToStringExt.cs
    │   ├── VectorUtil.cs
    │   └── packages.config
    ├── CSUtil.Redirection/
    │   ├── CSUtil.Redirection.csproj
    │   ├── MethodInfoExt.cs
    │   ├── NetworkExtensions.Framework.Unsafe.csproj.DotSettings
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── RedirectionHelper.cs
    │   ├── Redirector.cs
    │   ├── Transit.Framework.Redirection.csproj.DotSettings
    │   └── Transit.Framework.Unsafe.csproj.DotSettings
    ├── PR_REVIEW_INSTRUCTIONS.md
    ├── TLM/
    │   ├── CodeProfiler.cs
    │   ├── Constants.cs
    │   ├── Custom/
    │   │   ├── AI/
    │   │   │   ├── CustomAmbulanceAI.cs
    │   │   │   ├── CustomBuildingAI.cs
    │   │   │   ├── CustomBusAI.cs
    │   │   │   ├── CustomCarAI.cs
    │   │   │   ├── CustomCargoTruckAI.cs
    │   │   │   ├── CustomCitizenAI.cs
    │   │   │   ├── CustomCommonBuildingAI.cs
    │   │   │   ├── CustomFireTruckAI.cs
    │   │   │   ├── CustomHumanAI.cs
    │   │   │   ├── CustomPassengerCarAI.cs
    │   │   │   ├── CustomPoliceCarAI.cs
    │   │   │   ├── CustomResidentAI.cs
    │   │   │   ├── CustomRoadAI.cs
    │   │   │   ├── CustomShipAI.cs
    │   │   │   ├── CustomTaxiAI.cs
    │   │   │   ├── CustomTouristAI.cs
    │   │   │   ├── CustomTrainAI.cs
    │   │   │   ├── CustomTramBaseAI.cs
    │   │   │   ├── CustomTransportLineAI.cs
    │   │   │   ├── CustomVehicleAI.cs
    │   │   │   └── README.md
    │   │   ├── Data/
    │   │   │   ├── CustomVehicle.cs
    │   │   │   └── README.md
    │   │   ├── Manager/
    │   │   │   ├── CustomCitizenManager.cs
    │   │   │   ├── CustomNetManager.cs
    │   │   │   ├── CustomVehicleManager.cs
    │   │   │   └── README.md
    │   │   ├── PathFinding/
    │   │   │   ├── CustomPathFind.cs
    │   │   │   ├── CustomPathFind2.cs
    │   │   │   ├── CustomPathManager.cs
    │   │   │   ├── README.md
    │   │   │   └── StockPathFind.cs
    │   │   └── README.md
    │   ├── Geometry/
    │   │   ├── GeometryCalculationMode.cs
    │   │   ├── ISegmentEndId.cs
    │   │   ├── Impl/
    │   │   │   ├── NodeGeometry.cs
    │   │   │   ├── SegmentEndGeometry.cs
    │   │   │   ├── SegmentEndId.cs
    │   │   │   └── SegmentGeometry.cs
    │   │   └── README.md
    │   ├── LoadingExtension.cs
    │   ├── Manager/
    │   │   ├── AbstractCustomManager.cs
    │   │   ├── AbstractFeatureManager.cs
    │   │   ├── AbstractGeometryObservingManager.cs
    │   │   ├── IAdvancedParkingManager.cs
    │   │   ├── ICustomDataManager.cs
    │   │   ├── ICustomManager.cs
    │   │   ├── ICustomSegmentLightsManager.cs
    │   │   ├── IExtBuildingManager.cs
    │   │   ├── IExtCitizenInstanceManager.cs
    │   │   ├── IExtCitizenManager.cs
    │   │   ├── IFeatureManager.cs
    │   │   ├── IGeometryManager.cs
    │   │   ├── IJunctionRestrictionsManager.cs
    │   │   ├── ILaneArrowManager.cs
    │   │   ├── ILaneConnectionManager.cs
    │   │   ├── IManagerFactory.cs
    │   │   ├── IOptionsManager.cs
    │   │   ├── IParkingRestrictionsManager.cs
    │   │   ├── IRoutingManager.cs
    │   │   ├── ISegmentEndManager.cs
    │   │   ├── ISpeedLimitManager.cs
    │   │   ├── ITrafficLightManager.cs
    │   │   ├── ITrafficLightSimulationManager.cs
    │   │   ├── ITrafficMeasurementManager.cs
    │   │   ├── ITrafficPriorityManager.cs
    │   │   ├── ITurnOnRedManager.cs
    │   │   ├── IUtilityManager.cs
    │   │   ├── IVehicleBehaviorManager.cs
    │   │   ├── IVehicleRestrictionsManager.cs
    │   │   ├── IVehicleStateManager.cs
    │   │   ├── Impl/
    │   │   │   ├── AdvancedParkingManager.cs
    │   │   │   ├── CustomSegmentLightsManager.cs
    │   │   │   ├── ExtBuildingManager.cs
    │   │   │   ├── ExtCitizenInstanceManager.cs
    │   │   │   ├── ExtCitizenManager.cs
    │   │   │   ├── GeometryManager.cs
    │   │   │   ├── JunctionRestrictionsManager.cs
    │   │   │   ├── LaneArrowManager.cs
    │   │   │   ├── LaneConnectionManager.cs
    │   │   │   ├── ManagerFactory.cs
    │   │   │   ├── OptionsManager.cs
    │   │   │   ├── ParkingRestrictionsManager.cs
    │   │   │   ├── RoutingManager.cs
    │   │   │   ├── SegmentEndManager.cs
    │   │   │   ├── SpeedLimitManager.cs
    │   │   │   ├── TrafficLightManager.cs
    │   │   │   ├── TrafficLightSimulationManager.cs
    │   │   │   ├── TrafficMeasurementManager.cs
    │   │   │   ├── TrafficPriorityManager.cs
    │   │   │   ├── TurnOnRedManager.cs
    │   │   │   ├── UtilityManager.cs
    │   │   │   ├── VehicleBehaviorManager.cs
    │   │   │   ├── VehicleRestrictionsManager.cs
    │   │   │   └── VehicleStateManager.cs
    │   │   └── README.md
    │   ├── PrintTransportLines.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── README.md
    │   ├── Resources/
    │   │   ├── incompatible_mods.txt
    │   │   ├── lang.txt
    │   │   ├── lang_de.txt
    │   │   ├── lang_es.txt
    │   │   ├── lang_fr.txt
    │   │   ├── lang_it.txt
    │   │   ├── lang_ja.txt
    │   │   ├── lang_ko.txt
    │   │   ├── lang_nl.txt
    │   │   ├── lang_pl.txt
    │   │   ├── lang_pt.txt
    │   │   ├── lang_ru.txt
    │   │   ├── lang_template.txt
    │   │   ├── lang_zh-tw.txt
    │   │   └── lang_zh.txt
    │   ├── State/
    │   │   ├── ConfigData/
    │   │   │   ├── AdvancedVehicleAI.cs
    │   │   │   ├── Debug.cs
    │   │   │   ├── DynamicLaneSelection.cs
    │   │   │   ├── Main.cs
    │   │   │   ├── ParkingAI.cs
    │   │   │   ├── PathFinding.cs
    │   │   │   ├── PriorityRules.cs
    │   │   │   └── TimedTrafficLights.cs
    │   │   ├── Configuration.cs
    │   │   ├── Flags.cs
    │   │   ├── GlobalConfig.cs
    │   │   ├── Options.cs
    │   │   ├── README.md
    │   │   └── SerializableDataExtension.cs
    │   ├── TLM.csproj
    │   ├── TMPE.csproj
    │   ├── ThreadingExtension.cs
    │   ├── Traffic/
    │   │   ├── Data/
    │   │   │   ├── ExtBuilding.cs
    │   │   │   ├── ExtCitizen.cs
    │   │   │   ├── ExtCitizenInstance.cs
    │   │   │   ├── PrioritySegment.cs
    │   │   │   ├── SegmentEndFlags.cs
    │   │   │   ├── SegmentFlags.cs
    │   │   │   ├── TurnOnRedSegments.cs
    │   │   │   └── VehicleState.cs
    │   │   ├── ExtVehicleType.cs
    │   │   ├── ISegmentEnd.cs
    │   │   ├── Impl/
    │   │   │   └── SegmentEnd.cs
    │   │   ├── README.md
    │   │   └── VehicleJunctionTransitState.cs
    │   ├── TrafficLight/
    │   │   ├── Data/
    │   │   │   └── TrafficLightSimulation.cs
    │   │   ├── FlowWaitCalcMode.cs
    │   │   ├── ICustomSegmentLight.cs
    │   │   ├── ICustomSegmentLights.cs
    │   │   ├── ITimedTrafficLights.cs
    │   │   ├── ITimedTrafficLightsStep.cs
    │   │   ├── Impl/
    │   │   │   ├── CustomSegment.cs
    │   │   │   ├── CustomSegmentLight.cs
    │   │   │   ├── CustomSegmentLights.cs
    │   │   │   ├── TimedTrafficLights.cs
    │   │   │   └── TimedTrafficLightsStep.cs
    │   │   ├── LightMode.cs
    │   │   ├── README.md
    │   │   ├── StepChangeMetric.cs
    │   │   └── TrafficLightSimulationType.cs
    │   ├── TrafficManager.cs
    │   ├── TrafficManagerMod.cs
    │   ├── TrafficManagerMode.cs
    │   ├── UI/
    │   │   ├── CustomKeyHandler.cs
    │   │   ├── IncompatibleModsPanel.cs
    │   │   ├── LinearSpriteButton.cs
    │   │   ├── MainMenu/
    │   │   │   ├── ClearTrafficButton.cs
    │   │   │   ├── DebugMenu.cs
    │   │   │   ├── DespawnButton.cs
    │   │   │   ├── JunctionRestrictionsButton.cs
    │   │   │   ├── LaneArrowsButton.cs
    │   │   │   ├── LaneConnectorButton.cs
    │   │   │   ├── MainMenuPanel.cs
    │   │   │   ├── ManualTrafficLightsButton.cs
    │   │   │   ├── MenuButton.cs
    │   │   │   ├── MenuToolModeButton.cs
    │   │   │   ├── ParkingRestrictionsButton.cs
    │   │   │   ├── PrioritySignsButton.cs
    │   │   │   ├── README.md
    │   │   │   ├── SpeedLimitsButton.cs
    │   │   │   ├── StatsLabel.cs
    │   │   │   ├── TimedTrafficLightsButton.cs
    │   │   │   ├── ToggleTrafficLightsButton.cs
    │   │   │   ├── VehicleRestrictionsButton.cs
    │   │   │   └── VersionLabel.cs
    │   │   ├── README.md
    │   │   ├── RemoveCitizenInstanceButtonExtender.cs
    │   │   ├── RemoveVehicleButtonExtender.cs
    │   │   ├── SubTool.cs
    │   │   ├── SubTools/
    │   │   │   ├── JunctionRestrictionsTool.cs
    │   │   │   ├── LaneArrowTool.cs
    │   │   │   ├── LaneConnectorTool.cs
    │   │   │   ├── ManualTrafficLightsTool.cs
    │   │   │   ├── ParkingRestrictionsTool.cs
    │   │   │   ├── PrioritySignsTool.cs
    │   │   │   ├── README.md
    │   │   │   ├── SpeedLimitsTool.cs
    │   │   │   ├── TimedTrafficLightsTool.cs
    │   │   │   ├── ToggleTrafficLightsTool.cs
    │   │   │   └── VehicleRestrictionsTool.cs
    │   │   ├── TextureResources.cs
    │   │   ├── ToolMode.cs
    │   │   ├── TrafficManagerTool.cs
    │   │   ├── Translation.cs
    │   │   ├── TransportDemandViewMode.cs
    │   │   ├── UIBase.cs
    │   │   ├── UIMainMenuButton.cs
    │   │   └── UITransportDemand.cs
    │   ├── Util/
    │   │   ├── GenericObservable.cs
    │   │   ├── GenericUnsubscriber.cs
    │   │   ├── IObservable.cs
    │   │   ├── IObserver.cs
    │   │   ├── IVisitor.cs
    │   │   ├── LoopUtil.cs
    │   │   ├── ModsCompatibilityChecker.cs
    │   │   ├── README.md
    │   │   ├── RedirectionHelper.cs
    │   │   ├── SegmentLaneTraverser.cs
    │   │   ├── SegmentTraverser.cs
    │   │   ├── TextureUtil.cs
    │   │   └── TinyDictionary.cs
    │   └── packages.config
    ├── TLM.sln.DotSettings
    ├── TMPE.CitiesGameBridge/
    │   ├── Factory/
    │   │   └── ServiceFactory.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── Service/
    │   │   ├── BuildingService.cs
    │   │   ├── CitizenService.cs
    │   │   ├── NetService.cs
    │   │   ├── PathService.cs
    │   │   ├── SimulationService.cs
    │   │   └── VehicleService.cs
    │   ├── TMPE.CitiesGameBridge.csproj
    │   └── packages.config
    ├── TMPE.GenericGameBridge/
    │   ├── Factory/
    │   │   └── IServiceFactory.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── Service/
    │   │   ├── IBuildingService.cs
    │   │   ├── ICitizenService.cs
    │   │   ├── INetService.cs
    │   │   ├── IPathService.cs
    │   │   ├── ISimulationService.cs
    │   │   └── IVehicleService.cs
    │   ├── TMPE.GenericGameBridge.csproj
    │   └── packages.config
    ├── TMPE.GlobalConfigGenerator/
    │   ├── App.config
    │   ├── Generator.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── TMPE.GlobalConfigGenerator.csproj
    │   └── packages.config
    ├── TMPE.SpiralLoopTest/
    │   ├── App.config
    │   ├── Program.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   └── SpiralLoopTest.csproj
    ├── TMPE.TestGameBridge/
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── TMPE.TestGameBridge.csproj
    │   └── packages.config
    ├── TMPE.UnitTest/
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── TMPE.UnitTest.csproj
    │   ├── Util/
    │   │   ├── LogicUtilUnitTest.cs
    │   │   └── TinyDictionaryUnitTest.cs
    │   └── packages.config
    ├── TMPE.ruleset
    └── TMPE.sln
Download .txt
Showing preview only (215K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2194 symbols across 213 files)

FILE: TLM/CSUtil.Commons/ArrowDirection.cs
  type ArrowDirection (line 6) | public enum ArrowDirection {

FILE: TLM/CSUtil.Commons/ArrowDirectionUtil.cs
  class ArrowDirectionUtil (line 7) | public class ArrowDirectionUtil {
    method InvertLeftRight (line 8) | public static ArrowDirection InvertLeftRight(ArrowDirection dir) {
    method MakeAbsolute (line 22) | public static ArrowDirection MakeAbsolute(ArrowDirection fromDir, Arro...

FILE: TLM/CSUtil.Commons/Benchmark/Benchmark.cs
  class Benchmark (line 9) | public class Benchmark : IDisposable {
    method Benchmark (line 12) | public Benchmark(string id = null, string postfix = null) {
    method Dispose (line 27) | public void Dispose() {

FILE: TLM/CSUtil.Commons/Benchmark/BenchmarkProfile.cs
  class BenchmarkProfile (line 8) | public class BenchmarkProfile {
    method BenchmarkProfile (line 13) | public BenchmarkProfile(string id) {
    method Start (line 18) | public void Start() {
    method Stop (line 22) | public void Stop() {
    method GetElapsedTime (line 29) | public TimeSpan GetElapsedTime() {

FILE: TLM/CSUtil.Commons/Benchmark/BenchmarkProfileProvider.cs
  class BenchmarkProfileProvider (line 8) | public class BenchmarkProfileProvider {
    method GetProfile (line 13) | public BenchmarkProfile GetProfile(string id) {
    method ClearProfiles (line 23) | public void ClearProfiles() {
    method CreateReport (line 27) | public string CreateReport() {
    method CreateReport (line 61) | private string CreateReport(string ret, List<string> orderedKeys) {

FILE: TLM/CSUtil.Commons/EnumUtil.cs
  class EnumUtil (line 7) | public static class EnumUtil {
    method GetValues (line 8) | public static IEnumerable<T> GetValues<T>() {

FILE: TLM/CSUtil.Commons/Log.cs
  class Log (line 10) | public static class Log {
    type LogLevel (line 11) | private enum LogLevel {
    method Log (line 23) | static Log() {
    method _Debug (line 33) | [Conditional("DEBUG")]
    method Info (line 38) | public static void Info(string s) {
    method Warning (line 42) | public static void Warning(string s) {
    method Error (line 46) | public static void Error(string s) {
    method LogToFile (line 50) | private static void LogToFile(string log, LogLevel level) {

FILE: TLM/CSUtil.Commons/LogicUtil.cs
  class LogicUtil (line 7) | public static class LogicUtil {
    method CheckFlags (line 8) | public static bool CheckFlags(uint flags, uint flagMask, uint? expecte...

FILE: TLM/CSUtil.Commons/TernaryBool.cs
  type TernaryBool (line 7) | public enum TernaryBool {

FILE: TLM/CSUtil.Commons/TernaryBoolUtil.cs
  class TernaryBoolUtil (line 7) | public static class TernaryBoolUtil {
    method ToBool (line 8) | public static bool ToBool(TernaryBool tb) {
    method ToOptBool (line 16) | public static bool? ToOptBool(TernaryBool tb) {
    method ToTernaryBool (line 24) | public static TernaryBool ToTernaryBool(bool? b) {

FILE: TLM/CSUtil.Commons/ToStringExt.cs
  class ToStringExt (line 8) | public static class ToStringExt {
    method DictionaryToString (line 9) | public static string DictionaryToString<K, V>(this IDictionary<K, V> e...
    method CollectionToString (line 13) | public static string CollectionToString<T>(this ICollection<T> element...
    method ArrayToString (line 17) | public static string ArrayToString<T>(this T[] elements) {
    method ToString (line 21) | public static string ToString(object obj) {

FILE: TLM/CSUtil.Commons/VectorUtil.cs
  class VectorUtil (line 8) | public static class VectorUtil {
    method ClampRectToScreen (line 9) | public static void ClampRectToScreen(ref Rect rect, Vector2 resolution) {

FILE: TLM/CSUtil.Redirection/MethodInfoExt.cs
  class MethodInfoExt (line 5) | public static class MethodInfoExt
    method RedirectTo (line 7) | internal static Redirector.MethodRedirection RedirectTo(this MethodInf...
    method IsCompatibleWith (line 12) | public static bool IsCompatibleWith(this MethodInfo thisMethod, Method...

FILE: TLM/CSUtil.Redirection/RedirectionHelper.cs
  type RedirectCallsState (line 26) | public struct RedirectCallsState
  class RedirectionHelper (line 36) | public static class RedirectionHelper
    method RedirectCalls (line 43) | public static RedirectCallsState RedirectCalls(MethodInfo from, Method...
    method RedirectCalls (line 51) | public static RedirectCallsState RedirectCalls(RuntimeMethodHandle fro...
    method RevertRedirect (line 59) | public static void RevertRedirect(MethodInfo from, RedirectCallsState ...
    method PatchJumpTo (line 78) | public static RedirectCallsState PatchJumpTo(IntPtr site, IntPtr target)

FILE: TLM/CSUtil.Redirection/Redirector.cs
  class RedirectAttribute (line 8) | public abstract class RedirectAttribute : Attribute
    method RedirectAttribute (line 10) | public RedirectAttribute(Type classType, string methodName, ulong bitS...
    method RedirectAttribute (line 17) | public RedirectAttribute(Type classType, ulong bitSetOption = 0)
  class RedirectFromAttribute (line 31) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
    method RedirectFromAttribute (line 37) | public RedirectFromAttribute(Type classType, string methodName, ulong ...
    method RedirectFromAttribute (line 41) | public RedirectFromAttribute(Type classType, ulong bitSetOption = 0)
  class RedirectToAttribute (line 51) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    method RedirectToAttribute (line 57) | public RedirectToAttribute(Type classType, string methodName, ulong bi...
    method RedirectToAttribute (line 61) | public RedirectToAttribute(Type classType, ulong bitSetOption = 0)
  class Redirector (line 66) | public static class Redirector
    class MethodRedirection (line 68) | internal class MethodRedirection : IDisposable
      method MethodRedirection (line 76) | public MethodRedirection(MethodInfo originalMethod, MethodInfo newMe...
      method Dispose (line 83) | public void Dispose()
    method PerformRedirections (line 104) | public static void PerformRedirections(ulong bitMask = 0)
    method RevertRedirections (line 169) | public static void RevertRedirections()

FILE: TLM/TLM/CodeProfiler.cs
  class CodeProfiler (line 11) | public class CodeProfiler : Singleton<CodeProfiler> {
    method Start (line 15) | internal void Start(string name) {
    method Stop (line 25) | internal void Stop(string name) {
    method Reset (line 36) | internal void Reset(string name) {
    method ElapsedNano (line 46) | internal ulong ElapsedNano(string name) {
    method Validate (line 56) | private void Validate(string name) {
    method OnLevelUnloading (line 68) | internal void OnLevelUnloading() {

FILE: TLM/TLM/Constants.cs
  class Constants (line 9) | public static class Constants {

FILE: TLM/TLM/Custom/AI/CustomAmbulanceAI.cs
  class CustomAmbulanceAI (line 15) | class CustomAmbulanceAI : CarAI {
    method CustomStartPathFind (line 16) | public bool CustomStartPathFind(ushort vehicleID, ref Vehicle vehicleD...

FILE: TLM/TLM/Custom/AI/CustomBuildingAI.cs
  class CustomBuildingAI (line 16) | public class CustomBuildingAI : BuildingAI {
    method CustomGetColor (line 17) | public Color CustomGetColor(ushort buildingID, ref Building data, Info...

FILE: TLM/TLM/Custom/AI/CustomBusAI.cs
  class CustomBusAI (line 14) | class CustomBusAI : CarAI {
    method CustomStartPathFind (line 15) | public bool CustomStartPathFind(ushort vehicleID, ref Vehicle vehicleD...

FILE: TLM/TLM/Custom/AI/CustomCarAI.cs
  method Awake (line 25) | public void Awake() {

FILE: TLM/TLM/Custom/AI/CustomCargoTruckAI.cs
  method CustomSimulationStep (line 17) | public void CustomSimulationStep(ushort vehicleId, ref Vehicle vehicleDa...
  method RemoveOffers (line 37) | private static void RemoveOffers(ushort vehicleId, ref Vehicle data) {

FILE: TLM/TLM/Custom/AI/CustomCitizenAI.cs
  method CustomStartPathFind (line 23) | public bool CustomStartPathFind(ushort instanceID, ref CitizenInstance c...

FILE: TLM/TLM/Custom/AI/CustomCommonBuildingAI.cs
  class CustomCommonBuildingAI (line 14) | public class CustomCommonBuildingAI : BuildingAI {
    method CustomSimulationStep (line 15) | public void CustomSimulationStep(ushort buildingID, ref Building data) {
    method ExtSimulationStep (line 40) | internal void ExtSimulationStep(ushort buildingID, ref Building data, ...

FILE: TLM/TLM/Custom/AI/CustomPassengerCarAI.cs
  method CustomSimulationStep (line 27) | public void CustomSimulationStep(ushort vehicleId, ref Vehicle vehicleDa...

FILE: TLM/TLM/Custom/AI/CustomRoadAI.cs
  method CustomNodeSimulationStep (line 24) | public void CustomNodeSimulationStep(ushort nodeId, ref NetNode data) {

FILE: TLM/TLM/Custom/AI/CustomTaxiAI.cs
  class CustomTaxiAI (line 14) | class CustomTaxiAI : CarAI {
    method GetPassengerInstance (line 15) | public static ushort GetPassengerInstance(ushort vehicleID, ref Vehicl...
    method CustomStartPathFind (line 39) | public bool CustomStartPathFind(ushort vehicleID, ref Vehicle vehicleD...

FILE: TLM/TLM/Custom/AI/CustomTransportLineAI.cs
  class CustomTransportLineAI (line 17) | class CustomTransportLineAI : TransportLineAI { // TODO inherit from Net...
    method CustomStartPathFind (line 18) | public static bool CustomStartPathFind(ushort segmentID, ref NetSegmen...

FILE: TLM/TLM/Custom/AI/CustomVehicleAI.cs
  method CustomCalculateSegmentPosition (line 24) | public void CustomCalculateSegmentPosition(ushort vehicleID, ref Vehicle...
  method CustomCalculateSegmentPositionPathFinder (line 28) | public void CustomCalculateSegmentPositionPathFinder(ushort vehicleID, r...
  method CalculateSegPos (line 32) | protected virtual void CalculateSegPos(ushort vehicleID, ref Vehicle veh...

FILE: TLM/TLM/Custom/Data/CustomVehicle.cs
  class CustomVehicle (line 14) | public static class CustomVehicle {
    method Spawn (line 15) | public static void Spawn(ref Vehicle vehicleData, ushort vehicleId) {
    method Unspawn (line 93) | public static void Unspawn(ref Vehicle vehicleData, ushort vehicleId) {

FILE: TLM/TLM/Custom/Manager/CustomCitizenManager.cs
  class CustomCitizenManager (line 14) | public class CustomCitizenManager : CitizenManager {
    method CustomReleaseCitizenInstance (line 16) | public void CustomReleaseCitizenInstance(ushort instanceId) {
    method CustomReleaseCitizen (line 27) | public void CustomReleaseCitizen(uint citizenId) {
    method ReleaseCitizenInstanceImplementation (line 38) | [MethodImpl(MethodImplOptions.NoInlining)]
    method ReleaseCitizenImplementation (line 43) | [MethodImpl(MethodImplOptions.NoInlining)]

FILE: TLM/TLM/Custom/Manager/CustomVehicleManager.cs
  class CustomVehicleManager (line 14) | public class CustomVehicleManager : VehicleManager {
    method CustomReleaseVehicle (line 15) | public void CustomReleaseVehicle(ushort vehicleId) {
    method CustomCreateVehicle (line 29) | public bool CustomCreateVehicle(out ushort vehicleId, ref Randomizer r...

FILE: TLM/TLM/Custom/PathFinding/CustomPathFind.cs
  class CustomPathFind (line 24) | public class CustomPathFind : PathFind {
    type BufferItem (line 25) | private struct BufferItem {
    type LaneChangingCostCalculationMode (line 40) | private enum LaneChangingCostCalculationMode {
    method Awake (line 155) | protected virtual void Awake() {
    method OnDestroy (line 200) | protected virtual void OnDestroy() {
    method CalculatePath (line 215) | public new bool CalculatePath(uint unit, bool skipQueue) {
    method ExtCalculatePath (line 219) | public bool ExtCalculatePath(uint unit, bool skipQueue) {
    method PathFindImplementation (line 257) | protected void PathFindImplementation(uint unit, ref PathUnit data) {
    method ProcessItemMain (line 699) | private void ProcessItemMain(uint unitId, BufferItem item, ref NetSegm...
    method ProcessItemPublicTransport (line 1634) | private void ProcessItemPublicTransport(bool debug, BufferItem item, u...
    method ProcessItemCosts (line 1777) | private bool ProcessItemCosts(bool debug, BufferItem item, ushort next...
    method ProcessItemCosts (line 1783) | private bool ProcessItemCosts(bool debug, bool obeyStockLaneArrows, La...

FILE: TLM/TLM/Custom/PathFinding/CustomPathFind2.cs
  method ToString (line 59) | public override string ToString() {
  method Debug (line 733) | private void Debug(uint unit, string message) {
  method Debug (line 741) | private void Debug(uint unit, BufferItem item, string message) {
  method Debug (line 750) | private void Debug(uint unit, BufferItem item, ushort nextSegmentId, str...
  method Debug (line 759) | private void Debug(uint unit, BufferItem item, ushort nextSegmentId, int...

FILE: TLM/TLM/Custom/PathFinding/CustomPathManager.cs
  class CustomPathManager (line 22) | public class CustomPathManager : PathManager {
    type PathCreationArgs (line 23) | public struct PathCreationArgs {
    type PathUnitQueueItem (line 130) | public struct PathUnitQueueItem {
      method ToString (line 144) | public override string ToString() {
    method Awake (line 180) | [UsedImplicitly]
    method UpdateWithPathManagerValues (line 185) | public void UpdateWithPathManagerValues(PathManager stockPathManager) {
    method ReleasePath (line 247) | public new void ReleasePath(uint unit) {
    method CreatePath (line 288) | public bool CreatePath(out uint unit, ref Randomizer randomizer, PathC...
    method FindPathPositionWithSpiralLoop (line 416) | public static bool FindPathPositionWithSpiralLoop(Vector3 position, It...
    method FindPathPositionWithSpiralLoop (line 420) | public static bool FindPathPositionWithSpiralLoop(Vector3 position, Ve...
    method FindPathPositionWithSpiralLoop (line 427) | public static bool FindPathPositionWithSpiralLoop(Vector3 position, It...
    method FindPathPositionWithSpiralLoop (line 431) | public static bool FindPathPositionWithSpiralLoop(Vector3 position, Ve...
    method FindPathPositionWithSpiralLoop (line 435) | public static bool FindPathPositionWithSpiralLoop(Vector3 position, It...
    method FindPathPositionWithSpiralLoop (line 439) | public static bool FindPathPositionWithSpiralLoop(Vector3 position, Ve...
    method FindCitizenPathPosition (line 579) | public static bool FindCitizenPathPosition(Vector3 pos, NetInfo.LaneTy...
    method StopPathFinds (line 606) | private void StopPathFinds() {
    method OnDestroy (line 618) | protected virtual void OnDestroy() {

FILE: TLM/TLM/Custom/PathFinding/StockPathFind.cs
  class StockPathFind (line 9) | public class StockPathFind : MonoBehaviour {
    type BufferItem (line 13) | private struct BufferItem {
    method Awake (line 67) | private void Awake() {
    method OnDestroy (line 86) | private void OnDestroy() {
    method CalculatePath (line 97) | public bool CalculatePath(uint unit, bool skipQueue) {
    method WaitForAllPaths (line 130) | public void WaitForAllPaths() {
    method PathFindImplementation (line 149) | private void PathFindImplementation(uint unit, ref PathUnit data) {
    method ProcessItemMain (line 442) | private void ProcessItemMain(BufferItem item, ushort nextNodeId, ref N...
    method ProcessItemPublicTransport (line 642) | private void ProcessItemPublicTransport(BufferItem item, ushort nextNo...
    method ProcessItemCosts (line 757) | private bool ProcessItemCosts(BufferItem item, ushort nextNodeId, usho...
    method ProcessItemPedBicycle (line 941) | private void ProcessItemPedBicycle(BufferItem item, ushort nextNodeId,...
    method AddBufferItem (line 1058) | private void AddBufferItem(BufferItem item, PathUnit.Position target) {
    method CalculateLaneSpeed (line 1111) | private float CalculateLaneSpeed(byte startOffset, byte endOffset, ref...
    method GetLaneDirection (line 1125) | private void GetLaneDirection(PathUnit.Position pathPos, out NetInfo.D...
    method PathFindThread (line 1140) | private void PathFindThread() {

FILE: TLM/TLM/Geometry/GeometryCalculationMode.cs
  type GeometryCalculationMode (line 7) | public enum GeometryCalculationMode {

FILE: TLM/TLM/Geometry/ISegmentEndId.cs
  type ISegmentEndId (line 7) | public interface ISegmentEndId : IEquatable<ISegmentEndId> {
    method Relocate (line 12) | bool Relocate(ushort segmentId, bool startNode);

FILE: TLM/TLM/Geometry/Impl/NodeGeometry.cs
  class NodeGeometry (line 14) | public class NodeGeometry : IEquatable<NodeGeometry> {
    type SegmentEndReplacement (line 15) | public struct SegmentEndReplacement {
      method ToString (line 19) | public override string ToString() {
      method IsDefined (line 26) | public bool IsDefined() {
    method PrintDebugInfo (line 35) | public static void PrintDebugInfo() {
    method ToString (line 87) | public override string ToString() {
    method NodeGeometry (line 102) | public NodeGeometry(ushort nodeId) {
    method IsValid (line 106) | public bool IsValid() {
    method AddSegmentEnd (line 125) | internal void AddSegmentEnd(SegmentEndGeometry segEndGeo, GeometryCalc...
    method RemoveSegmentEnd (line 169) | internal void RemoveSegmentEnd(SegmentEndGeometry segmentEndGeo, Geome...
    method Cleanup (line 198) | private void Cleanup() {
    method RecalculateSegments (line 204) | internal void RecalculateSegments(ushort? ignoreSegmentId= null) {
    method Recalculate (line 224) | internal void Recalculate() {
    method Invalidate (line 266) | protected void Invalidate() {
    method Equals (line 275) | public bool Equals(NodeGeometry otherNodeGeo) {
    method Equals (line 282) | public override bool Equals(object other) {
    method GetHashCode (line 292) | public override int GetHashCode() {
    method NotifyGeomentryManager (line 299) | private void NotifyGeomentryManager() {
    method OnBeforeLoadData (line 310) | internal static void OnBeforeLoadData() {
    method Get (line 323) | public static NodeGeometry Get(ushort nodeId) {

FILE: TLM/TLM/Geometry/Impl/SegmentEndGeometry.cs
  class SegmentEndGeometry (line 14) | public class SegmentEndGeometry : SegmentEndId {
    method NodeId (line 15) | public ushort NodeId() {
    method ToString (line 135) | public override string ToString() {
    method SegmentEndGeometry (line 169) | public SegmentEndGeometry(ushort segmentId, bool startNode) : base(seg...
    method Get (line 173) | public static SegmentEndGeometry Get(ISegmentEndId endId) {
    method Get (line 177) | public static SegmentEndGeometry Get(ushort segmentId, bool startNode) {
    method Cleanup (line 181) | internal void Cleanup() {
    method IsValid (line 221) | public bool IsValid() {
    method IsConnectedTo (line 227) | public bool IsConnectedTo(ushort otherSegmentId) {
    method GetIncomingSegments (line 237) | public ushort[] GetIncomingSegments() {
    method GetOutgoingSegments (line 262) | public ushort[] GetOutgoingSegments() {
    method GetSegmentGeometry (line 287) | public SegmentGeometry GetSegmentGeometry(bool ignoreInvalid=false) {
    method GetClockwiseIndex (line 291) | public short GetClockwiseIndex() {
    method Recalculate (line 307) | internal void Recalculate(GeometryCalculationMode calcMode) {
    method IsRightSegment (line 442) | public bool IsRightSegment(ushort toSegmentId) {
    method IsLeftSegment (line 452) | public bool IsLeftSegment(ushort toSegmentId) {
    method IsStraightSegment (line 462) | public bool IsStraightSegment(ushort toSegmentId) {
    method GetDirection (line 472) | public ArrowDirection GetDirection(ushort otherSegmentId) {
    method IsRightSegment (line 493) | [Obsolete]
    method IsLeftSegment (line 501) | [Obsolete]
    method GetSegmentDir (line 515) | private static ArrowDirection GetSegmentDir(ushort fromSegment, ushort...
    method GetSegmentDir (line 548) | private static Vector3 GetSegmentDir(int segment, ushort nodeid) {

FILE: TLM/TLM/Geometry/Impl/SegmentEndId.cs
  class SegmentEndId (line 7) | public class SegmentEndId : ISegmentEndId {
    method SegmentEndId (line 11) | public SegmentEndId(ushort segmentId, bool startNode) {
    method SegmentEndId (line 16) | private SegmentEndId() {
    method Relocate (line 20) | public virtual bool Relocate(ushort segmentId, bool startNode) {
    method Equals (line 26) | public override bool Equals(object other) {
    method Equals (line 36) | public bool Equals(ISegmentEndId otherSegEndId) {
    method GetHashCode (line 43) | public override int GetHashCode() {
    method ToString (line 51) | public override string ToString() {

FILE: TLM/TLM/Geometry/Impl/SegmentGeometry.cs
  class SegmentGeometry (line 29) | public class SegmentGeometry : IEquatable<SegmentGeometry> {
    method PrintDebugInfo (line 32) | public static void PrintDebugInfo() {
    method SegmentGeometry (line 99) | public SegmentGeometry(ushort segmentId) {
    method StartNodeId (line 109) | public ushort StartNodeId() {
    method EndNodeId (line 117) | public ushort EndNodeId() {
    method ToString (line 133) | public override string ToString() {
    method IsValid (line 160) | [Obsolete]
    method IsValid (line 165) | public bool IsValid() {
    method StartRecalculation (line 169) | public void StartRecalculation(GeometryCalculationMode calcMode) {
    method Recalculate (line 180) | public void Recalculate(GeometryCalculationMode calcMode) {
    method GetEnd (line 276) | public SegmentEndGeometry GetEnd(bool startNode) {
    method GetEnd (line 291) | public SegmentEndGeometry GetEnd(ushort nodeId) {
    method GetNodeId (line 388) | public ushort GetNodeId(bool startNode) {
    method GetConnectedSegments (line 400) | public ushort[] GetConnectedSegments(bool startNode) {
    method GetRightSegments (line 410) | public ushort[] GetRightSegments(bool startNode) {
    method GetLeftSegments (line 420) | public ushort[] GetLeftSegments(bool startNode) {
    method GetStraightSegments (line 430) | public ushort[] GetStraightSegments(bool startNode) {
    method GetIncomingSegments (line 440) | public ushort[] GetIncomingSegments(bool startNode) {
    method GetIncomingStraightSegments (line 450) | public ushort[] GetIncomingStraightSegments(bool startNode) {
    method GetIncomingLeftSegments (line 460) | public ushort[] GetIncomingLeftSegments(bool startNode) {
    method GetIncomingRightSegments (line 470) | public ushort[] GetIncomingRightSegments(bool startNode) {
    method GetOutgoingSegments (line 480) | public ushort[] GetOutgoingSegments(bool startNode) {
    method GetOutgoingStraightSegments (line 490) | public ushort[] GetOutgoingStraightSegments(bool startNode) {
    method GetOutgoingLeftSegments (line 500) | public ushort[] GetOutgoingLeftSegments(bool startNode) {
    method GetOutgoingRightSegments (line 510) | public ushort[] GetOutgoingRightSegments(bool startNode) {
    method CountOtherSegments (line 522) | public int CountOtherSegments(bool startNode) {
    method CountLeftSegments (line 534) | public int CountLeftSegments(bool startNode) {
    method CountRightSegments (line 546) | public int CountRightSegments(bool startNode) {
    method CountStraightSegments (line 558) | public int CountStraightSegments(bool startNode) {
    method CountIncomingSegments (line 570) | public int CountIncomingSegments(bool startNode) {
    method CountIncomingLeftSegments (line 582) | public int CountIncomingLeftSegments(bool startNode) {
    method CountIncomingRightSegments (line 594) | public int CountIncomingRightSegments(bool startNode) {
    method CountIncomingStraightSegments (line 606) | public int CountIncomingStraightSegments(bool startNode) {
    method CountOutgoingSegments (line 618) | public int CountOutgoingSegments(bool startNode) {
    method CountOutgoingLeftSegments (line 630) | public int CountOutgoingLeftSegments(bool startNode) {
    method CountOutgoingRightSegments (line 642) | public int CountOutgoingRightSegments(bool startNode) {
    method CountOutgoingStraightSegments (line 654) | public int CountOutgoingStraightSegments(bool startNode) {
    method HasLeftSegment (line 666) | public bool HasLeftSegment(bool startNode) {
    method HasRightSegment (line 677) | public bool HasRightSegment(bool startNode) {
    method HasStraightSegment (line 688) | public bool HasStraightSegment(bool startNode) {
    method HasIncomingLeftSegment (line 699) | public bool HasIncomingLeftSegment(bool startNode) {
    method HasIncomingRightSegment (line 710) | public bool HasIncomingRightSegment(bool startNode) {
    method HasIncomingStraightSegment (line 721) | public bool HasIncomingStraightSegment(bool startNode) {
    method HasOutgoingLeftSegment (line 732) | public bool HasOutgoingLeftSegment(bool startNode) {
    method HasOutgoingRightSegment (line 743) | public bool HasOutgoingRightSegment(bool startNode) {
    method HasOutgoingStraightSegment (line 754) | public bool HasOutgoingStraightSegment(bool startNode) {
    method IsLeftSegment (line 766) | public bool IsLeftSegment(ushort toSegmentId, bool startNode) {
    method IsRightSegment (line 791) | public bool IsRightSegment(ushort toSegmentId, bool startNode) {
    method IsStraightSegment (line 809) | public bool IsStraightSegment(ushort toSegmentId, bool startNode) {
    method IsIncomingLeftSegment (line 834) | public bool IsIncomingLeftSegment(ushort toSegmentId, bool startNode) {
    method IsIncomingRightSegment (line 859) | public bool IsIncomingRightSegment(ushort toSegmentId, bool startNode) {
    method IsIncomingStraightSegment (line 884) | public bool IsIncomingStraightSegment(ushort toSegmentId, bool startNo...
    method HasOnlyHighways (line 907) | public bool HasOnlyHighways(bool startNode) {
    method IsOneWay (line 918) | public bool IsOneWay() {
    method IsHighway (line 928) | public bool IsHighway() {
    method HasBusLane (line 936) | public bool HasBusLane() {
    method IsOutgoingOneWay (line 947) | public bool IsOutgoingOneWay(bool startNode) {
    method IsIncomingOneWay (line 959) | public bool IsIncomingOneWay(bool startNode) {
    method IsIncoming (line 970) | public bool IsIncoming(bool startNode) {
    method IsOutgoing (line 981) | public bool IsOutgoing(bool startNode) {
    method GetDirection (line 993) | public ArrowDirection GetDirection(ushort otherSegmentId, bool startNo...
    method AreHighwayRulesEnabled (line 1006) | [Obsolete]
    method calculateIsOutgoingOneWay (line 1044) | internal static bool calculateIsOutgoingOneWay(ushort segmentId, ushor...
    method calculateIsOneWay (line 1078) | private static bool calculateIsOneWay(ushort segmentId) {
    method calculateHasBusLane (line 1122) | internal static bool calculateHasBusLane(ushort segmentId) {
    method calculateHasBusLane (line 1139) | internal static bool calculateHasBusLane(NetInfo segmentInfo) {
    method calculateOneWayAtNode (line 1150) | internal static void calculateOneWayAtNode(ushort segmentId, ushort no...
    method calculateIsHighway (line 1204) | internal static bool calculateIsHighway(ushort segmentId) {
    method calculateIsHighway (line 1221) | internal static bool calculateIsHighway(NetInfo segmentInfo) {
    method Cleanup (line 1230) | private void Cleanup() {
    method Equals (line 1251) | public bool Equals(SegmentGeometry otherSegGeo) {
    method Equals (line 1258) | public override bool Equals(object other) {
    method GetHashCode (line 1268) | public override int GetHashCode() {
    method SegmentGeometry (line 1277) | static SegmentGeometry() {
    method OnBeforeLoadData (line 1281) | internal static void OnBeforeLoadData() {
    method OnBeforeSaveData (line 1295) | internal static void OnBeforeSaveData() {
    method Get (line 1303) | public static SegmentGeometry Get(ushort segmentId, bool ignoreInvalid...

FILE: TLM/TLM/LoadingExtension.cs
  class LoadingExtension (line 24) | public class LoadingExtension : LoadingExtensionBase {
    class Detour (line 25) | public class Detour {
      method Detour (line 30) | public Detour(MethodInfo originalMethod, MethodInfo customMethod) {
    method LoadingExtension (line 66) | public LoadingExtension() {
    method revertDetours (line 69) | public void revertDetours() {
    method initDetours (line 82) | public void initDetours() {
    method OnCreated (line 2473) | public override void OnCreated(ILoading loading) {
    method RegisterCustomManagers (line 2486) | private void RegisterCustomManagers() {
    method OnReleased (line 2512) | public override void OnReleased() {
    method OnLevelUnloading (line 2518) | public override void OnLevelUnloading() {
    method OnLevelLoaded (line 2562) | public override void OnLevelLoaded(LoadMode mode) {
    method CheckRainfallIsLoaded (line 2706) | private bool CheckRainfallIsLoaded() {
    method CheckRushHourIsLoaded (line 2710) | private bool CheckRushHourIsLoaded() {
    method Check3rdPartyModLoaded (line 2714) | private bool Check3rdPartyModLoaded(string namespaceStr, bool printAll...

FILE: TLM/TLM/Manager/AbstractCustomManager.cs
  class AbstractCustomManager (line 30) | public abstract class AbstractCustomManager : ICustomManager {
    method OnAfterLoadData (line 40) | public virtual void OnAfterLoadData() {
    method OnAfterSaveData (line 47) | public virtual void OnAfterSaveData() {
    method OnBeforeLoadData (line 54) | public virtual void OnBeforeLoadData() {
    method OnBeforeSaveData (line 61) | public virtual void OnBeforeSaveData() {
    method OnLevelLoading (line 68) | public virtual void OnLevelLoading() {
    method OnLevelUnloading (line 75) | public virtual void OnLevelUnloading() {
    method InternalPrintDebugInfo (line 82) | protected virtual void InternalPrintDebugInfo() {
    method PrintDebugInfo (line 86) | public void PrintDebugInfo() {

FILE: TLM/TLM/Manager/AbstractFeatureManager.cs
  class AbstractFeatureManager (line 10) | public abstract class AbstractFeatureManager : AbstractCustomManager, IF...
    method OnDisableFeature (line 11) | public void OnDisableFeature() {
    method OnEnableFeature (line 17) | public void OnEnableFeature() {
    method OnDisableFeatureInternal (line 26) | protected abstract void OnDisableFeatureInternal();
    method OnEnableFeatureInternal (line 31) | protected abstract void OnEnableFeatureInternal();

FILE: TLM/TLM/Manager/AbstractGeometryObservingManager.cs
  class AbstractGeometryObservingManager (line 14) | public abstract class AbstractGeometryObservingManager : AbstractCustomM...
    method HandleInvalidSegment (line 23) | protected virtual void HandleInvalidSegment(SegmentGeometry geometry) { }
    method HandleValidSegment (line 29) | protected virtual void HandleValidSegment(SegmentGeometry geometry) { }
    method HandleInvalidNode (line 35) | protected virtual void HandleInvalidNode(NodeGeometry geometry) { }
    method HandleValidNode (line 41) | protected virtual void HandleValidNode(NodeGeometry geometry) { }
    method HandleSegmentEndReplacement (line 48) | protected virtual void HandleSegmentEndReplacement(SegmentEndReplaceme...
    method InternalPrintDebugInfo (line 50) | protected override void InternalPrintDebugInfo() {
    method OnLevelLoading (line 54) | public override void OnLevelLoading() {
    method OnLevelUnloading (line 59) | public override void OnLevelUnloading() {
    method OnUpdate (line 66) | public void OnUpdate(GeometryUpdate update) {

FILE: TLM/TLM/Manager/IAdvancedParkingManager.cs
  type CarUsagePolicy (line 14) | public enum CarUsagePolicy {
  type ParkedCarApproachState (line 36) | public enum ParkedCarApproachState {
  type ParkingUnableReason (line 58) | public enum ParkingUnableReason {
  type IAdvancedParkingManager (line 73) | public interface IAdvancedParkingManager : IFeatureManager {
    method GetBuildingInfoViewColor (line 84) | bool GetBuildingInfoViewColor(ushort buildingId, ref Building building...
    method EnrichLocalizedCitizenStatus (line 93) | string EnrichLocalizedCitizenStatus(string ret, ref ExtCitizenInstance...
    method EnrichLocalizedCarStatus (line 101) | string EnrichLocalizedCarStatus(string ret, ref ExtCitizenInstance dri...
    method UpdateCitizenPathState (line 122) | ExtSoftPathState UpdateCitizenPathState(ushort citizenInstanceId, ref ...
    method UpdateCarPathState (line 142) | ExtSoftPathState UpdateCarPathState(ushort vehicleId, ref Vehicle vehi...
    method CitizenApproachingParkedCarSimulationStep (line 160) | ParkedCarApproachState CitizenApproachingParkedCarSimulationStep(ushor...
    method CitizenApproachingTargetSimulationStep (line 171) | bool CitizenApproachingTargetSimulationStep(ushort instanceId, ref Cit...
    method FindParkingSpaceForCitizen (line 188) | bool FindParkingSpaceForCitizen(Vector3 endPos, VehicleInfo vehicleInf...
    method TryMoveParkedVehicle (line 200) | bool TryMoveParkedVehicle(ushort parkedVehicleId, ref VehicleParked pa...
    method TrySpawnParkedPassengerCar (line 213) | bool TrySpawnParkedPassengerCar(uint citizenId, ushort homeId, Vector3...
    method TrySpawnParkedPassengerCarRoadSide (line 225) | bool TrySpawnParkedPassengerCarRoadSide(uint citizenId, Vector3 refPos...
    method TrySpawnParkedPassengerCarBuilding (line 238) | bool TrySpawnParkedPassengerCarBuilding(uint citizenId, ushort homeId,...
    method FindParkingSpaceInVicinity (line 254) | bool FindParkingSpaceInVicinity(Vector3 targetPos, VehicleInfo vehicle...
    method FindParkingSpaceRoadSideForVehiclePos (line 270) | bool FindParkingSpaceRoadSideForVehiclePos(VehicleInfo vehicleInfo, us...
    method FindParkingSpaceRoadSide (line 284) | bool FindParkingSpaceRoadSide(ushort ignoreParked, Vector3 refPos, flo...
    method FindParkingSpaceBuilding (line 300) | bool FindParkingSpaceBuilding(VehicleInfo vehicleInfo, ushort homeID, ...
    method FindParkingSpacePropAtBuilding (line 318) | bool FindParkingSpacePropAtBuilding(VehicleInfo vehicleInfo, ushort ho...

FILE: TLM/TLM/Manager/ICustomDataManager.cs
  type ICustomDataManager (line 7) | public interface ICustomDataManager<T> {
    method LoadData (line 9) | bool LoadData(T data);
    method SaveData (line 10) | T SaveData(ref bool success);

FILE: TLM/TLM/Manager/ICustomManager.cs
  type ICustomManager (line 7) | public interface ICustomManager {
    method OnBeforeLoadData (line 10) | void OnBeforeLoadData();
    method OnAfterLoadData (line 11) | void OnAfterLoadData();
    method OnBeforeSaveData (line 12) | void OnBeforeSaveData();
    method OnAfterSaveData (line 13) | void OnAfterSaveData();
    method OnLevelLoading (line 14) | void OnLevelLoading();
    method OnLevelUnloading (line 15) | void OnLevelUnloading();
    method PrintDebugInfo (line 16) | void PrintDebugInfo();

FILE: TLM/TLM/Manager/ICustomSegmentLightsManager.cs
  type ICustomSegmentLightsManager (line 10) | public interface ICustomSegmentLightsManager {
    method GetSegmentLights (line 12) | ICustomSegmentLights GetSegmentLights(ushort nodeId, ushort segmentId);
    method GetSegmentLights (line 13) | ICustomSegmentLights GetSegmentLights(ushort segmentId, bool startNode...
    method GetOrLiveSegmentLights (line 14) | ICustomSegmentLights GetOrLiveSegmentLights(ushort segmentId, bool sta...
    method AddNodeLights (line 15) | void AddNodeLights(ushort nodeId);
    method RemoveNodeLights (line 16) | void RemoveNodeLights(ushort nodeId);
    method RemoveSegmentLights (line 17) | void RemoveSegmentLights(ushort segmentId);
    method RemoveSegmentLight (line 18) | void RemoveSegmentLight(ushort segmentId, bool startNode);
    method IsSegmentLight (line 19) | bool IsSegmentLight(ushort segmentId, bool startNode);
    method SetLightMode (line 20) | void SetLightMode(ushort segmentId, bool startNode, ExtVehicleType veh...
    method ApplyLightModes (line 21) | bool ApplyLightModes(ushort segmentId, bool startNode, ICustomSegmentL...
    method SetSegmentLights (line 22) | bool SetSegmentLights(ushort nodeId, ushort segmentId, ICustomSegmentL...
    method ClockwiseIndexOfSegmentEnd (line 23) | short ClockwiseIndexOfSegmentEnd(ISegmentEndId endId);

FILE: TLM/TLM/Manager/IExtBuildingManager.cs
  type IExtBuildingManager (line 7) | public interface IExtBuildingManager {

FILE: TLM/TLM/Manager/IExtCitizenInstanceManager.cs
  type IExtCitizenInstanceManager (line 9) | public interface IExtCitizenInstanceManager {
    method ResetInstance (line 11) | void ResetInstance(ushort instanceId);
    method IsAtOutsideConnection (line 20) | bool IsAtOutsideConnection(ushort instanceId, ref CitizenInstance inst...

FILE: TLM/TLM/Manager/IExtCitizenManager.cs
  type IExtCitizenManager (line 7) | public interface IExtCitizenManager {
    method ResetCitizen (line 9) | void ResetCitizen(uint citizenId);
    method OnArriveAtDestination (line 16) | void OnArriveAtDestination(uint citizenId, ref Citizen citizen);

FILE: TLM/TLM/Manager/IFeatureManager.cs
  type IFeatureManager (line 10) | public interface IFeatureManager {
    method OnDisableFeature (line 14) | void OnDisableFeature();
    method OnEnableFeature (line 19) | void OnEnableFeature();

FILE: TLM/TLM/Manager/IGeometryManager.cs
  type GeometryUpdate (line 10) | public struct GeometryUpdate {
    method GeometryUpdate (line 15) | public GeometryUpdate(SegmentGeometry segmentGeometry) {
    method GeometryUpdate (line 21) | public GeometryUpdate(NodeGeometry nodeGeometry) {
    method GeometryUpdate (line 27) | public GeometryUpdate(SegmentEndReplacement replacement) {
  type IGeometryManager (line 34) | public interface IGeometryManager {
    method SimulationStep (line 36) | void SimulationStep(bool onylFirstPass=false);
    method OnUpdateSegment (line 37) | void OnUpdateSegment(SegmentGeometry geo);
    method OnSegmentEndReplacement (line 38) | void OnSegmentEndReplacement(SegmentEndReplacement replacement);
    method Subscribe (line 39) | IDisposable Subscribe(IObserver<GeometryUpdate> observer);
    method MarkAsUpdated (line 40) | void MarkAsUpdated(SegmentGeometry geometry, bool updateNodes = true);
    method MarkAsUpdated (line 41) | void MarkAsUpdated(NodeGeometry geometry, bool updateSegments = false);
    method MarkAllAsUpdated (line 42) | void MarkAllAsUpdated();

FILE: TLM/TLM/Manager/IJunctionRestrictionsManager.cs
  type IJunctionRestrictionsManager (line 8) | public interface IJunctionRestrictionsManager {
    method IsUturnAllowedConfigurable (line 16) | bool IsUturnAllowedConfigurable(ushort segmentId, bool startNode, ref ...
    method IsNearTurnOnRedAllowedConfigurable (line 25) | bool IsNearTurnOnRedAllowedConfigurable(ushort segmentId, bool startNo...
    method IsFarTurnOnRedAllowedConfigurable (line 34) | bool IsFarTurnOnRedAllowedConfigurable(ushort segmentId, bool startNod...
    method IsTurnOnRedAllowedConfigurable (line 44) | bool IsTurnOnRedAllowedConfigurable(bool near, ushort segmentId, bool ...
    method IsLaneChangingAllowedWhenGoingStraightConfigurable (line 53) | bool IsLaneChangingAllowedWhenGoingStraightConfigurable(ushort segment...
    method IsEnteringBlockedJunctionAllowedConfigurable (line 62) | bool IsEnteringBlockedJunctionAllowedConfigurable(ushort segmentId, bo...
    method IsPedestrianCrossingAllowedConfigurable (line 71) | bool IsPedestrianCrossingAllowedConfigurable(ushort segmentId, bool st...
    method GetDefaultUturnAllowed (line 80) | bool GetDefaultUturnAllowed(ushort segmentId, bool startNode, ref NetN...
    method GetDefaultNearTurnOnRedAllowed (line 89) | bool GetDefaultNearTurnOnRedAllowed(ushort segmentId, bool startNode, ...
    method GetDefaultFarTurnOnRedAllowed (line 98) | bool GetDefaultFarTurnOnRedAllowed(ushort segmentId, bool startNode, r...
    method GetDefaultTurnOnRedAllowed (line 108) | bool GetDefaultTurnOnRedAllowed(bool near, ushort segmentId, bool star...
    method GetDefaultLaneChangingAllowedWhenGoingStraight (line 117) | bool GetDefaultLaneChangingAllowedWhenGoingStraight(ushort segmentId, ...
    method GetDefaultEnteringBlockedJunctionAllowed (line 126) | bool GetDefaultEnteringBlockedJunctionAllowed(ushort segmentId, bool s...
    method GetDefaultPedestrianCrossingAllowed (line 135) | bool GetDefaultPedestrianCrossingAllowed(ushort segmentId, bool startN...
    method IsUturnAllowed (line 143) | bool IsUturnAllowed(ushort segmentId, bool startNode);
    method IsNearTurnOnRedAllowed (line 151) | bool IsNearTurnOnRedAllowed(ushort segmentId, bool startNode);
    method IsFarTurnOnRedAllowed (line 159) | bool IsFarTurnOnRedAllowed(ushort segmentId, bool startNode);
    method IsTurnOnRedAllowed (line 168) | bool IsTurnOnRedAllowed(bool near, ushort segmentId, bool startNode);
    method IsLaneChangingAllowedWhenGoingStraight (line 176) | bool IsLaneChangingAllowedWhenGoingStraight(ushort segmentId, bool sta...
    method IsEnteringBlockedJunctionAllowed (line 184) | bool IsEnteringBlockedJunctionAllowed(ushort segmentId, bool startNode);
    method IsPedestrianCrossingAllowed (line 192) | bool IsPedestrianCrossingAllowed(ushort segmentId, bool startNode);
    method GetUturnAllowed (line 200) | TernaryBool GetUturnAllowed(ushort segmentId, bool startNode);
    method GetNearTurnOnRedAllowed (line 208) | TernaryBool GetNearTurnOnRedAllowed(ushort segmentId, bool startNode);
    method GetFarTurnOnRedAllowed (line 216) | TernaryBool GetFarTurnOnRedAllowed(ushort segmentId, bool startNode);
    method GetTurnOnRedAllowed (line 225) | TernaryBool GetTurnOnRedAllowed(bool near, ushort segmentId, bool star...
    method GetLaneChangingAllowedWhenGoingStraight (line 233) | TernaryBool GetLaneChangingAllowedWhenGoingStraight(ushort segmentId, ...
    method GetEnteringBlockedJunctionAllowed (line 241) | TernaryBool GetEnteringBlockedJunctionAllowed(ushort segmentId, bool s...
    method GetPedestrianCrossingAllowed (line 249) | TernaryBool GetPedestrianCrossingAllowed(ushort segmentId, bool startN...
    method ToggleUturnAllowed (line 257) | bool ToggleUturnAllowed(ushort segmentId, bool startNode);
    method ToggleNearTurnOnRedAllowed (line 265) | bool ToggleNearTurnOnRedAllowed(ushort segmentId, bool startNode);
    method ToggleFarTurnOnRedAllowed (line 273) | bool ToggleFarTurnOnRedAllowed(ushort segmentId, bool startNode);
    method ToggleTurnOnRedAllowed (line 282) | bool ToggleTurnOnRedAllowed(bool near, ushort segmentId, bool startNode);
    method ToggleLaneChangingAllowedWhenGoingStraight (line 290) | bool ToggleLaneChangingAllowedWhenGoingStraight(ushort segmentId, bool...
    method ToggleEnteringBlockedJunctionAllowed (line 298) | bool ToggleEnteringBlockedJunctionAllowed(ushort segmentId, bool start...
    method TogglePedestrianCrossingAllowed (line 306) | bool TogglePedestrianCrossingAllowed(ushort segmentId, bool startNode);
    method SetUturnAllowed (line 315) | bool SetUturnAllowed(ushort segmentId, bool startNode, bool value);
    method SetNearTurnOnRedAllowed (line 324) | bool SetNearTurnOnRedAllowed(ushort segmentId, bool startNode, bool va...
    method SetFarTurnOnRedAllowed (line 333) | bool SetFarTurnOnRedAllowed(ushort segmentId, bool startNode, bool val...
    method SetTurnOnRedAllowed (line 343) | bool SetTurnOnRedAllowed(bool near, ushort segmentId, bool startNode, ...
    method SetLaneChangingAllowedWhenGoingStraight (line 352) | bool SetLaneChangingAllowedWhenGoingStraight(ushort segmentId, bool st...
    method SetEnteringBlockedJunctionAllowed (line 361) | bool SetEnteringBlockedJunctionAllowed(ushort segmentId, bool startNod...
    method SetPedestrianCrossingAllowed (line 370) | bool SetPedestrianCrossingAllowed(ushort segmentId, bool startNode, bo...
    method UpdateAllDefaults (line 375) | void UpdateAllDefaults();

FILE: TLM/TLM/Manager/ILaneArrowManager.cs
  type ILaneArrowManager (line 7) | public interface ILaneArrowManager {

FILE: TLM/TLM/Manager/ILaneConnectionManager.cs
  type ILaneConnectionManager (line 7) | public interface ILaneConnectionManager {
    method HasUturnConnections (line 16) | bool HasUturnConnections(ushort segmentId, bool startNode);

FILE: TLM/TLM/Manager/IManagerFactory.cs
  type IManagerFactory (line 8) | public interface IManagerFactory {

FILE: TLM/TLM/Manager/IOptionsManager.cs
  type IOptionsManager (line 10) | public interface IOptionsManager : ICustomDataManager<byte[]> {
    method MayPublishSegmentChanges (line 15) | bool MayPublishSegmentChanges();

FILE: TLM/TLM/Manager/IParkingRestrictionsManager.cs
  type IParkingRestrictionsManager (line 7) | public interface IParkingRestrictionsManager {

FILE: TLM/TLM/Manager/IRoutingManager.cs
  type LaneEndTransitionType (line 8) | public enum LaneEndTransitionType {
  type SegmentRoutingData (line 27) | public struct SegmentRoutingData {
    method ToString (line 32) | public override string ToString() {
    method Reset (line 40) | public void Reset() {
  type LaneEndRoutingData (line 47) | public struct LaneEndRoutingData {
    method ToString (line 51) | public override string ToString() {
    method Reset (line 58) | public void Reset() {
    method RemoveTransition (line 63) | public void RemoveTransition(uint laneId) {
    method AddTransitions (line 95) | public void AddTransitions(LaneTransitionData[] transitionsToAdd) {
    method AddTransition (line 110) | public void AddTransition(LaneTransitionData transition) {
  type LaneTransitionData (line 115) | public struct LaneTransitionData {
    method ToString (line 123) | public override string ToString() {
    method Set (line 134) | public void Set(uint laneId, byte laneIndex, LaneEndTransitionType typ...
    method Set (line 143) | public void Set(uint laneId, byte laneIndex, LaneEndTransitionType typ...
  type IRoutingManager (line 148) | public interface IRoutingManager {
    method SimulationStep (line 150) | void SimulationStep();
    method RequestFullRecalculation (line 151) | void RequestFullRecalculation();
    method RequestRecalculation (line 152) | void RequestRecalculation(ushort segmentId, bool propagate = true);

FILE: TLM/TLM/Manager/ISegmentEndManager.cs
  type ISegmentEndManager (line 10) | public interface ISegmentEndManager {
    method GetOrAddSegmentEnd (line 12) | ISegmentEnd GetOrAddSegmentEnd(ISegmentEndId endId);
    method GetOrAddSegmentEnd (line 13) | ISegmentEnd GetOrAddSegmentEnd(ushort segmentId, bool startNode);
    method GetSegmentEnd (line 14) | ISegmentEnd GetSegmentEnd(ISegmentEndId endId);
    method GetSegmentEnd (line 15) | ISegmentEnd GetSegmentEnd(ushort segmentId, bool startNode);
    method RemoveSegmentEnd (line 16) | void RemoveSegmentEnd(ISegmentEndId endId);
    method RemoveSegmentEnd (line 17) | void RemoveSegmentEnd(ushort segmentId, bool startNode);
    method RemoveSegmentEnds (line 18) | void RemoveSegmentEnds(ushort segmentId);
    method UpdateSegmentEnd (line 19) | bool UpdateSegmentEnd(ISegmentEndId endId);
    method UpdateSegmentEnd (line 20) | bool UpdateSegmentEnd(ushort segmentId, bool startNode);

FILE: TLM/TLM/Manager/ISpeedLimitManager.cs
  type ISpeedLimitManager (line 7) | public interface ISpeedLimitManager {
    method GetLockFreeGameSpeedLimit (line 17) | float GetLockFreeGameSpeedLimit(ushort segmentId, byte laneIndex, uint...

FILE: TLM/TLM/Manager/ITrafficLightManager.cs
  type UnableReason (line 7) | public enum UnableReason {
  type ITrafficLightManager (line 15) | public interface ITrafficLightManager {
    method AddTrafficLight (line 17) | bool AddTrafficLight(ushort nodeId, ref NetNode node);
    method AddTrafficLight (line 18) | bool AddTrafficLight(ushort nodeId, ref NetNode node, out UnableReason...
    method HasTrafficLight (line 19) | bool HasTrafficLight(ushort nodeId, ref NetNode node);
    method IsTrafficLightEnablable (line 20) | bool IsTrafficLightEnablable(ushort nodeId, ref NetNode node, out Unab...
    method IsTrafficLightToggleable (line 21) | bool IsTrafficLightToggleable(ushort nodeId, bool flag, ref NetNode no...
    method RemoveTrafficLight (line 22) | bool RemoveTrafficLight(ushort nodeId, ref NetNode node);
    method RemoveTrafficLight (line 23) | bool RemoveTrafficLight(ushort nodeId, ref NetNode node, out UnableRea...
    method SetTrafficLight (line 24) | bool SetTrafficLight(ushort nodeId, bool flag, ref NetNode node);
    method SetTrafficLight (line 25) | bool SetTrafficLight(ushort nodeId, bool flag, ref NetNode node, out U...
    method ToggleTrafficLight (line 26) | bool ToggleTrafficLight(ushort nodeId, ref NetNode node);
    method ToggleTrafficLight (line 27) | bool ToggleTrafficLight(ushort nodeId, ref NetNode node, out UnableRea...

FILE: TLM/TLM/Manager/ITrafficLightSimulationManager.cs
  type ITrafficLightSimulationManager (line 8) | public interface ITrafficLightSimulationManager {
    method SetUpManualTrafficLight (line 10) | bool SetUpManualTrafficLight(ushort nodeId);
    method SetUpTimedTrafficLight (line 11) | bool SetUpTimedTrafficLight(ushort nodeId, IList<ushort> nodeGroup);
    method HasActiveSimulation (line 12) | bool HasActiveSimulation(ushort nodeId);
    method HasActiveTimedSimulation (line 13) | bool HasActiveTimedSimulation(ushort nodeId);
    method HasSimulation (line 14) | bool HasSimulation(ushort nodeId);
    method HasManualSimulation (line 15) | bool HasManualSimulation(ushort nodeId);
    method HasTimedSimulation (line 16) | bool HasTimedSimulation(ushort nodeId);
    method RemoveNodeFromSimulation (line 17) | void RemoveNodeFromSimulation(ushort nodeId, bool destroyGroup, bool r...
    method SimulationStep (line 18) | void SimulationStep();

FILE: TLM/TLM/Manager/ITrafficMeasurementManager.cs
  type ITrafficMeasurementManager (line 7) | public interface ITrafficMeasurementManager {

FILE: TLM/TLM/Manager/ITrafficPriorityManager.cs
  type ITrafficPriorityManager (line 8) | public interface ITrafficPriorityManager {
    method HasPriority (line 22) | bool HasPriority(ushort vehicleId, ref Vehicle vehicle, ref PathUnit.P...
    method GetPrioritySign (line 24) | PriorityType GetPrioritySign(ushort segmentId, bool startNode);

FILE: TLM/TLM/Manager/ITurnOnRedManager.cs
  type ITurnOnRedManager (line 8) | public interface ITurnOnRedManager {
    method GetIndex (line 17) | int GetIndex(ushort segmentId, bool startNode);

FILE: TLM/TLM/Manager/IUtilityManager.cs
  type IUtilityManager (line 7) | public interface IUtilityManager {

FILE: TLM/TLM/Manager/IVehicleBehaviorManager.cs
  type IVehicleBehaviorManager (line 9) | public interface IVehicleBehaviorManager {
    method IsSpaceReservationAllowed (line 21) | bool IsSpaceReservationAllowed(ushort transitNodeId, PathUnit.Position...
    method IsRecklessDriver (line 30) | bool IsRecklessDriver(ushort vehicleId, ref Vehicle vehicleData);
    method FindBestLane (line 47) | int FindBestLane(ushort vehicleId, ref Vehicle vehicleData, ref Vehicl...
    method MayFindBestLane (line 56) | bool MayFindBestLane(ushort vehicleId, ref Vehicle vehicleData, ref Ve...
    method GetTimedVehicleRand (line 64) | uint GetTimedVehicleRand(ushort vehicleId);
    method GetStaticVehicleRand (line 72) | uint GetStaticVehicleRand(ushort vehicleId);
    method ApplyRealisticSpeeds (line 82) | float ApplyRealisticSpeeds(float speed, ushort vehicleId, ref VehicleS...
    method CalcMaxSpeed (line 95) | float CalcMaxSpeed(ushort vehicleId, ref VehicleState state, VehicleIn...

FILE: TLM/TLM/Manager/IVehicleRestrictionsManager.cs
  type VehicleRestrictionsMode (line 8) | public enum VehicleRestrictionsMode {
  type VehicleRestrictionsAggression (line 26) | public enum VehicleRestrictionsAggression {
  type IVehicleRestrictionsManager (line 45) | public interface IVehicleRestrictionsManager {
    method AddAllowedType (line 47) | void AddAllowedType(ushort segmentId, NetInfo segmentInfo, uint laneIn...
    method GetAllowedVehicleTypes (line 48) | ExtVehicleType GetAllowedVehicleTypes(ushort segmentId, ushort nodeId,...
    method GetAllowedVehicleTypes (line 49) | ExtVehicleType GetAllowedVehicleTypes(ushort segmentId, NetInfo segmen...
    method GetAllowedVehicleTypesAsDict (line 50) | IDictionary<byte, ExtVehicleType> GetAllowedVehicleTypesAsDict(ushort ...
    method GetAllowedVehicleTypesAsSet (line 51) | HashSet<ExtVehicleType> GetAllowedVehicleTypesAsSet(ushort segmentId, ...
    method GetBaseMask (line 52) | ExtVehicleType GetBaseMask(uint laneId, VehicleRestrictionsMode includ...
    method GetBaseMask (line 53) | ExtVehicleType GetBaseMask(NetInfo.Lane laneInfo, VehicleRestrictionsM...
    method GetDefaultAllowedVehicleTypes (line 54) | ExtVehicleType GetDefaultAllowedVehicleTypes(NetInfo.Lane laneInfo, Ve...
    method GetDefaultAllowedVehicleTypes (line 55) | ExtVehicleType GetDefaultAllowedVehicleTypes(ushort segmentId, NetInfo...
    method IsAllowed (line 56) | bool IsAllowed(ExtVehicleType? allowedTypes, ExtVehicleType vehicleType);
    method IsBicycleAllowed (line 57) | bool IsBicycleAllowed(ExtVehicleType? allowedTypes);
    method IsBlimpAllowed (line 58) | bool IsBlimpAllowed(ExtVehicleType? allowedTypes);
    method IsBusAllowed (line 59) | bool IsBusAllowed(ExtVehicleType? allowedTypes);
    method IsCableCarAllowed (line 60) | bool IsCableCarAllowed(ExtVehicleType? allowedTypes);
    method IsCargoTrainAllowed (line 61) | bool IsCargoTrainAllowed(ExtVehicleType? allowedTypes);
    method IsCargoTruckAllowed (line 62) | bool IsCargoTruckAllowed(ExtVehicleType? allowedTypes);
    method IsEmergencyAllowed (line 63) | bool IsEmergencyAllowed(ExtVehicleType? allowedTypes);
    method IsFerryAllowed (line 64) | bool IsFerryAllowed(ExtVehicleType? allowedTypes);
    method IsMonorailSegment (line 65) | bool IsMonorailSegment(NetInfo segmentInfo);
    method IsPassengerCarAllowed (line 66) | bool IsPassengerCarAllowed(ExtVehicleType? allowedTypes);
    method IsPassengerTrainAllowed (line 67) | bool IsPassengerTrainAllowed(ExtVehicleType? allowedTypes);
    method IsRailLane (line 68) | bool IsRailLane(NetInfo.Lane laneInfo);
    method IsRailSegment (line 69) | bool IsRailSegment(NetInfo segmentInfo);
    method IsRailVehicleAllowed (line 70) | bool IsRailVehicleAllowed(ExtVehicleType? allowedTypes);
    method IsRoadLane (line 71) | bool IsRoadLane(NetInfo.Lane laneInfo);
    method IsRoadSegment (line 72) | bool IsRoadSegment(NetInfo segmentInfo);
    method IsRoadVehicleAllowed (line 73) | bool IsRoadVehicleAllowed(ExtVehicleType? allowedTypes);
    method IsServiceAllowed (line 74) | bool IsServiceAllowed(ExtVehicleType? allowedTypes);
    method IsTaxiAllowed (line 75) | bool IsTaxiAllowed(ExtVehicleType? allowedTypes);
    method IsTramAllowed (line 76) | bool IsTramAllowed(ExtVehicleType? allowedTypes);
    method IsTramLane (line 77) | bool IsTramLane(NetInfo.Lane laneInfo);
    method LoadData (line 78) | bool LoadData(List<Configuration.LaneVehicleTypes> data);
    method NotifyStartEndNode (line 79) | void NotifyStartEndNode(ushort segmentId);
    method OnLevelUnloading (line 80) | void OnLevelUnloading();
    method RemoveAllowedType (line 81) | void RemoveAllowedType(ushort segmentId, NetInfo segmentInfo, uint lan...
    method SaveData (line 82) | List<Configuration.LaneVehicleTypes> SaveData(ref bool success);
    method ToggleAllowedType (line 83) | void ToggleAllowedType(ushort segmentId, NetInfo segmentInfo, uint lan...

FILE: TLM/TLM/Manager/IVehicleStateManager.cs
  type IVehicleStateManager (line 8) | public interface IVehicleStateManager {
    method SetNextVehicleIdOnSegment (line 12) | void SetNextVehicleIdOnSegment(ushort vehicleId, ushort nextVehicleId);
    method SetPreviousVehicleIdOnSegment (line 13) | void SetPreviousVehicleIdOnSegment(ushort vehicleId, ushort previousVe...

FILE: TLM/TLM/Manager/Impl/AdvancedParkingManager.cs
  class AdvancedParkingManager (line 20) | public class AdvancedParkingManager : AbstractFeatureManager, IAdvancedP...
    method AdvancedParkingManager (line 23) | static AdvancedParkingManager() {
    method OnDisableFeatureInternal (line 27) | protected override void OnDisableFeatureInternal() {
    method OnEnableFeatureInternal (line 55) | protected override void OnEnableFeatureInternal() {
    method UpdateCitizenPathState (line 59) | public ExtSoftPathState UpdateCitizenPathState(ushort citizenInstanceI...
    method UpdateCarPathState (line 165) | public ExtSoftPathState UpdateCarPathState(ushort vehicleId, ref Vehic...
    method CitizenApproachingParkedCarSimulationStep (line 303) | public ParkedCarApproachState CitizenApproachingParkedCarSimulationSte...
    method CitizenApproachingParkedCarSimulationStep (line 415) | protected void CitizenApproachingParkedCarSimulationStep(ushort instan...
    method CitizenApproachingParkedCarSimulationStep (line 434) | protected void CitizenApproachingParkedCarSimulationStep(ushort instan...
    method CitizenApproachingTargetSimulationStep (line 449) | public bool CitizenApproachingTargetSimulationStep(ushort instanceId, ...
    method OnCitizenPathFindSuccess (line 512) | protected ExtSoftPathState OnCitizenPathFindSuccess(ushort instanceId,...
    method OnCitizenPathFindFailure (line 878) | protected ExtSoftPathState OnCitizenPathFindFailure(ushort instanceId,...
    method OnCarPathFindFailure (line 1023) | protected ExtSoftPathState OnCarPathFindFailure(ushort vehicleId, ref ...
    method TryMoveParkedVehicle (line 1086) | public bool TryMoveParkedVehicle(ushort parkedVehicleId, ref VehiclePa...

FILE: TLM/TLM/Manager/Impl/CustomSegmentLightsManager.cs
  class CustomSegmentLightsManager (line 18) | public class CustomSegmentLightsManager : AbstractGeometryObservingManag...
    method CustomSegmentLightsManager (line 21) | static CustomSegmentLightsManager() {
    method InternalPrintDebugInfo (line 30) | protected override void InternalPrintDebugInfo() {
    method AddLiveSegmentLights (line 47) | public ICustomSegmentLights AddLiveSegmentLights(ushort segmentId, boo...
    method AddSegmentLights (line 84) | public ICustomSegmentLights AddSegmentLights(ushort segmentId, bool st...
    method SetSegmentLights (line 125) | public bool SetSegmentLights(ushort nodeId, ushort segmentId, ICustomS...
    method AddNodeLights (line 149) | public void AddNodeLights(ushort nodeId) {
    method RemoveNodeLights (line 166) | public void RemoveNodeLights(ushort nodeId) {
    method RemoveSegmentLights (line 183) | public void RemoveSegmentLights(ushort segmentId) {
    method RemoveSegmentLight (line 192) | public void RemoveSegmentLight(ushort segmentId, bool startNode) {
    method IsSegmentLight (line 219) | public bool IsSegmentLight(ushort segmentId, bool startNode) {
    method GetOrLiveSegmentLights (line 234) | public ICustomSegmentLights GetOrLiveSegmentLights(ushort segmentId, b...
    method GetSegmentLights (line 247) | public ICustomSegmentLights GetSegmentLights(ushort segmentId, bool st...
    method SetLightMode (line 264) | public void SetLightMode(ushort segmentId, bool startNode, ExtVehicleT...
    method ApplyLightModes (line 278) | public bool ApplyLightModes(ushort segmentId, bool startNode, ICustomS...
    method GetSegmentLights (line 297) | public ICustomSegmentLights GetSegmentLights(ushort nodeId, ushort seg...
    method HandleInvalidSegment (line 305) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method OnLevelUnloading (line 309) | public override void OnLevelUnloading() {
    method ClockwiseIndexOfSegmentEnd (line 314) | public short ClockwiseIndexOfSegmentEnd(ISegmentEndId endId) {

FILE: TLM/TLM/Manager/Impl/ExtBuildingManager.cs
  class ExtBuildingManager (line 15) | public class ExtBuildingManager : AbstractCustomManager, IExtBuildingMan...
    method ExtBuildingManager (line 18) | static ExtBuildingManager() {
    method ExtBuildingManager (line 27) | private ExtBuildingManager() {
    method InternalPrintDebugInfo (line 34) | protected override void InternalPrintDebugInfo() {
    method OnLevelUnloading (line 45) | public override void OnLevelUnloading() {

FILE: TLM/TLM/Manager/Impl/ExtCitizenInstanceManager.cs
  class ExtCitizenInstanceManager (line 16) | public class ExtCitizenInstanceManager : AbstractCustomManager, ICustomD...
    method InternalPrintDebugInfo (line 24) | protected override void InternalPrintDebugInfo() {
    method OnReleaseInstance (line 35) | internal void OnReleaseInstance(ushort instanceId) {
    method ResetInstance (line 39) | public void ResetInstance(ushort instanceId) {
    method ExtCitizenInstanceManager (line 43) | private ExtCitizenInstanceManager() {
    method OnLevelUnloading (line 50) | public override void OnLevelUnloading() {
    method Reset (line 55) | internal void Reset() {
    method LoadData (line 61) | public bool LoadData(List<Configuration.ExtCitizenInstanceData> data) {
    method SaveData (line 94) | public List<Configuration.ExtCitizenInstanceData> SaveData(ref bool su...
    method IsAtOutsideConnection (line 133) | public bool IsAtOutsideConnection(ushort instanceId, ref CitizenInstan...

FILE: TLM/TLM/Manager/Impl/ExtCitizenManager.cs
  class ExtCitizenManager (line 17) | public class ExtCitizenManager : AbstractCustomManager, ICustomDataManag...
    method InternalPrintDebugInfo (line 25) | protected override void InternalPrintDebugInfo() {
    method OnReleaseCitizen (line 36) | internal void OnReleaseCitizen(uint citizenId) {
    method OnArriveAtDestination (line 40) | public void OnArriveAtDestination(uint citizenId, ref Citizen citizen) {
    method ResetCitizen (line 67) | public void ResetCitizen(uint citizenId) {
    method ExtCitizenManager (line 71) | private ExtCitizenManager() {
    method OnLevelUnloading (line 78) | public override void OnLevelUnloading() {
    method Reset (line 83) | internal void Reset() {
    method LoadData (line 89) | public bool LoadData(List<Configuration.ExtCitizenData> data) {
    method SaveData (line 107) | public List<Configuration.ExtCitizenData> SaveData(ref bool success) {

FILE: TLM/TLM/Manager/Impl/GeometryManager.cs
  class GeometryManager (line 14) | public class GeometryManager : AbstractCustomManager, IGeometryManager {
    class GeometryUpdateObservable (line 17) | public class GeometryUpdateObservable : GenericObservable<GeometryUpda...
    method GeometryManager (line 28) | private GeometryManager() {
    method OnBeforeLoadData (line 37) | public override void OnBeforeLoadData() {
    method OnUpdateSegment (line 43) | public void OnUpdateSegment(SegmentGeometry geo) {
    method SimulationStep (line 47) | public void SimulationStep(bool onlyFirstPass=false) {
    method MarkAllAsUpdated (line 147) | public void MarkAllAsUpdated() {
    method MarkAsUpdated (line 156) | public void MarkAsUpdated(SegmentGeometry geometry, bool updateNodes =...
    method MarkAsUpdated (line 182) | public void MarkAsUpdated(NodeGeometry geometry, bool updateSegments =...
    method OnSegmentEndReplacement (line 212) | public void OnSegmentEndReplacement(NodeGeometry.SegmentEndReplacement...
    method Subscribe (line 227) | public IDisposable Subscribe(IObserver<GeometryUpdate> observer) {
    method NotifyObservers (line 235) | protected void NotifyObservers(GeometryUpdate geometryUpdate) {

FILE: TLM/TLM/Manager/Impl/JunctionRestrictionsManager.cs
  class JunctionRestrictionsManager (line 16) | public class JunctionRestrictionsManager : AbstractGeometryObservingMana...
    method JunctionRestrictionsManager (line 26) | private JunctionRestrictionsManager() {
    method AddInvalidSegmentEndFlags (line 31) | protected void AddInvalidSegmentEndFlags(ushort segmentId, bool startN...
    method HandleSegmentEndReplacement (line 39) | protected override void HandleSegmentEndReplacement(SegmentEndReplacem...
    method OnLevelLoading (line 60) | public override void OnLevelLoading() {
    method InternalPrintDebugInfo (line 71) | protected override void InternalPrintDebugInfo() {
    method MayHaveJunctionRestrictions (line 83) | public bool MayHaveJunctionRestrictions(ushort nodeId) {
    method HasJunctionRestrictions (line 99) | public bool HasJunctionRestrictions(ushort nodeId) {
    method RemoveJunctionRestrictions (line 126) | public void RemoveJunctionRestrictions(ushort nodeId) {
    method RemoveJunctionRestrictionsIfNecessary (line 143) | public void RemoveJunctionRestrictionsIfNecessary() {
    method RemoveJunctionRestrictionsIfNecessary (line 149) | public void RemoveJunctionRestrictionsIfNecessary(ushort nodeId) {
    method HandleInvalidSegment (line 155) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method HandleValidSegment (line 169) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method UpdateAllDefaults (line 173) | public void UpdateAllDefaults() {
    method UpdateDefaults (line 182) | protected void UpdateDefaults(SegmentGeometry geometry) {
    method IsUturnAllowedConfigurable (line 197) | public bool IsUturnAllowedConfigurable(ushort segmentId, bool startNod...
    method GetDefaultUturnAllowed (line 221) | public bool GetDefaultUturnAllowed(ushort segmentId, bool startNode, r...
    method IsUturnAllowed (line 249) | public bool IsUturnAllowed(ushort segmentId, bool startNode) {
    method IsNearTurnOnRedAllowedConfigurable (line 253) | public bool IsNearTurnOnRedAllowedConfigurable(ushort segmentId, bool ...
    method IsFarTurnOnRedAllowedConfigurable (line 257) | public bool IsFarTurnOnRedAllowedConfigurable(ushort segmentId, bool s...
    method IsTurnOnRedAllowedConfigurable (line 261) | public bool IsTurnOnRedAllowedConfigurable(bool near, ushort segmentId...
    method GetDefaultNearTurnOnRedAllowed (line 281) | public bool GetDefaultNearTurnOnRedAllowed(ushort segmentId, bool star...
    method GetDefaultFarTurnOnRedAllowed (line 285) | public bool GetDefaultFarTurnOnRedAllowed(ushort segmentId, bool start...
    method GetDefaultTurnOnRedAllowed (line 289) | public bool GetDefaultTurnOnRedAllowed(bool near, ushort segmentId, bo...
    method IsTurnOnRedAllowed (line 310) | public bool IsTurnOnRedAllowed(bool near, ushort segmentId, bool start...
    method IsNearTurnOnRedAllowed (line 316) | public bool IsNearTurnOnRedAllowed(ushort segmentId, bool startNode) {
    method IsFarTurnOnRedAllowed (line 320) | public bool IsFarTurnOnRedAllowed(ushort segmentId, bool startNode) {
    method IsLaneChangingAllowedWhenGoingStraightConfigurable (line 324) | public bool IsLaneChangingAllowedWhenGoingStraightConfigurable(ushort ...
    method GetDefaultLaneChangingAllowedWhenGoingStraight (line 349) | public bool GetDefaultLaneChangingAllowedWhenGoingStraight(ushort segm...
    method IsLaneChangingAllowedWhenGoingStraight (line 370) | public bool IsLaneChangingAllowedWhenGoingStraight(ushort segmentId, b...
    method IsEnteringBlockedJunctionAllowedConfigurable (line 374) | public bool IsEnteringBlockedJunctionAllowedConfigurable(ushort segmen...
    method GetDefaultEnteringBlockedJunctionAllowed (line 398) | public bool GetDefaultEnteringBlockedJunctionAllowed(ushort segmentId,...
    method IsEnteringBlockedJunctionAllowed (line 437) | public bool IsEnteringBlockedJunctionAllowed(ushort segmentId, bool st...
    method IsPedestrianCrossingAllowedConfigurable (line 442) | public bool IsPedestrianCrossingAllowedConfigurable(ushort segmentId, ...
    method GetDefaultPedestrianCrossingAllowed (line 456) | public bool GetDefaultPedestrianCrossingAllowed(ushort segmentId, bool...
    method IsPedestrianCrossingAllowed (line 477) | public bool IsPedestrianCrossingAllowed(ushort segmentId, bool startNo...
    method GetUturnAllowed (line 481) | public TernaryBool GetUturnAllowed(ushort segmentId, bool startNode) {
    method GetNearTurnOnRedAllowed (line 485) | public TernaryBool GetNearTurnOnRedAllowed(ushort segmentId, bool star...
    method GetFarTurnOnRedAllowed (line 489) | public TernaryBool GetFarTurnOnRedAllowed(ushort segmentId, bool start...
    method GetTurnOnRedAllowed (line 493) | public TernaryBool GetTurnOnRedAllowed(bool near, ushort segmentId, bo...
    method GetLaneChangingAllowedWhenGoingStraight (line 499) | public TernaryBool GetLaneChangingAllowedWhenGoingStraight(ushort segm...
    method GetEnteringBlockedJunctionAllowed (line 503) | public TernaryBool GetEnteringBlockedJunctionAllowed(ushort segmentId,...
    method GetPedestrianCrossingAllowed (line 507) | public TernaryBool GetPedestrianCrossingAllowed(ushort segmentId, bool...
    method ToggleUturnAllowed (line 511) | public bool ToggleUturnAllowed(ushort segmentId, bool startNode) {
    method ToggleNearTurnOnRedAllowed (line 515) | public bool ToggleNearTurnOnRedAllowed(ushort segmentId, bool startNod...
    method ToggleFarTurnOnRedAllowed (line 519) | public bool ToggleFarTurnOnRedAllowed(ushort segmentId, bool startNode) {
    method ToggleTurnOnRedAllowed (line 523) | public bool ToggleTurnOnRedAllowed(bool near, ushort segmentId, bool s...
    method ToggleLaneChangingAllowedWhenGoingStraight (line 527) | public bool ToggleLaneChangingAllowedWhenGoingStraight(ushort segmentI...
    method ToggleEnteringBlockedJunctionAllowed (line 531) | public bool ToggleEnteringBlockedJunctionAllowed(ushort segmentId, boo...
    method TogglePedestrianCrossingAllowed (line 535) | public bool TogglePedestrianCrossingAllowed(ushort segmentId, bool sta...
    method SetSegmentEndFlags (line 539) | private void SetSegmentEndFlags(ushort segmentId, bool startNode, Segm...
    method SetUturnAllowed (line 566) | public bool SetUturnAllowed(ushort segmentId, bool startNode, bool val...
    method SetNearTurnOnRedAllowed (line 585) | public bool SetNearTurnOnRedAllowed(ushort segmentId, bool startNode, ...
    method SetFarTurnOnRedAllowed (line 589) | public bool SetFarTurnOnRedAllowed(ushort segmentId, bool startNode, b...
    method SetTurnOnRedAllowed (line 593) | public bool SetTurnOnRedAllowed(bool near, ushort segmentId, bool star...
    method SetLaneChangingAllowedWhenGoingStraight (line 613) | public bool SetLaneChangingAllowedWhenGoingStraight(ushort segmentId, ...
    method SetEnteringBlockedJunctionAllowed (line 629) | public bool SetEnteringBlockedJunctionAllowed(ushort segmentId, bool s...
    method SetPedestrianCrossingAllowed (line 646) | public bool SetPedestrianCrossingAllowed(ushort segmentId, bool startN...
    method OnSegmentChange (line 662) | protected void OnSegmentChange(ushort segmentId, bool startNode, Segme...
    method OnLevelUnloading (line 675) | public override void OnLevelUnloading() {
    method LoadData (line 685) | public bool LoadData(List<Configuration.SegmentNodeConf> data) {
    method SaveData (line 777) | public List<Configuration.SegmentNodeConf> SaveData(ref bool success) {

FILE: TLM/TLM/Manager/Impl/LaneArrowManager.cs
  class LaneArrowManager (line 15) | public class LaneArrowManager : AbstractGeometryObservingManager, ICusto...
    method InternalPrintDebugInfo (line 22) | protected override void InternalPrintDebugInfo() {
    method GetFinalLaneArrows (line 28) | public LaneArrows GetFinalLaneArrows(uint laneId) {
    method SetLaneArrows (line 32) | public bool SetLaneArrows(uint laneId, LaneArrows flags, bool override...
    method ToggleLaneArrows (line 40) | public bool ToggleLaneArrows(uint laneId, bool startNode, LaneArrows f...
    method OnLaneChange (line 48) | protected void OnLaneChange(uint laneId) {
    method HandleInvalidSegment (line 59) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method HandleValidSegment (line 63) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method ApplyFlags (line 67) | public void ApplyFlags() {
    method OnBeforeSaveData (line 73) | public override void OnBeforeSaveData() {
    method OnAfterLoadData (line 78) | public override void OnAfterLoadData() {
    method LoadData (line 84) | [Obsolete]
    method SaveData (line 124) | [Obsolete]
    method LoadData (line 129) | public bool LoadData(List<Configuration.LaneArrowData> data) {
    method SaveData (line 148) | public List<Configuration.LaneArrowData> SaveData(ref bool success) {

FILE: TLM/TLM/Manager/Impl/LaneConnectionManager.cs
  class LaneConnectionManager (line 15) | public class LaneConnectionManager : AbstractGeometryObservingManager, I...
    method LaneConnectionManager (line 22) | static LaneConnectionManager() {
    method InternalPrintDebugInfo (line 26) | protected override void InternalPrintDebugInfo() {
    method AreLanesConnected (line 39) | public bool AreLanesConnected(uint sourceLaneId, uint targetLaneId, bo...
    method HasConnections (line 70) | public bool HasConnections(uint sourceLaneId, bool startNode) {
    method HasNodeConnections (line 85) | public bool HasNodeConnections(ushort nodeId) {
    method HasUturnConnections (line 104) | public bool HasUturnConnections(ushort segmentId, bool startNode) {
    method CountConnections (line 128) | internal int CountConnections(uint sourceLaneId, bool startNode) {
    method GetLaneConnections (line 147) | internal uint[] GetLaneConnections(uint laneId, bool startNode) {
    method RemoveLaneConnection (line 166) | internal bool RemoveLaneConnection(uint laneId1, uint laneId2, bool st...
    method RemoveLaneConnectionsFromNode (line 206) | internal void RemoveLaneConnectionsFromNode(ushort nodeId) {
    method RemoveLaneConnectionsFromSegment (line 223) | internal void RemoveLaneConnectionsFromSegment(ushort segmentId, bool ...
    method RemoveLaneConnections (line 253) | internal void RemoveLaneConnections(uint laneId, bool startNode, bool ...
    method AddLaneConnection (line 303) | internal bool AddLaneConnection(uint sourceLaneId, uint targetLaneId, ...
    method HandleInvalidSegment (line 343) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method HandleValidSegment (line 353) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method GetCommonNodeId (line 363) | internal void GetCommonNodeId(uint laneId1, uint laneId2, bool startNo...
    method GetLaneEndPoint (line 380) | internal bool GetLaneEndPoint(ushort segmentId, bool startNode, byte l...
    method FindLaneId (line 425) | private uint? FindLaneId(ushort segmentId, byte laneIndex) {
    method RecalculateLaneArrows (line 442) | private void RecalculateLaneArrows(uint laneId, ushort nodeId, bool st...
    method LoadData (line 627) | public bool LoadData(List<Configuration.LaneConnection> data) {
    method SaveData (line 651) | public List<Configuration.LaneConnection> SaveData(ref bool success) {

FILE: TLM/TLM/Manager/Impl/ManagerFactory.cs
  class ManagerFactory (line 8) | public class ManagerFactory : IManagerFactory {

FILE: TLM/TLM/Manager/Impl/OptionsManager.cs
  class OptionsManager (line 9) | public class OptionsManager : AbstractCustomManager, IOptionsManager {
    method InternalPrintDebugInfo (line 13) | protected override void InternalPrintDebugInfo() {
    method MayPublishSegmentChanges (line 19) | public bool MayPublishSegmentChanges() {
    method LoadData (line 23) | public bool LoadData(byte[] data) {
    method SaveData (line 195) | public byte[] SaveData(ref bool success) {

FILE: TLM/TLM/Manager/Impl/ParkingRestrictionsManager.cs
  class ParkingRestrictionsManager (line 10) | public class ParkingRestrictionsManager : AbstractGeometryObservingManag...
    method ParkingRestrictionsManager (line 18) | private ParkingRestrictionsManager() {
    method MayHaveParkingRestriction (line 22) | public bool MayHaveParkingRestriction(ushort segmentId) {
    method IsParkingAllowed (line 35) | public bool IsParkingAllowed(ushort segmentId, NetInfo.Direction final...
    method ToggleParkingAllowed (line 39) | public bool ToggleParkingAllowed(ushort segmentId, NetInfo.Direction f...
    method SetParkingAllowed (line 43) | public bool SetParkingAllowed(ushort segmentId, NetInfo.Direction fina...
    method HandleInvalidSegment (line 61) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method HandleValidSegment (line 66) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method GetDirIndex (line 73) | protected int GetDirIndex(NetInfo.Direction dir) {
    method OnBeforeLoadData (line 77) | public override void OnBeforeLoadData() {
    method LoadData (line 89) | public bool LoadData(List<Configuration.ParkingRestriction> data) {
    method SaveData (line 105) | public List<Configuration.ParkingRestriction> SaveData(ref bool succes...

FILE: TLM/TLM/Manager/Impl/RoutingManager.cs
  class RoutingManager (line 19) | public class RoutingManager : AbstractGeometryObservingManager, IRouting...
    method InternalPrintDebugInfo (line 53) | protected override void InternalPrintDebugInfo() {
    method RoutingManager (line 81) | private RoutingManager() {
    method SimulationStep (line 85) | public void SimulationStep() {
    method RequestFullRecalculation (line 112) | public void RequestFullRecalculation() {
    method RequestRecalculation (line 130) | public void RequestRecalculation(ushort segmentId, bool propagate = tr...
    method RecalculateAll (line 172) | protected void RecalculateAll() {
    method RecalculateSegment (line 187) | protected void RecalculateSegment(ushort segmentId) {
    method ResetIncomingHighwayLaneArrows (line 211) | protected void ResetIncomingHighwayLaneArrows(ushort segmentId) {
    method ResetRoutingData (line 247) | protected void ResetRoutingData(ushort segmentId) {
    method RecalculateSegmentRoutingData (line 270) | protected void RecalculateSegmentRoutingData(ushort segmentId) {
    method RecalculateLaneEndRoutingData (line 295) | protected void RecalculateLaneEndRoutingData(ushort segmentId, int lan...
    method ResetLaneRoutings (line 1262) | protected void ResetLaneRoutings(uint laneId, bool startNode) {
    method UpdateHighwayLaneArrows (line 1276) | private void UpdateHighwayLaneArrows(uint laneId, bool startNode, Arro...
    method GetLaneEndRoutingIndex (line 1310) | internal uint GetLaneEndRoutingIndex(uint laneId, bool startNode) {
    method CalcInnerSimilarLaneIndex (line 1314) | public int CalcInnerSimilarLaneIndex(ushort segmentId, int laneIndex) {
    method CalcInnerSimilarLaneIndex (line 1324) | public int CalcInnerSimilarLaneIndex(NetInfo.Lane laneInfo) {
    method CalcOuterSimilarLaneIndex (line 1329) | public int CalcOuterSimilarLaneIndex(ushort segmentId, int laneIndex) {
    method CalcOuterSimilarLaneIndex (line 1339) | public int CalcOuterSimilarLaneIndex(NetInfo.Lane laneInfo) {
    method FindLaneWithMaxOuterIndex (line 1344) | protected int FindLaneWithMaxOuterIndex(int[] indicesSortedByOuterInde...
    method FindLaneByOuterIndex (line 1348) | protected int FindLaneByOuterIndex(LaneTransitionData[] laneTransition...
    method FindLaneByInnerIndex (line 1358) | protected int FindLaneByInnerIndex(LaneTransitionData[] laneTransition...
    method IsOutgoingLane (line 1368) | protected bool IsOutgoingLane(ushort segmentId, bool startNode, int la...
    method IsIncomingLane (line 1372) | protected bool IsIncomingLane(ushort segmentId, bool startNode, int la...
    method IsIncomingOutgoingLane (line 1376) | protected bool IsIncomingOutgoingLane(ushort segmentId, bool startNode...
    method HandleInvalidSegment (line 1395) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method HandleValidSegment (line 1406) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method OnAfterLoadData (line 1417) | public override void OnAfterLoadData() {

FILE: TLM/TLM/Manager/Impl/SegmentEndManager.cs
  class SegmentEndManager (line 14) | public class SegmentEndManager : AbstractCustomManager, ISegmentEndManag...
    method SegmentEndManager (line 19) | private SegmentEndManager() {
    method InternalPrintDebugInfo (line 23) | protected override void InternalPrintDebugInfo() {
    method GetSegmentEnd (line 34) | public ISegmentEnd GetSegmentEnd(ISegmentEndId endId) {
    method GetSegmentEnd (line 38) | public ISegmentEnd GetSegmentEnd(ushort segmentId, bool startNode) {
    method GetOrAddSegmentEnd (line 42) | public ISegmentEnd GetOrAddSegmentEnd(ISegmentEndId endId) {
    method GetOrAddSegmentEnd (line 46) | public ISegmentEnd GetOrAddSegmentEnd(ushort segmentId, bool startNode) {
    method RemoveSegmentEnd (line 67) | public void RemoveSegmentEnd(ISegmentEndId endId) {
    method RemoveSegmentEnd (line 71) | public void RemoveSegmentEnd(ushort segmentId, bool startNode) {
    method RemoveSegmentEnds (line 81) | public void RemoveSegmentEnds(ushort segmentId) {
    method UpdateSegmentEnd (line 86) | public bool UpdateSegmentEnd(ISegmentEndId endId) {
    method UpdateSegmentEnd (line 90) | public bool UpdateSegmentEnd(ushort segmentId, bool startNode) {
    method GetIndex (line 153) | private int GetIndex(ushort segmentId, bool startNode) {
    method DestroySegmentEnd (line 165) | protected void DestroySegmentEnd(int index) {
    method OnLevelUnloading (line 173) | public override void OnLevelUnloading() {

FILE: TLM/TLM/Manager/Impl/SpeedLimitManager.cs
  class SpeedLimitManager (line 13) | public class SpeedLimitManager : AbstractGeometryObservingManager, ICust...
    method InternalPrintDebugInfo (line 27) | protected override void InternalPrintDebugInfo() {
    method SpeedLimitManager (line 35) | private SpeedLimitManager() {
    method MayHaveCustomSpeedLimits (line 65) | public bool MayHaveCustomSpeedLimits(ushort segmentId, ref NetSegment ...
    method MayHaveCustomSpeedLimits (line 78) | public bool MayHaveCustomSpeedLimits(NetInfo.Lane laneInfo) {
    method GetCustomSpeedLimit (line 90) | public ushort GetCustomSpeedLimit(ushort segmentId, NetInfo.Direction ...
    method GetAverageDefaultCustomSpeedLimit (line 134) | public ushort GetAverageDefaultCustomSpeedLimit(NetInfo segmentInfo, N...
    method GetAverageCustomSpeedLimit (line 162) | public ushort GetAverageCustomSpeedLimit(ushort segmentId, ref NetSegm...
    method GetCustomSpeedLimit (line 191) | public ushort GetCustomSpeedLimit(uint laneId) {
    method GetGameSpeedLimit (line 231) | public float GetGameSpeedLimit(uint laneId) {
    method GetLockFreeGameSpeedLimit (line 235) | public float GetLockFreeGameSpeedLimit(ushort segmentId, byte laneInde...
    method ToGameSpeedLimit (line 255) | public float ToGameSpeedLimit(ushort customSpeedLimit) {
    method LaneToCustomSpeedLimit (line 266) | public ushort LaneToCustomSpeedLimit(float laneSpeedLimit, bool roundT...
    method FixCurrentSpeedLimits (line 287) | public void FixCurrentSpeedLimits(NetInfo info) {
    method ClearCurrentSpeedLimits (line 322) | public void ClearCurrentSpeedLimits(NetInfo info) {
    method GetVanillaNetInfoSpeedLimit (line 358) | public ushort GetVanillaNetInfoSpeedLimit(NetInfo info, bool roundToSi...
    method GetCustomNetInfoSpeedLimitIndex (line 408) | public int GetCustomNetInfoSpeedLimitIndex(NetInfo info) {
    method SetCustomNetInfoSpeedLimitIndex (line 441) | public void SetCustomNetInfoSpeedLimitIndex(NetInfo info, int customSp...
    method UpdateNetInfoGameSpeedLimit (line 483) | private void UpdateNetInfoGameSpeedLimit(NetInfo info, float gameSpeed...
    method VehicleToCustomSpeed (line 520) | public ushort VehicleToCustomSpeed(float vehicleSpeed) {
    method SetSpeedLimit (line 533) | public bool SetSpeedLimit(ushort segmentId, uint laneIndex, NetInfo.La...
    method SetSpeedLimit (line 555) | public bool SetSpeedLimit(ushort segmentId, NetInfo.Direction finalDir...
    method GetCustomizableNetInfos (line 602) | public List<NetInfo> GetCustomizableNetInfos() {
    method OnBeforeLoadData (line 606) | public override void OnBeforeLoadData() {
    method HandleInvalidSegment (line 754) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method HandleValidSegment (line 769) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method LoadData (line 773) | public bool LoadData(List<Configuration.LaneSpeedLimit> data) {
    method SaveData (line 803) | List<Configuration.LaneSpeedLimit> ICustomDataManager<List<Configurati...
    method LoadData (line 818) | public bool LoadData(Dictionary<string, float> data) {
    method SaveData (line 835) | Dictionary<string, float> ICustomDataManager<Dictionary<string, float>...

FILE: TLM/TLM/Manager/Impl/TrafficLightManager.cs
  class TrafficLightManager (line 16) | public class TrafficLightManager : AbstractCustomManager, ICustomDataMan...
    method InternalPrintDebugInfo (line 19) | protected override void InternalPrintDebugInfo() {
    method SetTrafficLight (line 25) | public bool SetTrafficLight(ushort nodeId, bool flag, ref NetNode node) {
    method SetTrafficLight (line 30) | public bool SetTrafficLight(ushort nodeId, bool flag, ref NetNode node...
    method AddTrafficLight (line 73) | public bool AddTrafficLight(ushort nodeId, ref NetNode node) {
    method AddTrafficLight (line 78) | public bool AddTrafficLight(ushort nodeId, ref NetNode node, out Unabl...
    method RemoveTrafficLight (line 83) | public bool RemoveTrafficLight(ushort nodeId, ref NetNode node) {
    method RemoveTrafficLight (line 88) | public bool RemoveTrafficLight(ushort nodeId, ref NetNode node, out Un...
    method ToggleTrafficLight (line 92) | public bool ToggleTrafficLight(ushort nodeId, ref NetNode node) {
    method ToggleTrafficLight (line 96) | public bool ToggleTrafficLight(ushort nodeId, ref NetNode node, out Un...
    method IsTrafficLightToggleable (line 100) | public bool IsTrafficLightToggleable(ushort nodeId, bool flag, ref Net...
    method IsTrafficLightEnablable (line 165) | public bool IsTrafficLightEnablable(ushort nodeId, ref NetNode node, o...
    method HasTrafficLight (line 169) | public bool HasTrafficLight(ushort nodeId, ref NetNode node) {
    method LoadData (line 173) | [Obsolete]
    method SaveData (line 199) | [Obsolete]
    method LoadData (line 204) | public bool LoadData(List<Configuration.NodeTrafficLight> data) {
    method SaveData (line 228) | List<Configuration.NodeTrafficLight> ICustomDataManager<List<Configura...

FILE: TLM/TLM/Manager/Impl/TrafficLightSimulationManager.cs
  class TrafficLightSimulationManager (line 18) | public class TrafficLightSimulationManager : AbstractGeometryObservingMa...
    method TrafficLightSimulationManager (line 28) | private TrafficLightSimulationManager() {
    method InternalPrintDebugInfo (line 35) | protected override void InternalPrintDebugInfo() {
    method SimulationStep (line 46) | public void SimulationStep() {
    method SetUpManualTrafficLight (line 70) | public bool SetUpManualTrafficLight(ushort nodeId) {
    method SetUpTimedTrafficLight (line 78) | public bool SetUpTimedTrafficLight(ushort nodeId, IList<ushort> nodeGr...
    method RemoveNodeFromSimulation (line 91) | public void RemoveNodeFromSimulation(ushort nodeId, bool destroyGroup,...
    method HasSimulation (line 139) | public bool HasSimulation(ushort nodeId) {
    method HasManualSimulation (line 143) | public bool HasManualSimulation(ushort nodeId) {
    method HasTimedSimulation (line 147) | public bool HasTimedSimulation(ushort nodeId) {
    method HasActiveTimedSimulation (line 151) | public bool HasActiveTimedSimulation(ushort nodeId) {
    method HasActiveSimulation (line 155) | public bool HasActiveSimulation(ushort nodeId) {
    method RemoveNodeFromSimulation (line 159) | private void RemoveNodeFromSimulation(ushort nodeId) {
    method OnLevelUnloading (line 167) | public override void OnLevelUnloading() {
    method HandleInvalidNode (line 174) | protected override void HandleInvalidNode(NodeGeometry geometry) {
    method HandleValidNode (line 178) | protected override void HandleValidNode(NodeGeometry geometry) {
    method LoadData (line 209) | public bool LoadData(List<Configuration.TimedTrafficLights> data) {
    method SaveData (line 359) | public List<Configuration.TimedTrafficLights> SaveData(ref bool succes...

FILE: TLM/TLM/Manager/Impl/TrafficMeasurementManager.cs
  class TrafficMeasurementManager (line 13) | public class TrafficMeasurementManager : AbstractCustomManager, ITraffic...
    type LaneTrafficData (line 22) | public struct LaneTrafficData {
      method ToString (line 48) | public override string ToString() {
    type SegmentDirTrafficData (line 60) | public struct SegmentDirTrafficData {
      method ToString (line 63) | public override string ToString() {
    method TrafficMeasurementManager (line 83) | private TrafficMeasurementManager() {
    method InternalPrintDebugInfo (line 93) | protected override void InternalPrintDebugInfo() {
    method CalcLaneRelativeMeanSpeed (line 120) | public ushort CalcLaneRelativeMeanSpeed(ushort segmentId, byte laneInd...
    method SimulationStep (line 148) | public void SimulationStep(ushort segmentId, ref NetSegment segment) {
    method GetLaneTrafficData (line 226) | public bool GetLaneTrafficData(ushort segmentId, byte laneIndex, out L...
    method DestroySegmentStats (line 236) | public void DestroySegmentStats(ushort segmentId) {
    method ResetTrafficStats (line 249) | public void ResetTrafficStats() {
    method AddTraffic (line 255) | public void AddTraffic(ushort segmentId, byte laneIndex, ushort speed) {
    method GetDirIndex (line 263) | internal int GetDirIndex(ushort segmentId, NetInfo.Direction dir) {
    method GetDirIndex (line 267) | internal int GetDirIndex(NetInfo.Direction dir) {
    method OnLevelUnloading (line 271) | public override void OnLevelUnloading() {

FILE: TLM/TLM/Manager/Impl/TrafficPriorityManager.cs
  class TrafficPriorityManager (line 18) | public class TrafficPriorityManager : AbstractGeometryObservingManager, ...
    type UnableReason (line 21) | public enum UnableReason {
    method TrafficPriorityManager (line 36) | private TrafficPriorityManager() {
    method InternalPrintDebugInfo (line 41) | protected override void InternalPrintDebugInfo() {
    method AddInvalidPrioritySegment (line 52) | protected void AddInvalidPrioritySegment(ushort segmentId, ref Priorit...
    method MayNodeHavePrioritySigns (line 56) | public bool MayNodeHavePrioritySigns(ushort nodeId) {
    method MayNodeHavePrioritySigns (line 61) | public bool MayNodeHavePrioritySigns(ushort nodeId, out UnableReason r...
    method MaySegmentHavePrioritySign (line 90) | public bool MaySegmentHavePrioritySign(ushort segmentId, bool startNod...
    method MaySegmentHavePrioritySign (line 95) | public bool MaySegmentHavePrioritySign(ushort segmentId, bool startNod...
    method MaySegmentHavePrioritySign (line 139) | public bool MaySegmentHavePrioritySign(ushort segmentId) {
    method MaySegmentHavePrioritySign (line 144) | public bool MaySegmentHavePrioritySign(ushort segmentId, out UnableRea...
    method HasSegmentPrioritySign (line 169) | public bool HasSegmentPrioritySign(ushort segmentId) {
    method HasSegmentPrioritySign (line 173) | public bool HasSegmentPrioritySign(ushort segmentId, bool startNode) {
    method HasNodePrioritySign (line 177) | public bool HasNodePrioritySign(ushort nodeId) {
    method SetPrioritySign (line 197) | public bool SetPrioritySign(ushort segmentId, bool startNode, Priority...
    method SetPrioritySign (line 202) | public bool SetPrioritySign(ushort segmentId, bool startNode, Priority...
    method RemovePrioritySignsFromNode (line 251) | public void RemovePrioritySignsFromNode(ushort nodeId) {
    method RemovePrioritySignsFromSegment (line 265) | public void RemovePrioritySignsFromSegment(ushort segmentId) {
    method RemovePrioritySignFromSegmentEnd (line 277) | public void RemovePrioritySignFromSegmentEnd(ushort segmentId, bool st...
    method GetPrioritySign (line 294) | public PriorityType GetPrioritySign(ushort segmentId, bool startNode) {
    method CountPrioritySignsAtNode (line 298) | public byte CountPrioritySignsAtNode(ushort nodeId, PriorityType sign) {
    method HasPriority (line 318) | public bool HasPriority(ushort vehicleId, ref Vehicle vehicle, ref Pat...
    method IsConflictingVehicle (line 485) | private bool IsConflictingVehicle(bool debug, Vector3 transitNodePos, ...
    method HasVehiclePriority (line 658) | private bool HasVehiclePriority(bool debug, ushort vehicleId, ref Vehi...
    method DetectCollision (line 805) | public bool DetectCollision(bool debug, ref PathUnit.Position curPos, ...
    method HasPriorityOnSameLevel (line 972) | public bool HasPriorityOnSameLevel(bool debug, ArrowDirection targetTo...
    method IsLaneOrderConflictFree (line 1017) | public bool IsLaneOrderConflictFree(bool debug, ushort segmentId, usho...
    method HandleInvalidSegment (line 1048) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method HandleValidSegment (line 1055) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method HandleSegmentEndReplacement (line 1069) | protected override void HandleSegmentEndReplacement(NodeGeometry.Segme...
    method UpdateNode (line 1093) | protected void UpdateNode(ushort nodeId) {
    method OnLevelUnloading (line 1101) | public override void OnLevelUnloading() {
    method LoadData (line 1111) | [Obsolete]
    method SaveData (line 1152) | [Obsolete]
    method LoadData (line 1157) | public bool LoadData(List<Configuration.PrioritySegment> data) {
    method SaveData (line 1190) | List<Configuration.PrioritySegment> ICustomDataManager<List<Configurat...

FILE: TLM/TLM/Manager/Impl/TurnOnRedManager.cs
  class TurnOnRedManager (line 16) | public class TurnOnRedManager : AbstractGeometryObservingManager, ITurnO...
    method TurnOnRedManager (line 21) | private TurnOnRedManager() {
    method InternalPrintDebugInfo (line 25) | protected override void InternalPrintDebugInfo() {
    method HandleValidSegment (line 33) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method HandleInvalidSegment (line 37) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method UpdateSegment (line 41) | protected void UpdateSegment(SegmentGeometry geometry) {
    method UpdateSegmentEnd (line 61) | protected void UpdateSegmentEnd(SegmentEndGeometry endGeo) {
    method ResetSegment (line 200) | protected void ResetSegment(ushort segmentId) {
    method OnBeforeLoadData (line 205) | public override void OnBeforeLoadData() {
    method OnLevelUnloading (line 217) | public override void OnLevelUnloading() {
    method GetIndex (line 224) | public int GetIndex(ushort segmentId, bool startNode) {

FILE: TLM/TLM/Manager/Impl/UtilityManager.cs
  class UtilityManager (line 15) | public class UtilityManager : AbstractCustomManager, IUtilityManager {
    method UtilityManager (line 18) | static UtilityManager() {
    method ClearTraffic (line 22) | public void ClearTraffic() {
    method RemoveParkedVehicles (line 40) | public void RemoveParkedVehicles() {
    method PrintAllDebugInfo (line 56) | public void PrintAllDebugInfo() {
    method ResetStuckEntities (line 93) | public void ResetStuckEntities() {

FILE: TLM/TLM/Manager/Impl/VehicleBehaviorManager.cs
  class VehicleBehaviorManager (line 22) | public class VehicleBehaviorManager : AbstractCustomManager, IVehicleBeh...
    method VehicleBehaviorManager (line 47) | private VehicleBehaviorManager() {
    method IsSpaceReservationAllowed (line 51) | public bool IsSpaceReservationAllowed(ushort transitNodeId, PathUnit.P...
    method MayChangeSegment (line 92) | public bool MayChangeSegment(ushort frontVehicleId, ref Vehicle vehicl...
    method MayChangeSegment (line 96) | protected bool MayChangeSegment(ushort frontVehicleId, ref VehicleStat...
    method MayChangeSegment (line 614) | public bool MayChangeSegment(ushort frontVehicleId, ref Vehicle vehicl...
    method MustCheckSpace (line 627) | protected bool MustCheckSpace(ushort segmentId, bool startNode, ref Ne...
    method MayDespawn (line 642) | public bool MayDespawn(ref Vehicle vehicleData) {
    method CalcMaxSpeed (line 646) | public float CalcMaxSpeed(ushort vehicleId, ref VehicleState state, Ve...
    method GetStaticVehicleRand (line 692) | public uint GetStaticVehicleRand(ushort vehicleId) {
    method GetTimedVehicleRand (line 696) | public uint GetTimedVehicleRand(ushort vehicleId) {
    method ApplyRealisticSpeeds (line 707) | public float ApplyRealisticSpeeds(float speed, ushort vehicleId, ref V...
    method IsRecklessDriver (line 723) | public bool IsRecklessDriver(ushort vehicleId, ref Vehicle vehicleData) {
    method FindBestLane (line 740) | public int FindBestLane(ushort vehicleId, ref Vehicle vehicleData, ref...
    method MayFindBestLane (line 1459) | public bool MayFindBestLane(ushort vehicleId, ref Vehicle vehicleData,...

FILE: TLM/TLM/Manager/Impl/VehicleRestrictionsManager.cs
  class VehicleRestrictionsManager (line 13) | public class VehicleRestrictionsManager : AbstractGeometryObservingManag...
    method VehicleRestrictionsManager (line 21) | private VehicleRestrictionsManager() {
    method InternalPrintDebugInfo (line 25) | protected override void InternalPrintDebugInfo() {
    method GetAllowedVehicleTypes (line 42) | [Obsolete]
    method GetAllowedVehicleTypesAsSet (line 57) | [Obsolete]
    method GetAllowedVehicleTypesAsDict (line 69) | public IDictionary<byte, ExtVehicleType> GetAllowedVehicleTypesAsDict(...
    method GetAllowedVehicleTypes (line 111) | public ExtVehicleType GetAllowedVehicleTypes(ushort segmentId, NetInfo...
    method GetDefaultAllowedVehicleTypes (line 128) | public ExtVehicleType GetDefaultAllowedVehicleTypes(ushort segmentId, ...
    method GetDefaultAllowedVehicleTypes (line 158) | public ExtVehicleType GetDefaultAllowedVehicleTypes(NetInfo.Lane laneI...
    method GetDefaultAllowedVehicleTypes (line 197) | internal ExtVehicleType GetDefaultAllowedVehicleTypes(uint laneId, Veh...
    method SetAllowedVehicleTypes (line 228) | internal bool SetAllowedVehicleTypes(ushort segmentId, NetInfo segment...
    method AddAllowedType (line 258) | public void AddAllowedType(ushort segmentId, NetInfo segmentInfo, uint...
    method RemoveAllowedType (line 288) | public void RemoveAllowedType(ushort segmentId, NetInfo segmentInfo, u...
    method ToggleAllowedType (line 309) | public void ToggleAllowedType(ushort segmentId, NetInfo segmentInfo, u...
    method HasSegmentRestrictions (line 316) | public bool HasSegmentRestrictions(ushort segmentId) { // TODO clean u...
    method MayUseLane (line 341) | public bool MayUseLane(ExtVehicleType type, ushort segmentId, byte lan...
    method GetBaseMask (line 368) | public ExtVehicleType GetBaseMask(NetInfo.Lane laneInfo, VehicleRestri...
    method GetBaseMask (line 377) | public ExtVehicleType GetBaseMask(uint laneId, VehicleRestrictionsMode...
    method IsAllowed (line 399) | public bool IsAllowed(ExtVehicleType? allowedTypes, ExtVehicleType veh...
    method IsBicycleAllowed (line 403) | public bool IsBicycleAllowed(ExtVehicleType? allowedTypes) {
    method IsBusAllowed (line 407) | public bool IsBusAllowed(ExtVehicleType? allowedTypes) {
    method IsCargoTrainAllowed (line 411) | public bool IsCargoTrainAllowed(ExtVehicleType? allowedTypes) {
    method IsCargoTruckAllowed (line 415) | public bool IsCargoTruckAllowed(ExtVehicleType? allowedTypes) {
    method IsEmergencyAllowed (line 419) | public bool IsEmergencyAllowed(ExtVehicleType? allowedTypes) {
    method IsPassengerCarAllowed (line 423) | public bool IsPassengerCarAllowed(ExtVehicleType? allowedTypes) {
    method IsPassengerTrainAllowed (line 427) | public bool IsPassengerTrainAllowed(ExtVehicleType? allowedTypes) {
    method IsServiceAllowed (line 431) | public bool IsServiceAllowed(ExtVehicleType? allowedTypes) {
    method IsTaxiAllowed (line 435) | public bool IsTaxiAllowed(ExtVehicleType? allowedTypes) {
    method IsTramAllowed (line 439) | public bool IsTramAllowed(ExtVehicleType? allowedTypes) {
    method IsBlimpAllowed (line 443) | public bool IsBlimpAllowed(ExtVehicleType? allowedTypes) {
    method IsCableCarAllowed (line 447) | public bool IsCableCarAllowed(ExtVehicleType? allowedTypes) {
    method IsFerryAllowed (line 451) | public bool IsFerryAllowed(ExtVehicleType? allowedTypes) {
    method IsRailVehicleAllowed (line 455) | public bool IsRailVehicleAllowed(ExtVehicleType? allowedTypes) {
    method IsRoadVehicleAllowed (line 459) | public bool IsRoadVehicleAllowed(ExtVehicleType? allowedTypes) {
    method IsRailLane (line 463) | public bool IsRailLane(NetInfo.Lane laneInfo) {
    method IsRoadLane (line 467) | public bool IsRoadLane(NetInfo.Lane laneInfo) {
    method IsTramLane (line 471) | public bool IsTramLane(NetInfo.Lane laneInfo) {
    method IsRailSegment (line 475) | public bool IsRailSegment(NetInfo segmentInfo) {
    method IsRoadSegment (line 480) | public bool IsRoadSegment(NetInfo segmentInfo) {
    method IsMonorailSegment (line 485) | public bool IsMonorailSegment(NetInfo segmentInfo) {
    method ClearCache (line 490) | internal void ClearCache(ushort segmentId) {
    method ClearCache (line 496) | internal void ClearCache() {
    method NotifyStartEndNode (line 500) | public void NotifyStartEndNode(ushort segmentId) {
    method HandleInvalidSegment (line 513) | protected override void HandleInvalidSegment(SegmentGeometry geometry) {
    method HandleValidSegment (line 518) | protected override void HandleValidSegment(SegmentGeometry geometry) {
    method OnLevelUnloading (line 522) | public override void OnLevelUnloading() {
    method LoadData (line 527) | public bool LoadData(List<Configuration.LaneVehicleTypes> data) {
    method SaveData (line 552) | public List<Configuration.LaneVehicleTypes> SaveData(ref bool success) {

FILE: TLM/TLM/Manager/Impl/VehicleStateManager.cs
  class VehicleStateManager (line 14) | public class VehicleStateManager : AbstractCustomManager, IVehicleStateM...
    method VehicleStateManager (line 24) | static VehicleStateManager() {
    method InternalPrintDebugInfo (line 28) | protected override void InternalPrintDebugInfo() {
    method VehicleStateManager (line 39) | private VehicleStateManager() {
    method LogTraffic (line 46) | internal void LogTraffic(ushort vehicleId) {
    method LogTraffic (line 50) | protected void LogTraffic(ushort vehicleId, ref VehicleState state) {
    method OnCreateVehicle (line 70) | internal void OnCreateVehicle(ushort vehicleId, ref Vehicle vehicleDat...
    method OnStartPathFind (line 88) | internal ExtVehicleType OnStartPathFind(ushort vehicleId, ref Vehicle ...
    method OnSpawnVehicle (line 129) | internal void OnSpawnVehicle(ushort vehicleId, ref Vehicle vehicleData) {
    method SetNextVehicleIdOnSegment (line 150) | public void SetNextVehicleIdOnSegment(ushort vehicleId, ushort nextVeh...
    method SetPreviousVehicleIdOnSegment (line 154) | public void SetPreviousVehicleIdOnSegment(ushort vehicleId, ushort pre...
    method UpdateVehiclePosition (line 158) | internal void UpdateVehiclePosition(ushort vehicleId, ref Vehicle vehi...
    method UpdateVehiclePosition (line 166) | protected void UpdateVehiclePosition(ref Vehicle vehicleData, ref Vehi...
    method OnDespawnVehicle (line 200) | internal void OnDespawnVehicle(ushort vehicleId, ref Vehicle vehicleDa...
    method OnReleaseVehicle (line 232) | internal void OnReleaseVehicle(ushort vehicleId, ref Vehicle vehicleDa...
    method InitAllVehicles (line 254) | internal void InitAllVehicles() {
    method GetFrontVehicleId (line 281) | public ushort GetFrontVehicleId(ushort vehicleId, ref Vehicle vehicleD...
    method OnLevelUnloading (line 293) | public override void OnLevelUnloading() {
    method OnAfterLoadData (line 300) | public override void OnAfterLoadData() {

FILE: TLM/TLM/PrintTransportLines.cs
  class PrintTransportLines (line 9) | public class PrintTransportLines {
    method run (line 11) | public void run() {

FILE: TLM/TLM/State/ConfigData/AdvancedVehicleAI.cs
  class AdvancedVehicleAI (line 7) | public class AdvancedVehicleAI {

FILE: TLM/TLM/State/ConfigData/Debug.cs
  class Debug (line 10) | public class Debug {

FILE: TLM/TLM/State/ConfigData/DynamicLaneSelection.cs
  class DynamicLaneSelection (line 7) | public class DynamicLaneSelection {

FILE: TLM/TLM/State/ConfigData/Main.cs
  class Main (line 8) | public class Main {
    method AddDisplayedTutorialMessage (line 53) | public void AddDisplayedTutorialMessage(string messageKey) {

FILE: TLM/TLM/State/ConfigData/ParkingAI.cs
  class ParkingAI (line 7) | public class ParkingAI {

FILE: TLM/TLM/State/ConfigData/PathFinding.cs
  class PathFinding (line 7) | public class PathFinding {

FILE: TLM/TLM/State/ConfigData/PriorityRules.cs
  class PriorityRules (line 7) | public class PriorityRules {

FILE: TLM/TLM/State/ConfigData/TimedTrafficLights.cs
  class TimedTrafficLights (line 8) | public class TimedTrafficLights {

FILE: TLM/TLM/State/Configuration.cs
  class Configuration (line 10) | [Serializable]
    class LaneSpeedLimit (line 12) | [Serializable]
      method LaneSpeedLimit (line 17) | public LaneSpeedLimit(uint laneId, ushort speedLimit) {
    class LaneVehicleTypes (line 23) | [Serializable]
      method LaneVehicleTypes (line 28) | public LaneVehicleTypes(uint laneId, Traffic.ExtVehicleType vehicleT...
    class TimedTrafficLights (line 34) | [Serializable]
    class TimedTrafficLightsStep (line 43) | [Serializable]
    class CustomSegmentLights (line 52) | [Serializable]
    class CustomSegmentLight (line 61) | [Serializable]
    class SegmentNodeConf (line 71) | [Serializable]
      method SegmentNodeConf (line 77) | public SegmentNodeConf(ushort segmentId) {
    class ParkingRestriction (line 82) | [Serializable]
      method ParkingRestriction (line 88) | public ParkingRestriction(ushort segmentId) {
    class SegmentNodeFlags (line 95) | [Serializable]
      method IsDefault (line 104) | public bool IsDefault() {
      method ToString (line 115) | public override string ToString() {
    class LaneConnection (line 120) | [Serializable]
      method LaneConnection (line 126) | public LaneConnection(uint lowerLaneId, uint higherLaneId, bool lowe...
    class LaneArrowData (line 135) | [Serializable]
      method LaneArrowData (line 140) | public LaneArrowData(uint laneId, uint arrows) {
    class PrioritySegment (line 146) | [Serializable]
      method PrioritySegment (line 152) | public PrioritySegment(ushort segmentId, ushort nodeId, int priority...
    class NodeTrafficLight (line 159) | [Serializable]
      method NodeTrafficLight (line 164) | public NodeTrafficLight(ushort nodeId, bool trafficLight) {
    class ExtCitizenInstanceData (line 170) | [Serializable]
      method ExtCitizenInstanceData (line 184) | public ExtCitizenInstanceData(uint instanceId) {
    class ExtCitizenData (line 199) | [Serializable]
      method ExtCitizenData (line 204) | public ExtCitizenData(uint citizenId) {

FILE: TLM/TLM/State/Flags.cs
  class Flags (line 16) | [Obsolete]
    type LaneArrows (line 18) | [Flags]
    type LaneArrowChangeResult (line 30) | public enum LaneArrowChangeResult {
    method PrintDebugInfo (line 71) | internal static void PrintDebugInfo() {
    method mayHaveTrafficLight (line 143) | [Obsolete]
    method setNodeTrafficLight (line 175) | [Obsolete]
    method isNodeTrafficLight (line 208) | [Obsolete]
    method RemoveSingleLaneConnection (line 226) | private static bool RemoveSingleLaneConnection(uint sourceLaneId, uint...
    method RemoveLaneConnection (line 274) | internal static bool RemoveLaneConnection(uint lane1Id, uint lane2Id, ...
    method RemoveLaneConnections (line 324) | internal static void RemoveLaneConnections(uint laneId, bool? startNod...
    method AddLaneConnection (line 379) | internal static bool AddLaneConnection(uint lane1Id, uint lane2Id, boo...
    method CreateLaneConnection (line 416) | private static void CreateLaneConnection(uint sourceLaneId, uint targe...
    method CheckLane (line 434) | internal static bool CheckLane(uint laneId) { // TODO refactor
    method setLaneSpeedLimit (line 448) | public static void setLaneSpeedLimit(uint laneId, ushort? speedLimit) {
    method removeLaneSpeedLimit (line 467) | public static void removeLaneSpeedLimit(uint laneId) {
    method setLaneSpeedLimit (line 471) | public static void setLaneSpeedLimit(ushort segmentId, uint laneIndex,...
    method setLaneSpeedLimit (line 492) | public static void setLaneSpeedLimit(ushort segmentId, uint laneIndex,...
    method setLaneAllowedVehicleTypes (line 538) | public static void setLaneAllowedVehicleTypes(uint laneId, ExtVehicleT...
    method setLaneAllowedVehicleTypes (line 563) | public static void setLaneAllowedVehicleTypes(ushort segmentId, uint l...
    method resetSegmentVehicleRestrictions (line 592) | public static void resetSegmentVehicleRestrictions(ushort segmentId) {
    method resetSegmentArrowFlags (line 601) | public static void resetSegmentArrowFlags(ushort segmentId) {
    method setLaneArrowFlags (line 624) | public static bool setLaneArrowFlags(uint laneId, LaneArrows flags, bo...
    method setHighwayLaneArrowFlags (line 658) | public static void setHighwayLaneArrowFlags(uint laneId, LaneArrows fl...
    method toggleLaneArrowFlags (line 671) | public static bool toggleLaneArrowFlags(uint laneId, bool startNode, L...
    method mayHaveLaneArrows (line 707) | internal static bool mayHaveLaneArrows(uint laneId, bool? startNode=nu...
    method getLaneSpeedLimit (line 748) | public static ushort? getLaneSpeedLimit(uint laneId) {
    method getAllLaneSpeedLimits (line 763) | internal static IDictionary<uint, ushort> getAllLaneSpeedLimits() {
    method getAllLaneAllowedVehicleTypes (line 776) | internal static IDictionary<uint, ExtVehicleType> getAllLaneAllowedVeh...
    method getLaneArrowFlags (line 814) | public static LaneArrows? getLaneArrowFlags(uint laneId) {
    method getHighwayLaneArrowFlags (line 818) | public static LaneArrows? getHighwayLaneArrowFlags(uint laneId) {
    method removeHighwayLaneArrowFlags (line 822) | public static void removeHighwayLaneArrowFlags(uint laneId) {
    method applyAllFlags (line 832) | public static void applyAllFlags() {
    method applyLaneArrowFlags (line 838) | public static bool applyLaneArrowFlags(uint laneId, bool check=true) {
    method getFinalLaneArrowFlags (line 871) | public static LaneArrows getFinalLaneArrowFlags(uint laneId, bool chec...
    method removeLaneArrowFlags (line 901) | public static void removeLaneArrowFlags(uint laneId) {
    method removeHighwayLaneArrowFlagsAtSegment (line 916) | internal static void removeHighwayLaneArrowFlagsAtSegment(ushort segme...
    method clearHighwayLaneArrows (line 930) | public static void clearHighwayLaneArrows() {
    method resetSpeedLimits (line 936) | public static void resetSpeedLimits() {
    method OnLevelUnloading (line 948) | internal static void OnLevelUnloading() {
    method Flags (line 977) | static Flags() {
    method OnBeforeLoadData (line 986) | public static void OnBeforeLoadData() {

FILE: TLM/TLM/State/GlobalConfig.cs
  class GlobalConfig (line 20) | [XmlRootAttribute("GlobalConfig", Namespace = "http://www.viathinksoft.d...
    method GlobalConfig (line 61) | static GlobalConfig() {
    method OnLevelUnloading (line 65) | internal static void OnLevelUnloading() {
    method WriteConfig (line 102) | internal static void WriteConfig() {
    method WriteDefaultConfig (line 106) | private static GlobalConfig WriteDefaultConfig(GlobalConfig oldConfig,...
    method WriteConfig (line 131) | private static DateTime WriteConfig(GlobalConfig config, string filena...
    method Load (line 150) | public static GlobalConfig Load(out DateTime modifiedTime) {
    method Reload (line 205) | public static void Reload(bool checkVersion=true) {
    method Reset (line 228) | public static void Reset(GlobalConfig oldConfig, bool resetAll=false) {
    method ReloadIfNewer (line 235) | private static void ReloadIfNewer() {
    method ReloadRushHourConfigIfNewer (line 248) | private static void ReloadRushHourConfigIfNewer() { // TODO refactor
    method SimulationStep (line 276) | public void SimulationStep() {

FILE: TLM/TLM/State/Options.cs
  class Options (line 20) | public class Options : MonoBehaviour {
    method makeSettings (line 172) | public static void makeSettings(UIHelperBase helper) {
    method Indent (line 479) | private static void Indent<T>(T component) where T : UIComponent {
    method AddOptionTab (line 485) | private static UIButton AddOptionTab(UITabstrip tabStrip, string capti...
    method checkGameLoaded (line 501) | private static bool checkGameLoaded() {
    method onGuiTransparencyChanged (line 509) | private static void onGuiTransparencyChanged(float newVal) {
    method onOverlayTransparencyChanged (line 521) | private static void onOverlayTransparencyChanged(float newVal) {
    method onAltLaneSelectionRatioChanged (line 533) | private static void onAltLaneSelectionRatioChanged(float newVal) {
    method onPrioritySignsOverlayChanged (line 543) | private static void onPrioritySignsOverlayChanged(bool newPrioritySign...
    method onTimedLightsOverlayChanged (line 553) | private static void onTimedLightsOverlayChanged(bool newTimedLightsOve...
    method onSpeedLimitsOverlayChanged (line 563) | private static void onSpeedLimitsOverlayChanged(bool newSpeedLimitsOve...
    method onVehicleRestrictionsOverlayChanged (line 573) | private static void onVehicleRestrictionsOverlayChanged(bool newVehicl...
    method onParkingRestrictionsOverlayChanged (line 583) | private static void onParkingRestrictionsOverlayChanged(bool newParkin...
    method onJunctionRestrictionsOverlayChanged (line 593) | private static void onJunctionRestrictionsOverlayChanged(bool newValue) {
    method onConnectedLanesOverlayChanged (line 603) | private static void onConnectedLanesOverlayChanged(bool newValue) {
    method onLanguageChanged (line 613) | private static void onLanguageChanged(int newLanguageIndex) {
    method onLockButtonChanged (line 638) | private static void onLockButtonChanged(bool newValue) {
    method onLockMenuChanged (line 645) | private static void onLockMenuChanged(bool newValue) {
    method onTinyMenuChanged (line 652) | private static void onTinyMenuChanged(bool newValue) {
    method onEnableTutorialsChanged (line 659) | private static void onEnableTutorialsChanged(bool newValue) {
    method onShowCompatibilityCheckErrorChanged (line 665) | private static void onShowCompatibilityCheckErrorChanged(bool newValue) {
    method onInstantEffectsChanged (line 671) | private static void onInstantEffectsChanged(bool newValue) {
    method onSimAccuracyChanged (line 679) | private static void onSimAccuracyChanged(int newAccuracy) {
    method onVehicleRestrictionsAggressionChanged (line 687) | private static void onVehicleRestrictionsAggressionChanged(int newValu...
    method onRecklessDriversChanged (line 703) | private static void onRecklessDriversChanged(int newRecklessDrivers) {
    method onRelaxedBussesChanged (line 711) | private static void onRelaxedBussesChanged(bool newRelaxedBusses) {
    method onAllRelaxedChanged (line 719) | private static void onAllRelaxedChanged(bool newAllRelaxed) {
    method onAdvancedAIChanged (line 727) | private static void onAdvancedAIChanged(bool newAdvancedAI) {
    method onHighwayRulesChanged (line 735) | private static void onHighwayRulesChanged(bool newHighwayRules) {
    method onPreferOuterLaneChanged (line 751) | private static void onPreferOuterLaneChanged(bool val) {
    method onPrioritySignsEnabledChanged (line 758) | private static void onPrioritySignsEnabledChanged(bool val) {
    method onTimedLightsEnabledChanged (line 770) | private static void onTimedLightsEnabledChanged(bool val) {
    method onCustomSpeedLimitsEnabledChanged (line 782) | private static void onCustomSpeedLimitsEnabledChanged(bool val) {
    method onVehicleRestrictionsEnabledChanged (line 792) | private static void onVehicleRestrictionsEnabledChanged(bool val) {
    method onParkingRestrictionsEnabledChanged (line 802) | private static void onParkingRestrictionsEnabledChanged(bool val) {
    method onJunctionRestrictionsEnabledChanged (line 812) | private static void onJunctionRestrictionsEnabledChanged(bool val) {
    method onTurnOnRedEnabledChanged (line 827) | private static void onTurnOnRedEnabledChanged(bool val) {
    method onLaneConnectorEnabledChanged (line 834) | private static void onLaneConnectorEnabledChanged(bool val) {
    method onEvacBussesMayIgnoreRulesChanged (line 850) | private static void onEvacBussesMayIgnoreRulesChanged(bool value) {
    method onAllowEnterBlockedJunctionsChanged (line 858) | private static void onAllowEnterBlockedJunctionsChanged(bool newValue) {
    method onAllowUTurnsChanged (line 870) | private static void onAllowUTurnsChanged(bool newValue) {
    method onAllowNearTurnOnRedChanged (line 882) | private static void onAllowNearTurnOnRedChanged(bool newValue) {
    method onAllowFarTurnOnRedChanged (line 899) | private static void onAllowFarTurnOnRedChanged(bool newValue) {
    method onAllowLaneChangesWhileGoingStraightChanged (line 911) | private static void onAllowLaneChangesWhileGoingStraightChanged(bool n...
    method onTrafficLightPriorityRulesChanged (line 923) | private static void onTrafficLightPriorityRulesChanged(bool newValue) {
    method onBanRegularTrafficOnBusLanesChanged (line 939) | private static void onBanRegularTrafficOnBusLanesChanged(bool newValue) {
    method onStrongerRoadConditionEffectsChanged (line 949) | private static void onStrongerRoadConditionEffectsChanged(bool newStro...
    method onProhibitPocketCarsChanged (line 957) | private static void onProhibitPocketCarsChanged(bool newValue) {
    method onRealisticPublicTransportChanged (line 971) | private static void onRealisticPublicTransportChanged(bool newValue) {
    method onRealisticSpeedsChanged (line 979) | private static void onRealisticSpeedsChanged(bool value) {
    method onDisableDespawningChanged (line 987) | private static void onDisableDespawningChanged(bool value) {
    method onNodesOverlayChanged (line 995) | private static void onNodesOverlayChanged(bool newNodesOverlay) {
    method onShowLanesChanged (line 1003) | private static void onShowLanesChanged(bool newShowLanes) {
    method onVehicleOverlayChanged (line 1011) | private static void onVehicleOverlayChanged(bool newVal) {
    method onCitizenOverlayChanged (line 1019) | private static void onCitizenOverlayChanged(bool newVal) {
    method onBuildingOverlayChanged (line 1027) | private static void onBuildingOverlayChanged(bool newVal) {
    method onShowPathFindStatsChanged (line 1036) | private static void onShowPathFindStatsChanged(bool newVal) {
    method onFloatValueChanged (line 1045) | private static void onFloatValueChanged(string varName, string newValu...
    method onBoolValueChanged (line 1059) | private static void onBoolValueChanged(string varName, bool newVal, re...
    method onClickResetStuckEntities (line 1067) | private static void onClickResetStuckEntities() {
    method onClickRemoveParkedVehicles (line 1076) | private static void onClickRemoveParkedVehicles() {
    method onClickResetSpeedLimits (line 1085) | private static void onClickResetSpeedLimits() {
    method onClickReloadGlobalConf (line 1092) | private static void onClickReloadGlobalConf() {
    method onClickResetGlobalConf (line 1096) | private static void onClickResetGlobalConf() {
    method setSimAccuracy (line 1100) | public static void setSimAccuracy(int newAccuracy) {
    method setVehicleRestrictionsAggression (line 1106) | public static void setVehicleRestrictionsAggression(VehicleRestriction...
    method setRecklessDrivers (line 1120) | public static void setRecklessDrivers(int newRecklessDrivers) {
    method isStockLaneChangerUsed (line 1126) | internal static bool isStockLaneChangerUsed() {
    method setRelaxedBusses (line 1130) | public static void setRelaxedBusses(bool newRelaxedBusses) {
    method setAllRelaxed (line 1136) | public static void setAllRelaxed(bool newAllRelaxed) {
    method setHighwayRules (line 1142) | public static void setHighwayRules(bool newHighwayRules) {
    method setPreferOuterLane (line 1149) | public static void setPreferOuterLane(bool val) {
    method setShowLanes (line 1156) | public static void setShowLanes(bool newShowLanes) {
    method setAdvancedAI (line 1162) | public static void setAdvancedAI(bool newAdvancedAI) {
    method setGuiTransparency (line 1175) | public static void setGuiTransparency(byte val) {
    method setOverlayTransparency (line 1184) | public static void setOverlayTransparency(byte val) {
    method setAltLaneSelectionRatio (line 1193) | public static void setAltLaneSelectionRatio(byte val) {
    method setEvacBussesMayIgnoreRules (line 1206) | public static void setEvacBussesMayIgnoreRules(bool value) {
    method setInstantEffects (line 1215) | public static void setInstantEffects(bool value) {
    method setMayEnterBlockedJunctions (line 1221) | public static void setMayEnterBlockedJunctions(bool newMayEnterBlocked...
    method setStrongerRoadConditionEffects (line 1227) | public static void setStrongerRoadConditionEffects(bool newStrongerRoa...
    method setProhibitPocketCars (line 1237) | public static void setProhibitPocketCars(bool newValue) {
    method setRealisticPublicTransport (line 1244) | public static void setRealisticPublicTransport(bool newValue) {
    method setRealisticSpeeds (line 1251) | public static void setRealisticSpeeds(bool newValue) {
    method setDisableDespawning (line 1257) | public static void setDisableDespawning(bool value) {
    method setAllowUTurns (line 1264) | public static void setAllowUTurns(bool value) {
    method setAllowNearTurnOnRed (line 1271) | public static void setAllowNearTurnOnRed(bool newValue) {
    method setAllowFarTurnOnRed (line 1278) | public static void setAllowFarTurnOnRed(bool newValue) {
    method setAllowLaneChangesWhileGoingStraight (line 1285) | public static void setAllowLaneChangesWhileGoingStraight(bool value) {
    method setAllowEnterBlockedJunctions (line 1292) | public static void setAllowEnterBlockedJunctions(bool value) {
    method setTrafficLightPriorityRules (line 1299) | public static void setTrafficLightPriorityRules(bool value) {
    method setBanRegularTrafficOnBusLanes (line 1305) | public static void setBanRegularTrafficOnBusLanes(bool value) {
    method setPrioritySignsOverlay (line 1314) | public static void setPrioritySignsOverlay(bool newPrioritySignsOverla...
    method setTimedLightsOverlay (line 1322) | public static void setTimedLightsOverlay(bool newTimedLightsOverlay) {
    method setSpeedLimitsOverlay (line 1330) | public static void setSpeedLimitsOverlay(bool newSpeedLimitsOverlay) {
    method setVehicleRestrictionsOverlay (line 1338) | public static void setVehicleRestrictionsOverlay(bool newVehicleRestri...
    method setParkingRestrictionsOverlay (line 1346) | public static void setParkingRestrictionsOverlay(bool newParkingRestri...
    method setJunctionRestrictionsOverlay (line 1354) | public static void setJunctionRestrictionsOverlay(bool newValue) {
    method setConnectedLanesOverlay (line 1362) | public static void setConnectedLanesOverlay(bool newValue) {
    method setNodesOverlay (line 1368) | public static void setNodesOverlay(bool newNodesOverlay) {
    method setVehicleOverlay (line 1376) | public static void setVehicleOverlay(bool newVal) {
    method setPrioritySignsEnabled (line 1382) | public static void setPrioritySignsEnabled(bool newValue) {
    method setTimedLightsEnabled (line 1391) | public static void setTimedLightsEnabled(bool newValue) {
    method setCustomSpeedLimitsEnabled (line 1400) | public static void setCustomSpeedLimitsEnabled(bool newValue) {
    method setVehicleRestrictionsEnabled (line 1409) | public static void setVehicleRestrictionsEnabled(bool newValue) {
    method setParkingRestrictionsEnabled (line 1418) | public static void setParkingRestrictionsEnabled(bool newValue) {
    method setJunctionRestrictionsEnabled (line 1427) | public static void setJunctionRestrictionsEnabled(bool newValue) {
    method setTurnOnRedEnabled (line 1436) | public static void setTurnOnRedEnabled(bool newValue) {
    method setLaneConnectorEnabled (line 1446) | public static void setLaneConnectorEnabled(bool newValue) {
    method setShowPathFindStats (line 1456) | public static void setShowPathFindStats(bool value) {
    method getRecklessDriverModulo (line 1501) | internal static int getRecklessDriverModulo() {

FILE: TLM/TLM/State/SerializableDataExtension.cs
  class SerializableDataExtension (line 26) | public class SerializableDataExtension : SerializableDataExtensionBase {
    method OnCreated (line 33) | public override void OnCreated(ISerializableData serializableData) {
    method OnReleased (line 37) | public override void OnReleased() {
    method OnLoadData (line 40) | public override void OnLoadData() {
    method DeserializeData (line 121) | private static void DeserializeData(byte[] data) {
    method LoadDataState (line 150) | private static void LoadDataState(out bool error) {
    method OnSaveData (line 295) | public override void OnSaveData() {

FILE: TLM/TLM/ThreadingExtension.cs
  class ThreadingExtension (line 22) | public sealed class ThreadingExtension : ThreadingExtensionBase {
    method OnCreated (line 32) | public override void OnCreated(IThreading threading) {
    method OnBeforeSimulationTick (line 38) | public override void OnBeforeSimulationTick() {
    method OnBeforeSimulationFrame (line 45) | public override void OnBeforeSimulationFrame() {
    method OnUpdate (line 97) | public override void OnUpdate(float realTimeDelta, float simulationTim...

FILE: TLM/TLM/Traffic/Data/ExtBuilding.cs
  type ExtBuilding (line 10) | public struct ExtBuilding {
    method ToString (line 31) | public override string ToString() {
    method ExtBuilding (line 40) | internal ExtBuilding(ushort buildingId) {
    method IsValid (line 47) | public bool IsValid() {
    method Reset (line 51) | internal void Reset() {
    method AddParkingSpaceDemand (line 57) | internal void AddParkingSpaceDemand(uint delta) {
    method RemoveParkingSpaceDemand (line 62) | internal void RemoveParkingSpaceDemand(uint delta) {
    method ModifyParkingSpaceDemand (line 67) | internal void ModifyParkingSpaceDemand(Vector3 parkPos, int minDelta=-...
    method AddPublicTransportDemand (line 76) | internal void AddPublicTransportDemand(uint delta, bool outgoing) {
    method RemovePublicTransportDemand (line 87) | internal void RemovePublicTransportDemand(uint delta, bool outgoing) {
    method RequestColorUpdate (line 98) | private void RequestColorUpdate() {

FILE: TLM/TLM/Traffic/Data/ExtCitizen.cs
  type ExtCitizen (line 9) | public struct ExtCitizen {
    type ExtTransportMode (line 10) | [Flags]
    method ToString (line 43) | public override string ToString() {
    method ExtCitizen (line 52) | internal ExtCitizen(uint citizenId) {
    method IsValid (line 60) | internal bool IsValid() {
    method Reset (line 64) | internal void Reset() {
    method ResetLastLocation (line 79) | private void ResetLastLocation() {

FILE: TLM/TLM/Traffic/Data/ExtCitizenInstance.cs
  type ExtCitizenInstance (line 13) | public struct ExtCitizenInstance {
    type ExtPathState (line 14) | public enum ExtPathState {
    type ExtSoftPathState (line 33) | public enum ExtSoftPathState {
    type ExtPathType (line 60) | public enum ExtPathType {
    type ExtPathMode (line 75) | public enum ExtPathMode {
    type ExtParkingSpaceLocation (line 153) | public enum ExtParkingSpaceLocation {
    method ToString (line 215) | public override string ToString() {
    method ExtCitizenInstance (line 230) | internal ExtCitizenInstance(ushort instanceId) {
    method IsValid (line 243) | internal bool IsValid() {
    method GetCitizenId (line 247) | public uint GetCitizenId() {
    method Reset (line 256) | internal void Reset() {
    method ReleaseReturnPath (line 284) | internal void ReleaseReturnPath() {
    method UpdateReturnPathState (line 310) | internal void UpdateReturnPathState() {
    method CalculateReturnPath (line 347) | internal bool CalculateReturnPath(Vector3 parkPos, Vector3 targetPos) {
    method GetPathType (line 419) | public ExtPathType GetPathType() {
    method ConvertPathStateToSoftPathState (line 449) | public static ExtSoftPathState ConvertPathStateToSoftPathState(ExtPath...

FILE: TLM/TLM/Traffic/Data/PrioritySegment.cs
  type PrioritySegment (line 7) | public struct PrioritySegment {
    type PriorityType (line 8) | public enum PriorityType {
    method ToString (line 34) | public override string ToString() {
    method PrioritySegment (line 41) | public PrioritySegment(PriorityType startType, PriorityType endType) {
    method Reset (line 46) | public void Reset() {
    method IsDefault (line 51) | public bool IsDefault() {
    method HasPrioritySignAtNode (line 55) | public bool HasPrioritySignAtNode(bool startNode) {

FILE: TLM/TLM/Traffic/Data/SegmentEndFlags.cs
  type SegmentEndFlags (line 14) | public struct SegmentEndFlags {
    method UpdateDefaults (line 29) | public void UpdateDefaults(ushort segmentId, bool startNode, ref NetNo...
    method IsUturnAllowed (line 68) | public bool IsUturnAllowed() {
    method IsNearTurnOnRedAllowed (line 76) | public bool IsNearTurnOnRedAllowed() {
    method IsFarTurnOnRedAllowed (line 84) | public bool IsFarTurnOnRedAllowed() {
    method IsLaneChangingAllowedWhenGoingStraight (line 92) | public bool IsLaneChangingAllowedWhenGoingStraight() {
    method IsEnteringBlockedJunctionAllowed (line 100) | public bool IsEnteringBlockedJunctionAllowed() {
    method IsPedestrianCrossingAllowed (line 108) | public bool IsPedestrianCrossingAllowed() {
    method SetUturnAllowed (line 116) | public void SetUturnAllowed(bool value) {
    method SetNearTurnOnRedAllowed (line 120) | public void SetNearTurnOnRedAllowed(bool value) {
    method SetFarTurnOnRedAllowed (line 124) | public void SetFarTurnOnRedAllowed(bool value) {
    method SetLaneChangingAllowedWhenGoingStraight (line 128) | public void SetLaneChangingAllowedWhenGoingStraight(bool value) {
    method SetEnteringBlockedJunctionAllowed (line 132) | public void SetEnteringBlockedJunctionAllowed(bool value) {
    method SetPedestrianCrossingAllowed (line 136) | public void SetPedestrianCrossingAllowed(bool value) {
    method IsDefault (line 140) | public bool IsDefault() {
    method Reset (line 151) | public void Reset(bool resetDefaults=true) {
    method ToString (line 169) | public override string ToString() {

FILE: TLM/TLM/Traffic/Data/SegmentFlags.cs
  type SegmentFlags (line 13) | public struct SegmentFlags {
    method IsUturnAllowed (line 17) | public bool IsUturnAllowed(bool startNode) {
    method IsNearTurnOnRedAllowed (line 21) | public bool IsNearTurnOnRedAllowed(bool startNode) {
    method IsFarTurnOnRedAllowed (line 25) | public bool IsFarTurnOnRedAllowed(bool startNode) {
    method IsLaneChangingAllowedWhenGoingStraight (line 29) | public bool IsLaneChangingAllowedWhenGoingStraight(bool startNode) {
    method IsEnteringBlockedJunctionAllowed (line 33) | public bool IsEnteringBlockedJunctionAllowed(bool startNode) {
    method IsPedestrianCrossingAllowed (line 37) | public bool IsPedestrianCrossingAllowed(bool startNode) {
    method GetUturnAllowed (line 41) | public TernaryBool GetUturnAllowed(bool startNode) {
    method GetNearTurnOnRedAllowed (line 45) | public TernaryBool GetNearTurnOnRedAllowed(bool startNode) {
    method GetFarTurnOnRedAllowed (line 49) | public TernaryBool GetFarTurnOnRedAllowed(bool startNode) {
    method GetLaneChangingAllowedWhenGoingStraight (line 53) | public TernaryBool GetLaneChangingAllowedWhenGoingStraight(bool startN...
    method GetEnteringBlockedJunctionAllowed (line 57) | public TernaryBool GetEnteringBlockedJunctionAllowed(bool startNode) {
    method GetPedestrianCrossingAllowed (line 61) | public TernaryBool GetPedestrianCrossingAllowed(bool startNode) {
    method SetUturnAllowed (line 65) | public void SetUturnAllowed(bool startNode, bool value) {
    method SetNearTurnOnRedAllowed (line 73) | public void SetNearTurnOnRedAllowed(bool startNode, bool value) {
    method SetFarTurnOnRedAllowed (line 81) | public void SetFarTurnOnRedAllowed(bool startNode, bool value) {
    method SetLaneChangingAllowedWhenGoingStraight (line 89) | public void SetLaneChangingAllowedWhenGoingStraight(bool startNode, bo...
    method SetEnteringBlockedJunctionAllowed (line 97) | public void SetEnteringBlockedJunctionAllowed(bool startNode, bool val...
    method SetPedestrianCrossingAllowed (line 105) | public void SetPedestrianCrossingAllowed(bool startNode, bool value) {
    method IsDefault (line 113) | public bool IsDefault() {
    method Reset (line 117) | public void Reset(bool? startNode=null, bool resetDefaults=true) {
    method ToString (line 127) | public override string ToString() {

FILE: TLM/TLM/Traffic/Data/TurnOnRedSegments.cs
  type TurnOnRedSegments (line 10) | public struct TurnOnRedSegments {
    method Reset (line 21) | public void Reset() {
    method ToString (line 26) | public override string ToString() {

FILE: TLM/TLM/Traffic/Data/VehicleState.cs
  type VehicleState (line 18) | public struct VehicleState {
    type Flags (line 23) | [Flags]
    method ToString (line 97) | public override string ToString() {
    method VehicleState (line 127) | internal VehicleState(ushort vehicleId) {
    method Unlink (line 174) | internal void Unlink() {
    method Link (line 213) | private void Link(ISegmentEnd end) {
    method OnCreate (line 232) | internal void OnCreate(ref Vehicle vehicleData) {
    method OnStartPathFind (line 257) | internal ExtVehicleType OnStartPathFind(ref Vehicle vehicleData, ExtVe...
    method OnSpawn (line 285) | internal void OnSpawn(ref Vehicle vehicleData) {
    method UpdatePosition (line 331) | internal void UpdatePosition(ref Vehicle vehicleData, ref PathUnit.Pos...
    method OnDespawn (line 391) | internal void OnDespawn() {
    method OnRelease (line 427) | internal void OnRelease(ref Vehicle vehicleData) {
    method IsJunctionTransitStateNew (line 474) | internal bool IsJunctionTransitStateNew() {
    method StepRand (line 479) | public void StepRand() {
    method GetTransitNodeId (line 486) | private static ushort GetTransitNodeId(ref PathUnit.Position curPos, r...
    method IsTransitNodeCurStartNode (line 506) | private static bool IsTransitNodeCurStartNode(ref PathUnit.Position cu...
    method Now (line 521) | private static uint Now() {
    method DetermineVehicleType (line 525) | private void DetermineVehicleType(ref Vehicle vehicleData) {
    method DetermineVehicleTypeFromAIType (line 551) | private ExtVehicleType? DetermineVehicleTypeFromAIType(VehicleAI ai, b...

FILE: TLM/TLM/Traffic/ExtVehicleType.cs
  type ExtVehicleType (line 6) | [Flags]

FILE: TLM/TLM/Traffic/ISegmentEnd.cs
  type ISegmentEnd (line 8) | public interface ISegmentEnd : ISegmentEndId {
    method Update (line 13) | void Update();
    method Destroy (line 14) | void Destroy();
    method MeasureOutgoingVehicles (line 15) | IDictionary<ushort, uint>[] MeasureOutgoingVehicles(bool includeStoppe...
    method GetRegisteredVehicleCount (line 16) | int GetRegisteredVehicleCount();

FILE: TLM/TLM/Traffic/Impl/SegmentEnd.cs
  class SegmentEnd (line 28) | public class SegmentEnd : SegmentEndId, ISegmentEnd {
    method ToString (line 59) | public override string ToString() {
    method SegmentEnd (line 70) | public SegmentEnd(ushort segmentId, bool startNode) : base(segmentId, ...
    method MeasureOutgoingVehicles (line 83) | public IDictionary<ushort, uint>[] MeasureOutgoingVehicles(bool includ...
    method MeasureOutgoingVehicle (line 129) | protected void MeasureOutgoingVehicle(bool debug, IDictionary<ushort, ...
    method GetRegisteredVehicleCount (line 199) | public int GetRegisteredVehicleCount() {
    method Destroy (line 211) | public void Destroy() {
    method UnregisterAllVehicles (line 215) | private void UnregisterAllVehicles() {
    method Update (line 222) | public void Update() {

FILE: TLM/TLM/Traffic/VehicleJunctionTransitState.cs
  type VehicleJunctionTransitState (line 2) | public enum VehicleJunctionTransitState {

FILE: TLM/TLM/TrafficLight/Data/TrafficLightSimulation.cs
  type TrafficLightSimulation (line 14) | public struct TrafficLightSimulation {
    method ToString (line 30) | public override string ToString() {
    method TrafficLightSimulation (line 38) | public TrafficLightSimulation(ushort nodeId) {
    method SetUpManualTrafficLight (line 45) | public bool SetUpManualTrafficLight() {
    method DestroyManualTrafficLight (line 60) | public bool DestroyManualTrafficLight() {
    method SetUpTimedTrafficLight (line 73) | public bool SetUpTimedTrafficLight(IList<ushort> nodeGroup) {
    method DestroyTimedTrafficLight (line 93) | public bool DestroyTimedTrafficLight() {
    method Destroy (line 108) | public void Destroy() {
    method IsTimedLight (line 113) | public bool IsTimedLight() {
    method IsManualLight (line 117) | public bool IsManualLight() {
    method IsTimedLightRunning (line 121) | public bool IsTimedLightRunning() {
    method IsSimulationRunning (line 125) | public bool IsSimulationRunning() {
    method HasSimulation (line 129) | public bool HasSimulation() {
    method SimulationStep (line 133) | public void SimulationStep() {
    method Update (line 143) | public void Update() {
    method Housekeeping (line 152) | public void Housekeeping() { // TODO improve & remove

FILE: TLM/TLM/TrafficLight/FlowWaitCalcMode.cs
  type FlowWaitCalcMode (line 7) | public enum FlowWaitCalcMode {

FILE: TLM/TLM/TrafficLight/ICustomSegmentLight.cs
  type ICustomSegmentLight (line 8) | public interface ICustomSegmentLight : ICloneable {
    method GetLightState (line 20) | RoadBaseAI.TrafficLightState GetLightState(ArrowDirection dir);
    method IsAnyGreen (line 21) | bool IsAnyGreen();
    method IsGreen (line 22) | bool IsGreen(ArrowDirection dir);
    method IsAnyInTransition (line 23) | bool IsAnyInTransition();
    method IsInTransition (line 24) | bool IsInTransition(ArrowDirection dir);
    method IsLeftGreen (line 25) | bool IsLeftGreen();
    method IsMainGreen (line 26) | bool IsMainGreen();
    method IsRightGreen (line 27) | bool IsRightGreen();
    method IsLeftRed (line 28) | bool IsLeftRed();
    method IsMainRed (line 29) | bool IsMainRed();
    method IsRightRed (line 30) | bool IsRightRed();
    method IsRed (line 31) | bool IsRed(ArrowDirection dir);
    method UpdateVisuals (line 32) | void UpdateVisuals();
    method MakeRed (line 33) | void MakeRed();
    method MakeRedOrGreen (line 34) | void MakeRedOrGreen();
    method ToggleMode (line 35) | void ToggleMode();
    method ChangeMainLight (line 36) | void ChangeMainLight();
    method ChangeLeftLight (line 37) | void ChangeLeftLight();
    method ChangeRightLight (line 38) | void ChangeRightLight();
    method SetStates (line 39) | void SetStates(RoadBaseAI.TrafficLightState? mainLight, RoadBaseAI.Tra...

FILE: TLM/TLM/TrafficLight/ICustomSegmentLights.cs
  type ICustomSegmentLights (line 10) | public interface ICustomSegmentLights : ICloneable, ISegmentEndId {
    method CalculateAutoPedestrianLightState (line 22) | void CalculateAutoPedestrianLightState(bool propagate = true);
    method IsAnyGreen (line 23) | bool IsAnyGreen();
    method IsAnyInTransition (line 24) | bool IsAnyInTransition();
    method IsAnyLeftGreen (line 25) | bool IsAnyLeftGreen();
    method IsAnyMainGreen (line 26) | bool IsAnyMainGreen();
    method IsAnyRightGreen (line 27) | bool IsAnyRightGreen();
    method IsAllLeftRed (line 28) | bool IsAllLeftRed();
    method IsAllMainRed (line 29) | bool IsAllMainRed();
    method IsAllRightRed (line 30) | bool IsAllRightRed();
    method UpdateVisuals (line 31) | void UpdateVisuals();
    method LastChange (line 32) | uint LastChange();
    method MakeRed (line 33) | void MakeRed();
    method MakeRedOrGreen (line 34) | void MakeRedOrGreen();
    method ChangeLightPedestrian (line 35) | void ChangeLightPedestrian();
    method SetLights (line 36) | void SetLights(RoadBaseAI.TrafficLightState lightState);
    method SetLights (line 37) | void SetLights(ICustomSegmentLights otherLights);
    method GetCustomLight (line 38) | ICustomSegmentLight GetCustomLight(byte laneIndex);
    method GetCustomLight (line 39) | ICustomSegmentLight GetCustomLight(ExtVehicleType vehicleType);
    method Relocate (line 40) | bool Relocate(ushort segmentId, bool startNode, ICustomSegmentLightsMa...
    method Clone (line 41) | ICustomSegmentLights Clone(ICustomSegmentLightsManager newLightsManage...
    method Housekeeping (line 42) | void Housekeeping(bool mayDelete, bool calculateAutoPedLight);

FILE: TLM/TLM/TrafficLight/ITimedTrafficLights.cs
  type ITimedTrafficLights (line 8) | public interface ITimedTrafficLights : IObserver<NodeGeometry> {
    method AddStep (line 17) | ITimedTrafficLightsStep AddStep(int minTime, int maxTime, StepChangeMe...
    method CheckNextChange (line 18) | long CheckNextChange(ushort segmentId, bool startNode, ExtVehicleType ...
    method GetStep (line 19) | ITimedTrafficLightsStep GetStep(int stepId);
    method Housekeeping (line 20) | bool Housekeeping();
    method IsMasterNode (line 21) | bool IsMasterNode();
    method IsStarted (line 22) | bool IsStarted();
    method IsInTestMode (line 23) | bool IsInTestMode();
    method SetTestMode (line 24) | void SetTestMode(bool testMode);
    method Destroy (line 25) | void Destroy();
    method MasterLights (line 26) | ITimedTrafficLights MasterLights();
    method MoveStep (line 27) | void MoveStep(int oldPos, int newPos);
    method NumSteps (line 28) | int NumSteps();
    method RemoveStep (line 29) | void RemoveStep(int id);
    method ResetSteps (line 30) | void ResetSteps();
    method RotateLeft (line 31) | void RotateLeft();
    method RotateRight (line 32) | void RotateRight();
    method Join (line 33) | void Join(ITimedTrafficLights otherTimedLight);
    method PasteSteps (line 34) | void PasteSteps(ITimedTrafficLights sourceTimedLight);
    method ChangeLightMode (line 35) | void ChangeLightMode(ushort segmentId, ExtVehicleType vehicleType, Lig...
    method SetLights (line 36) | void SetLights(bool noTransition = false);
    method SimulationStep (line 37) | void SimulationStep();
    method SkipStep (line 38) | void SkipStep(bool setLights = true, int prevStepRefIndex = -1);
    method Start (line 39) | void Start();
    method Start (line 40) | void Start(int step);
    method Stop (line 41) | void Stop();
    method OnGeometryUpdate (line 42) | void OnGeometryUpdate();
    method RemoveNodeFromGroup (line 43) | void RemoveNodeFromGroup(ushort otherNodeId);

FILE: TLM/TLM/TrafficLight/ITimedTrafficLightsStep.cs
  type ITimedTrafficLightsStep (line 7) | public interface ITimedTrafficLightsStep : ICustomSegmentLightsManager {
    method CalcWaitFlow (line 20) | void CalcWaitFlow(bool countOnlyMovingIfGreen, int stepRefIndex, out f...
    method GetLightState (line 21) | RoadBaseAI.TrafficLightState GetLightState(ushort segmentId, ExtVehicl...
    method GetMetric (line 22) | float GetMetric(float flow, float wait);
    method GetSegmentLights (line 23) | ICustomSegmentLights GetSegmentLights(ushort segmentId);
    method MaxTimeRemaining (line 24) | long MaxTimeRemaining();
    method MinTimeRemaining (line 25) | long MinTimeRemaining();
    method IsInStartTransition (line 26) | bool IsInStartTransition();
    method IsInEndTransition (line 27) | bool IsInEndTransition();
    method IsEndTransitionDone (line 28) | bool IsEndTransitionDone();
    method RelocateSegmentLights (line 29) | bool RelocateSegmentLights(ushort sourceSegmentId, ushort targetSegmen...
    method RemoveSegmentLights (line 30) | ICustomSegmentLights RemoveSegmentLights(ushort segmentId);
    method SetSegmentLights (line 31) | bool SetSegmentLights(ushort segmentId, ICustomSegmentLights lights);
    method SetStepDone (line 32) | void SetStepDone();
    method ShouldGoToNextStep (line 33) | bool ShouldGoToNextStep(float flow, float wait, out float metric);
    method Start (line 34) | void Start(int previousStepRefIndex = -1);
    method StepDone (line 35) | bool StepDone(bool updateValues);
    method ToString (line 36) | string ToString();
    method UpdateLights (line 37) | void UpdateLights();
    method UpdateLiveLights (line 38) | void UpdateLiveLights();
    method UpdateLiveLights (line 39) | void UpdateLiveLights(bool noTransition);

FILE: TLM/TLM/TrafficLight/Impl/CustomSegment.cs
  class CustomSegment (line 5) | class CustomSegment {
    method ToString (line 9) | public override string ToString() {

FILE: TLM/TLM/TrafficLight/Impl/CustomSegmentLight.cs
  class CustomSegmentLight (line 17) | public class CustomSegmentLight : ICustomSegmentLight {
    method ToString (line 93) | public override string ToString() {
    method EnsureModeLights (line 102) | private void EnsureModeLights() {
    method CustomSegmentLight (line 134) | public CustomSegmentLight(CustomSegmentLights lights, RoadBaseAI.Traff...
    method CustomSegmentLight (line 141) | public CustomSegmentLight(CustomSegmentLights lights, RoadBaseAI.Traff...
    method ToggleMode (line 149) | public void ToggleMode() {
    method ChangeMainLight (line 192) | public void ChangeMainLight() {
    method ChangeLeftLight (line 211) | public void ChangeLeftLight() {
    method ChangeRightLight (line 222) | public void ChangeRightLight() {
    method GetLightState (line 233) | public RoadBaseAI.TrafficLightState GetLightState(ArrowDirection dir) {
    method IsGreen (line 247) | public bool IsGreen(ArrowDirection dir) {
    method IsInTransition (line 251) | public bool IsInTransition(ArrowDirection dir) {
    method IsRed (line 256) | public bool IsRed(ArrowDirection dir) {
    method IsAnyGreen (line 260) | public bool IsAnyGreen() {
    method IsAnyInTransition (line 266) | public bool IsAnyInTransition() {
    method IsLeftGreen (line 275) | public bool IsLeftGreen() {
    method IsMainGreen (line 279) | public bool IsMainGreen() {
    method IsRightGreen (line 283) | public bool IsRightGreen() {
    method IsLeftRed (line 287) | public bool IsLeftRed() {
    method IsMainRed (line 291) | public bool IsMainRed() {
    method IsRightRed (line 295) | public bool IsRightRed() {
    method UpdateVisuals (line 299) | public void UpdateVisuals() {
    method GetVisualLightState (line 341) | public RoadBaseAI.TrafficLightState GetVisualLightState() {
    method _checkPedestrianLight (line 365) | private RoadBaseAI.TrafficLightState _checkPedestrianLight() {
    method Clone (line 373) | public object Clone() {
    method MakeRedOrGreen (line 377) | public void MakeRedOrGreen() {
    method MakeRed (line 402) | public void MakeRed() {
    method SetStates (line 411) | public void SetStates(RoadBaseAI.TrafficLightState? mainLight, RoadBas...

FILE: TLM/TLM/TrafficLight/Impl/CustomSegmentLights.cs
  class CustomSegmentLights (line 21) | public class CustomSegmentLights : SegmentEndId, ICustomSegmentLights {
    method ToString (line 129) | public override string ToString() {
    method Relocate (line 146) | public bool Relocate(ushort segmentId, bool startNode, ICustomSegmentL...
    method CustomSegmentLights (line 155) | [Obsolete]
    method CustomSegmentLights (line 161) | public CustomSegmentLights(ICustomSegmentLightsManager lightsManager, ...
    method CustomSegmentLights (line 165) | public CustomSegmentLights(ICustomSegmentLightsManager lightsManager, ...
    method IsAnyGreen (line 172) | public bool IsAnyGreen() {
    method IsAnyInTransition (line 180) | public bool IsAnyInTransition() {
    method IsAnyLeftGreen (line 188) | public bool IsAnyLeftGreen() {
    method IsAnyMainGreen (line 196) | public bool IsAnyMainGreen() {
    method IsAnyRightGreen (line 204) | public bool IsAnyRightGreen() {
    method IsAllLeftRed (line 212) | public bool IsAllLeftRed() {
    method IsAllMainRed (line 220) | public bool IsAllMainRed() {
    method IsAllRightRed (line 228) | public bool IsAllRightRed() {
    method UpdateVisuals (line 236) | public void UpdateVisuals() {
    method Clone (line 243) | public object Clone() {
    method Clone (line 247) | public ICustomSegmentLights Clone(ICustomSegmentLightsManager newLight...
    method GetCustomLight (line 264) | public ICustomSegmentLight GetCustomLight(byte laneIndex) {
    method GetCustomLight (line 297) | public ICustomSegmentLight GetCustomLight(ExtVehicleType vehicleType) {
    method MakeRed (line 309) | public void MakeRed() {
    method MakeRedOrGreen (line 315) | public void MakeRedOrGreen() {
    method SetLights (line 321) | public void SetLights(RoadBaseAI.TrafficLightState lightState) {
    method SetLights (line 328) | public void SetLights(ICustomSegmentLights otherLights) {
    method ChangeLightPedestrian (line 343) | public void ChangeLightPedestrian() {
    method getCurrentFrame (line 354) | private static uint getCurrentFrame() {
    method LastChange (line 358) | public uint LastChange() {
    method OnChange (line 362) | public void OnChange(bool calculateAutoPedLight=true) {
    method CalculateAutoPedestrianLightState (line 369) | public void CalculateAutoPedestrianLightState(bool propagate=true) {
    method Housekeeping (line 539) | public void Housekeeping(bool mayDelete, bool calculateAutoPedLight) {

FILE: TLM/TLM/TrafficLight/Impl/TimedTrafficLights.cs
  class TimedTrafficLights (line 22) | public class TimedTrafficLights : ITimedTrafficLights {
    method ToString (line 55) | public override string ToString() {
    method TimedTrafficLights (line 68) | public TimedTrafficLights(ushort nodeId, IEnumerable<ushort> nodeGroup) {
    method TimedTrafficLights (line 79) | private TimedTrafficLights() {
    method PasteSteps (line 83) | public void PasteSteps(ITimedTrafficLights sourceTimedLight) {
    method Rotate (line 133) | private void Rotate(ArrowDirection dir) {
    method RotateLeft (line 202) | public void RotateLeft() {
    method RotateRight (line 206) | public void RotateRight() {
    method UpdateDirections (line 210) | private void UpdateDirections(NodeGeometry nodeGeo) {
    method OnUpdate (line 240) | public void OnUpdate(NodeGeometry nodeGeo) {
    method IsMasterNode (line 245) | public bool IsMasterNode() {
    method AddStep (line 249) | public ITimedTrafficLightsStep AddStep(int minTime, int maxTime, StepC...
    method Start (line 264) | public void Start() {
    method Start (line 268) | public void Start(int stepIndex) {
    method CheckInvalidPedestrianLights (line 298) | private void CheckInvalidPedestrianLights() {
    method ClearInvalidPedestrianLights (line 337) | private void ClearInvalidPedestrianLights() {
    method RemoveNodeFromGroup (line 357) | public void RemoveNodeFromGroup(ushort otherNodeId) {
    method Housekeeping (line 369) | public bool Housekeeping() {
    method MoveStep (line 397) | public void MoveStep(int oldPos, int newPos) {
    method Stop (line 406) | public void Stop() {
    method Destroy (line 420) | public void Destroy() {
    method IsStarted (line 429) | public bool IsStarted() {
    method NumSteps (line 435) | public int NumSteps() {
    method GetStep (line 441) | public ITimedTrafficLightsStep GetStep(int stepId) {
    method SimulationStep (line 447) | public void SimulationStep() {
    method SetLights (line 669) | public void SetLights(bool noTransition=false) {
    method SkipStep (line 687) | public void SkipStep(bool setLights=true, int prevStepRefIndex=-1) {
    method CheckNextChange (line 710) | public long CheckNextChange(ushort segmentId, bool startNode, ExtVehic...
    method ResetSteps (line 757) | public void ResetSteps() {
    method RemoveStep (line 761) | public void RemoveStep(int id) {
    method OnGeometryUpdate (line 765) | public void OnGeometryUpdate() {
    method BackUpInvalidStepSegments (line 784) | private void BackUpInvalidStepSegments(NodeGeometry nodeGeo) {
    method HandleNewSegments (line 842) | private void HandleNewSegments(NodeGeometry nodeGeo) {
    method MasterLights (line 905) | public ITimedTrafficLights MasterLights() {
    method SetTestMode (line 909) | public void SetTestMode(bool testMode) {
    method IsInTestMode (line 916) | public bool IsInTestMode() {
    method ChangeLightMode (line 923) | public void ChangeLightMode(ushort segmentId, ExtVehicleType vehicleTy...
    method Join (line 943) | public void Join(ITimedTrafficLights otherTimedLight) {
    method UpdateSegmentEnds (line 1040) | private void UpdateSegmentEnds() {
    method DestroySegmentEnds (line 1129) | private void DestroySegmentEnds() {

FILE: TLM/TLM/TrafficLight/Impl/TimedTrafficLightsStep.cs
  class TimedTrafficLightsStep (line 23) | public class TimedTrafficLightsStep : ITimedTrafficLightsStep {
    method ToString (line 73) | public override string ToString() {
    method TimedTrafficLightsStep (line 92) | public TimedTrafficLightsStep(ITimedTrafficLights timedNode, int minTi...
    method TimedTrafficLightsStep (line 117) | private TimedTrafficLightsStep() {
    method IsEndTransitionDone (line 125) | public bool IsEndTransitionDone() {
    method IsInEndTransition (line 143) | public bool IsInEndTransition() {
    method IsInStartTransition (line 157) | public bool IsInStartTransition() {
    method GetLightState (line 172) | public RoadBaseAI.TrafficLightState GetLightState(ushort segmentId, Ex...
    method Start (line 194) | public void Start(int previousStepRefIndex=-1) {
    method Reset (line 218) | internal void Reset() {
    method getCurrentFrame (line 228) | internal static uint getCurrentFrame() {
    method UpdateLiveLights (line 235) | public void UpdateLiveLights() {
    method UpdateLiveLights (line 239) | public void UpdateLiveLights(bool noTransition) {
    method calcLightState (line 403) | private RoadBaseAI.TrafficLightState calcLightState(RoadBaseAI.Traffic...
    method UpdateLights (line 415) | public void UpdateLights() {
    method MinTimeRemaining (line 439) | public long MinTimeRemaining() {
    method MaxTimeRemaining (line 447) | public long MaxTimeRemaining() {
    method SetStepDone (line 451) | public void SetStepDone() {
    method StepDone (line 455) | public bool StepDone(bool updateValues) {
    method GetMetric (line 558) | public float GetMetric(float flow, float wait) {
    method ShouldGoToNextStep (line 574) | public bool ShouldGoToNextStep(float flow, float wait, out float metri...
    method CalcWaitFlow (line 585) | public void CalcWaitFlow(bool countOnlyMovingIfGreen, int stepRefIndex...
    method ChangeLightMode (line 892) | internal void ChangeLightMode(ushort segmentId, ExtVehicleType vehicle...
    method RemoveSegmentLights (line 899) | public ICustomSegmentLights RemoveSegmentLights(ushort segmentId) {
    method GetSegmentLights (line 912) | public ICustomSegmentLights GetSegmentLights(ushort segmentId) {
    method GetSegmentLights (line 921) | public ICustomSegmentLights GetSegmentLights(ushort nodeId, ushort seg...
    method RelocateSegmentLights (line 941) | public bool RelocateSegmentLights(ushort sourceSegmentId, ushort targe...
    method AddSegment (line 978) | internal bool AddSegment(ushort segmentId, bool startNode, bool makeRe...
    method SetSegmentLights (line 1016) | public bool SetSegmentLights(ushort nodeId, ushort segmentId, ICustomS...
    method SetSegmentLights (line 1030) | public bool SetSegmentLights(ushort segmentId, ICustomSegmentLights li...
    method ClockwiseIndexOfSegmentEnd (line 1055) | public short ClockwiseIndexOfSegmentEnd(ISegmentEndId endId) {
    method GetSegmentLights (line 1083) | public ICustomSegmentLights GetSegmentLights(ushort segmentId, bool st...
    method GetOrLiveSegmentLights (line 1088) | public ICustomSegmentLights GetOrLiveSegmentLights(ushort segmentId, b...
    method ApplyLightModes (line 1093) | public bool ApplyLightModes(ushort segmentId, bool startNode, ICustomS...
    method SetLightMode (line 1098) | public void SetLightMode(ushort segmentId, bool startNode, ExtVehicleT...
    method AddNodeLights (line 1103) | public void AddNodeLights(ushort nodeId) {
    method RemoveNodeLights (line 1108) | public void RemoveNodeLights(ushort nodeId) {
    method RemoveSegmentLights (line 1113) | void ICustomSegmentLightsManager.RemoveSegmentLights(ushort segmentId) {
    method RemoveSegmentLight (line 1118) | public void RemoveSegmentLight(ushort segmentId, bool startNode) {
    method IsSegmentLight (line 1123) | public bool IsSegmentLight(ushort segmentId, bool startNode) {

FILE: TLM/TLM/TrafficLight/LightMode.cs
  type LightMode (line 7) | public enum LightMode {

FILE: TLM/TLM/TrafficLight/StepChangeMetric.cs
  type StepChangeMetric (line 7) | public enum StepChangeMetric {

FILE: TLM/TLM/TrafficLight/TrafficLightSimulationType.cs
  type TrafficLightSimulationType (line 7) | public enum TrafficLightSimulationType {

FILE: TLM/TLM/TrafficManager.cs
  class TrafficManager (line 13) | public class TrafficManager : MonoBehaviour {

FILE: TLM/TLM/TrafficManagerMod.cs
  class TrafficManagerMod (line 12) | public class TrafficManagerMod : IUserMod {
    method OnEnabled (line 26) | public void OnEnabled() {
    method OnDisabled (line 35) | public void OnDisabled() {
    method OnSettingsUI (line 40) | public void OnSettingsUI(UIHelperBase helper) {
    method OnGameIntroLoaded (line 44) | private static void OnGameIntroLoaded() {

FILE: TLM/TLM/TrafficManagerMode.cs
  type TrafficManagerMode (line 3) | public enum TrafficManagerMode

FILE: TLM/TLM/UI/CustomKeyHandler.cs
  class CustomKeyHandler (line 6) | public class CustomKeyHandler : UICustomControl {
    method OnKeyDown (line 9) | public void OnKeyDown(UIComponent comp, UIKeyEventParameter p)

FILE: TLM/TLM/UI/IncompatibleModsPanel.cs
  class IncompatibleModsPanel (line 12) | public class IncompatibleModsPanel : UIPanel {
    method Initialize (line 22) | public void Initialize() {
    method CloseButtonClick (line 123) | private void CloseButtonClick(UIComponent component, UIMouseEventParam...
    method CreateEntry (line 131) | private UIPanel CreateEntry(ref UIScrollablePanel parent, string name,...
    method UnsubscribeClick (line 143) | private void UnsubscribeClick(UIComponent component, UIMouseEventParam...
    method CreateButton (line 157) | private UIButton CreateButton(UIComponent parent, string text, int x, ...
    method OnEnable (line 176) | private void OnEnable() {
    method OnQueryCompleted (line 184) | private void OnQueryCompleted(UGCDetails result, bool ioerror) {
    method OnPluginsChanged (line 188) | private void OnPluginsChanged() {
    method OnDisable (line 192) | private void OnDisable() {
    method OnKeyDown (line 200) | protected override void OnKeyDown(UIKeyEventParameter p) {
    method TryPopModal (line 211) | private void TryPopModal() {

FILE: TLM/TLM/UI/LinearSpriteButton.cs
  class LinearSpriteButton (line 13) | public abstract class LinearSpriteButton : UIButton {
    type ButtonMouseState (line 14) | public enum ButtonMouseState {
    method GetButtonBackgroundTextureId (line 30) | protected static string GetButtonBackgroundTextureId(string prefix, Bu...
    method GetButtonForegroundTextureId (line 49) | protected static string GetButtonForegroundTextureId(string prefix, st...
    method CanActivate (line 55) | public abstract bool CanActivate();
    method Start (line 64) | public override void Start() {
    method HandleClick (line 96) | public abstract void HandleClick(UIMouseEventParameter p);
    method OnClick (line 98) | protected override void OnClick(UIMouseEventParameter p) {
    method UpdateProperties (line 103) | internal void UpdateProperties() {

FILE: TLM/TLM/UI/MainMenu/ClearTrafficButton.cs
  class ClearTrafficButton (line 10) | public class ClearTrafficButton : MenuButton {
    method OnClickInternal (line 35) | public override void OnClickInternal(UIMouseEventParameter p) {

FILE: TLM/TLM/UI/MainMenu/DebugMenu.cs
  class DebugMenuPanel (line 21) | public class DebugMenuPanel : UIPanel {
    method Start (line 65) | public override void Start() {
    method CreateTextField (line 203) | private UITextField CreateTextField(string str, int y) {
    method _createButton (line 229) | private UIButton _createButton(string text, int y, MouseEventHandler e...
    method clickGoToPos (line 252) | private void clickGoToPos(UIComponent component, UIMouseEventParameter...
    method clickGoToSegment (line 260) | private void clickGoToSegment(UIComponent component, UIMouseEventParam...
    method clickGoToNode (line 267) | private void clickGoToNode(UIComponent component, UIMouseEventParamete...
    method clickPrintDebugInfo (line 274) | private void clickPrintDebugInfo(UIComponent component, UIMouseEventPa...
    method clickReloadConfig (line 280) | private void clickReloadConfig(UIComponent component, UIMouseEventPara...
    method clickRecalcLines (line 284) | private void clickRecalcLines(UIComponent component, UIMouseEventParam...
    method clickCheckDetours (line 301) | private void clickCheckDetours(UIComponent component, UIMouseEventPara...
    method PrintTransportStats (line 321) | public static void PrintTransportStats() {
    method clickNoneToVehicle (line 363) | private void clickNoneToVehicle(UIComponent component, UIMouseEventPar...
    method clickTogglePathFindStats (line 392) | private void clickTogglePathFindStats(UIComponent component, UIMouseEv...
    method clickPrintFlagsDebugInfo (line 400) | private void clickPrintFlagsDebugInfo(UIComponent component, UIMouseEv...
    method clickPrintBenchmarkReport (line 404) | private void clickPrintBenchmarkReport(UIComponent component, UIMouseE...
    method clickResetBenchmarks (line 410) | private void clickResetBenchmarks(UIComponent component, UIMouseEventP...
    method clickVehicleToNone (line 416) | private void clickVehicleToNone(UIComponent component, UIMouseEventPar...
    method clickGoToVehicle (line 439) | private void clickGoToVehicle(UIComponent component, UIMouseEventParam...
    method clickGoToParkedVehicle (line 447) | private void clickGoToParkedVehicle(UIComponent component, UIMouseEven...
    method clickGoToBuilding (line 455) | private void clickGoToBuilding(UIComponent component, UIMouseEventPara...
    method clickGoToCitizenInstance (line 475) | private void clickGoToCitizenInstance(UIComponent component, UIMouseEv...
    method Update (line 484) | public override void Update() {

FILE: TLM/TLM/UI/MainMenu/DespawnButton.cs
  class DespawnButton (line 10) | public class DespawnButton : MenuButton {
    method OnClickInternal (line 35) | public override void OnClickInternal(UIMouseEventParameter p) {

FILE: TLM/TLM/UI/MainMenu/JunctionRestrictionsButton.cs
  class JunctionRestrictionsButton (line 10) | public class JunctionRestrictionsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/LaneArrowsButton.cs
  class LaneArrowsButton (line 10) | public class LaneArrowsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/LaneConnectorButton.cs
  class LaneConnectorButton (line 10) | public class LaneConnectorButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/MainMenuPanel.cs
  class MainMenuPanel (line 18) | public class MainMenuPanel : UIPanel, IObserver<GlobalConfig> {
    class SizeProfile (line 36) | public class SizeProfile {
    method Start (line 92) | public override void Start() {
    method OnDestroy (line 123) | public override void OnDestroy() {
    method SetPosLock (line 129) | internal void SetPosLock(bool lck) {
    method OnPositionChanged (line 133) | protected override void OnPositionChanged() {
    method OnUpdate (line 149) | public void OnUpdate(GlobalConfig config) {
    method DetermineProfile (line 158) | private void DetermineProfile(GlobalConfig conf) {
    method UpdateAllSizes (line 163) | public void UpdateAllSizes() {
    method UpdateSize (line 169) | private void UpdateSize() {
    method UpdateDragSize (line 174) | private void UpdateDragSize() {
    method UpdateButtons (line 179) | private void UpdateButtons() {
    method UpdatePosition (line 201) | public void UpdatePosition(Vector2 pos) {

FILE: TLM/TLM/UI/MainMenu/ManualTrafficLightsButton.cs
  class ManualTrafficLightsButton (line 10) | public class ManualTrafficLightsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/MenuButton.cs
  class MenuButton (line 13) | public abstract class MenuButton : LinearSpriteButton {
    type ButtonFunction (line 14) | public enum ButtonFunction {
    method HandleClick (line 32) | public override void HandleClick(UIMouseEventParameter p) { }
    method OnClick (line 34) | protected override void OnClick(UIMouseEventParameter p) {
    method OnClickInternal (line 41) | public abstract void OnClickInternal(UIMouseEventParameter p);
    method CanActivate (line 44) | public override bool CanActivate() {

FILE: TLM/TLM/UI/MainMenu/MenuToolModeButton.cs
  class MenuToolModeButton (line 9) | public abstract class MenuToolModeButton : MenuButton {
    method OnClickInternal (line 18) | public override void OnClickInternal(UIMouseEventParameter p) {

FILE: TLM/TLM/UI/MainMenu/ParkingRestrictionsButton.cs
  class ParkingRestrictionsButton (line 10) | public class ParkingRestrictionsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/PrioritySignsButton.cs
  class PrioritySignsButton (line 10) | public class PrioritySignsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/SpeedLimitsButton.cs
  class SpeedLimitsButton (line 10) | public class SpeedLimitsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/StatsLabel.cs
  class StatsLabel (line 11) | public class StatsLabel : UILabel {
    method Start (line 12) | public override void Start() {
    method Update (line 21) | public override void Update() {

FILE: TLM/TLM/UI/MainMenu/TimedTrafficLightsButton.cs
  class TimedTrafficLightsButton (line 10) | public class TimedTrafficLightsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/ToggleTrafficLightsButton.cs
  class ToggleTrafficLightsButton (line 9) | public class ToggleTrafficLightsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/VehicleRestrictionsButton.cs
  class VehicleRestrictionsButton (line 10) | public class VehicleRestrictionsButton : MenuToolModeButton {

FILE: TLM/TLM/UI/MainMenu/VersionLabel.cs
  class VersionLabel (line 9) | public class VersionLabel : UILabel {
    method Start (line 10) | public override void Start() {

FILE: TLM/TLM/UI/RemoveCitizenInstanceButtonExtender.cs
  class RemoveCitizenInstanceButtonExtender (line 13) | public class RemoveCitizenInstanceButtonExtender : MonoBehaviour {
    method Start (line 16) | public void Start() {
    method OnDestroy (line 30) | public void OnDestroy() {
    method AddRemoveCitizenInstanceButton (line 40) | protected UIButton AddRemoveCitizenInstanceButton(WorldInfoPanel panel) {
    class RemoveCitizenInstanceButton (line 49) | public class RemoveCitizenInstanceButton : LinearSpriteButton {
      method Start (line 50) | public override void Start() {
      method HandleClick (line 56) | public override void HandleClick(UIMouseEventParameter p) {
      method CanActivate (line 127) | public override bool CanActivate() {

FILE: TLM/TLM/UI/RemoveVehicleButtonExtender.cs
  class RemoveVehicleButtonExtender (line 13) | public class RemoveVehicleButtonExtender : MonoBehaviour {
    method Start (line 16) | public void Start() {
    method OnDestroy (line 35) | public void OnDestroy() {
    method AddRemoveVehicleButton (line 45) | protected UIButton AddRemoveVehicleButton(WorldInfoPanel panel) {
    class RemoveVehicleButton (line 54) | public class RemoveVehicleButton : LinearSpriteButton {
      method Start (line 55) | public override void Start() {
      method HandleClick (line 61) | public override void HandleClick(UIMouseEventParameter p) {
      method CanActivate (line 125) | public override bool CanActivate() {

FILE: TLM/TLM/UI/SubTool.cs
  class SubTool (line 8) | public abstract class SubTool {
    method SubTool (line 105) | public SubTool(TrafficManagerTool mainTool) {
    method OnToolUpdate (line 109) | public void OnToolUpdate() {
    method OnPrimaryClickOverlay (line 119) | public abstract void OnPrimaryClickOverlay();
    method OnSecondaryClickOverlay (line 120) | public virtual void OnSecondaryClickOverlay() { }
    method OnToolGUI (line 121) | public virtual void OnToolGUI(Event e) {
    method RenderOverlay (line 128) | public abstract void RenderOverlay(RenderManager.CameraInfo cameraInfo);
    method Initialize (line 129) | public virtual void Initialize() {
    method Cleanup (line 135) | public virtual void Cleanup() { }
    method OnActivate (line 136) | public virtual void OnActivate() { }
    method RenderInfoOverlay (line 137) | public virtual void RenderInfoOverlay(RenderManager.CameraInfo cameraI...
    method ShowGUIOverlay (line 138) | public virtual void ShowGUIOverlay(ToolMode toolMode, bool viewOnly) { }
    method IsCursorInPanel (line 139) | public virtual bool IsCursorInPanel() {
    method GetTutorialKey (line 146) | public virtual string GetTutorialKey() {
    method DragWindow (line 150) | protected void DragWindow(ref Rect window) {

FILE: TLM/TLM/UI/SubTools/JunctionRestrictionsTool.cs
  class JunctionRestrictionsTool (line 22) | public class JunctionRestrictionsTool : SubTool {
    method JunctionRestrictionsTool (line 28) | public JunctionRestrictionsTool(TrafficManagerTool mainTool) : base(ma...
    method OnToolGUI (line 32) | public override void OnToolGUI(Event e) {
    method RenderInfoOverlay (line 39) | public override void RenderInfoOverlay(RenderManager.CameraInfo camera...
    method RenderOverlay (line 43) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method ShowGUIOverlay (line 55) | public override void ShowGUIOverlay(ToolMode toolMode, bool viewOnly) {
    method ShowSigns (line 66) | private void ShowSigns(bool viewOnly) {
    method OnPrimaryClickOverlay (line 118) | public override void OnPrimaryClickOverlay() {
    method OnSecondaryClickOverlay (line 132) | public override void OnSecondaryClickOverlay() {
    method OnActivate (line 136) | public override void OnActivate() {
    method Cleanup (line 144) | public override void Cleanup() {
    method Initialize (line 154) | public override void Initialize() {
    method RefreshCurrentRestrictedNodeIds (line 164) | private void RefreshCurrentRestrictedNodeIds(ushort forceNodeId=0) {
    method drawSignHandles (line 182) | private bool drawSignHandles(bool debug, ushort nodeId, ref NetNode no...
    method DrawSign (line 393) | private void DrawSign(bool viewOnly, bool small, ref Vector3 camPos, r...

FILE: TLM/TLM/UI/SubTools/LaneArrowTool.cs
  class LaneArrowTool (line 21) | public class LaneArrowTool : SubTool {
    method LaneArrowTool (line 24) | public LaneArrowTool(TrafficManagerTool mainTool) : base(mainTool) {
    method IsCursorInPanel (line 28) | public override bool IsCursorInPanel() {
    method OnPrimaryClickOverlay (line 32) | public override void OnPrimaryClickOverlay() {
    method OnSecondaryClickOverlay (line 47) | public override void OnSecondaryClickOverlay() {
    method OnToolGUI (line 54) | public override void OnToolGUI(Event e) {
    method RenderOverlay (line 88) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method _guiLaneChangeWindow (line 105) | private void _guiLaneChangeWindow(int num) {

FILE: TLM/TLM/UI/SubTools/LaneConnectorTool.cs
  class LaneConnectorTool (line 18) | public class LaneConnectorTool : SubTool {
    type MarkerSelectionMode (line 19) | enum MarkerSelectionMode {
    type StayInLaneMode (line 25) | enum StayInLaneMode {
    class NodeLaneMarker (line 39) | class NodeLaneMarker {
    method LaneConnectorTool (line 57) | public LaneConnectorTool(TrafficManagerTool mainTool) : base(mainTool) {
    method OnToolGUI (line 62) | public override void OnToolGUI(Event e) {
    method RenderInfoOverlay (line 66) | public override void RenderInfoOverlay(RenderManager.CameraInfo camera...
    method ShowOverlay (line 70) | private void ShowOverlay(bool viewOnly, RenderManager.CameraInfo camer...
    method IsLaneMarkerHovered (line 160) | private bool IsLaneMarkerHovered(NodeLaneMarker laneMarker, ref Ray mo...
    method RenderOverlay (line 171) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method OnPrimaryClickOverlay (line 254) | public override void OnPrimaryClickOverlay() {
    method OnSecondaryClickOverlay (line 359) | public override void OnSecondaryClickOverlay() {
    method OnActivate (line 395) | public override void OnActivate() {
    method RefreshCurrentNodeMarkers (line 408) | private void RefreshCurrentNodeMarkers(ushort forceNodeId=0) {
    method GetMarkerSelectionMode (line 431) | private MarkerSelectionMode GetMarkerSelectionMode() {
    method Cleanup (line 439) | public override void Cleanup() {
    method Initialize (line 443) | public override void Initialize() {
    method GetNodeMarkers (line 453) | private List<NodeLaneMarker> GetNodeMarkers(ushort nodeId, ref NetNode...
    method CheckSegmentsTurningAngle (line 541) | private bool CheckSegmentsTurningAngle(ushort sourceSegmentId, ref Net...
    method RenderLane (line 568) | private void RenderLane(RenderManager.CameraInfo cameraInfo, Vector3 s...
    method RayCastSegmentAndNode (line 577) | private bool RayCastSegmentAndNode(out ToolBase.RaycastOutput output) {

FILE: TLM/TLM/UI/SubTools/ManualTrafficLightsTool.cs
  class ManualTrafficLightsTool (line 19) | public class ManualTrafficLightsTool : SubTool {
    method ManualTrafficLightsTool (line 23) | public ManualTrafficLightsTool(TrafficManagerTool mainTool) : base(mai...
    method OnSecondaryClickOverlay (line 27) | public override void OnSecondaryClickOverlay() {
    method OnPrimaryClickOverlay (line 34) | public override void OnPrimaryClickOverlay() {
    method OnToolGUI (line 63) | public override void OnToolGUI(Event e) {
    method RenderOverlay (line 214) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method RenderManualPedestrianLightSwitch (line 222) | private bool RenderManualPedestrianLightSwitch(float zoom, int segment...
    method IsPedestrianLightHovered (line 253) | private bool IsPedestrianLightHovered(Rect myRect3, int segmentId, boo...
    method GetHoveredSegment (line 273) | private bool GetHoveredSegment(Rect myRect1, int segmentId, bool hover...
    method RenderCounter (line 287) | private bool RenderCounter(int segmentId, Vector3 screenPos, float mod...
    method SimpleManualSegmentLightMode (line 314) | private bool SimpleManualSegmentLightMode(int segmentId, Vector3 scree...
    method LeftForwardRManualSegmentLightMode (line 342) | private bool LeftForwardRManualSegmentLightMode(bool hasLeftSegment, i...
    method RightForwardLSegmentLightMode (line 420) | private bool RightForwardLSegmentLightMode(int segmentId, Vector3 scre...
    method LeftArrowLightMode (line 511) | private bool LeftArrowLightMode(int segmentId, float lightWidth, bool ...
    method ForwardArrowLightMode (line 552) | private bool ForwardArrowLightMode(int segmentId, float lightWidth, bo...
    method RightArrowLightMode (line 587) | private bool RightArrowLightMode(int segmentId, Vector3 screenPos, flo...
    method CalculateNodePositionForSegment (line 616) | private Vector3 CalculateNodePositionForSegment(NetNode node, int segm...
    method CalculateNodePositionForSegment (line 632) | private Vector3 CalculateNodePositionForSegment(NetNode node, ref NetS...
    method SetAlpha (line 650) | private void SetAlpha(int segmentId, int buttonId) {
    method RenderManualSelectionOverlay (line 658) | private void RenderManualSelectionOverlay(RenderManager.CameraInfo cam...
    method RenderManualNodeOverlays (line 676) | private void RenderManualNodeOverlays(RenderManager.CameraInfo cameraI...
    method Cleanup (line 684) | public override void Cleanup() {

FILE: TLM/TLM/UI/SubTools/ParkingRestrictionsTool.cs
  class ParkingRestrictionsTool (line 24) | public class ParkingRestrictionsTool : SubTool {
    method ParkingRestrictionsTool (line 30) | public ParkingRestrictionsTool(TrafficManagerTool mainTool) : base(mai...
    method OnActivate (line 34) | public override void OnActivate() {
    method OnPrimaryClickOverlay (line 38) | public override void OnPrimaryClickOverlay() {
    method RenderOverlay (line 42) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method ShowGUIOverlay (line 46) | public override void ShowGUIOverlay(ToolMode toolMode, bool viewOnly) {
    method Cleanup (line 54) | public override void Cleanup() {
    method ShowSigns (line 64) | private void ShowSigns(bool viewOnly) {
    method drawParkingRestrictionHandles (line 121) | private bool drawParkingRestrictionHandles(ushort segmentId, bool clic...

FILE: TLM/TLM/UI/SubTools/PrioritySignsTool.cs
  class PrioritySignsTool (line 23) | public class PrioritySignsTool : SubTool {
    type PrioritySignsMassEditMode (line 24) | public enum PrioritySignsMassEditMode {
    method PrioritySignsTool (line 35) | public PrioritySignsTool(TrafficManagerTool mainTool) : base(mainTool) {
    method OnPrimaryClickOverlay (line 39) | public override void OnPrimaryClickOverlay() {
    method OnToolGUI (line 109) | public override void OnToolGUI(Event e) {
    method RenderOverlay (line 113) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method RefreshCurrentPriorityNodeIds (line 151) | private void RefreshCurrentPriorityNodeIds() {
    method ShowGUIOverlay (line 177) | public override void ShowGUIOverlay(ToolMode toolMode, bool viewOnly) {
    method ShowGUI (line 187) | public void ShowGUI(bool viewOnly) {
    method SetPrioritySign (line 293) | public bool SetPrioritySign(ushort segmentId, bool startNode, Priority...
    method Cleanup (line 331) | public override void Cleanup() {
    method OnActivate (line 346) | public override void OnActivate() {
    method Initialize (line 350) | public override void Initialize() {
    method MayNodeHavePrioritySigns (line 360) | private bool MayNodeHavePrioritySigns(ushort nodeId) {

FILE: TLM/TLM/UI/SubTools/SpeedLimitsTool.cs
  class SpeedLimitsTool (line 23) | public class SpeedLimitsTool : SubTool {
    method SpeedLimitsTool (line 47) | public SpeedLimitsTool(TrafficManagerTool mainTool) : base(mainTool) {
    method IsCursorInPanel (line 51) | public override bool IsCursorInPanel() {
    method OnActivate (line 55) | public override void OnActivate() {
    method OnPrimaryClickOverlay (line 59) | public override void OnPrimaryClickOverlay() {
    method OnToolGUI (line 63) | public override void OnToolGUI(Event e) {
    method RenderOverlay (line 76) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method ShowGUIOverlay (line 80) | public override void ShowGUIOverlay(ToolMode toolMode, bool viewOnly) {
    method Cleanup (line 88) | public override void Cleanup() {
    method ShowSigns (line 100) | private void ShowSigns(bool viewOnly) {
    method _guiDefaultsWindow (line 156) | private void _guiDefaultsWindow(int num) {
    method UpdateRoadTex (line 302) | private void UpdateRoadTex(NetInfo info) {
    method _guiSpeedLimitsWindow (line 325) | private void _guiSpeedLimitsWindow(int num) {
    method drawSpeedLimitHandles (line 356) | private bool drawSpeedLimitHandles(ushort segmentId, ref NetSegment se...

FILE: TLM/TLM/UI/SubTools/TimedTrafficLightsTool.cs
  class TimedTrafficLightsTool (line 20) | public class TimedTrafficLightsTool : SubTool {
    method TimedTrafficLightsTool (line 51) | public TimedTrafficLightsTool(TrafficManagerTool mainTool) : base(main...
    method IsCursorInPanel (line 55) | public override bool IsCursorInPanel() {
    method RefreshCurrentTimedNodeIds (line 59) | private void RefreshCurrentTimedNodeIds(ushort forceNodeId=0) {
    method OnActivate (line 79) | public override void OnActivate() {
    method OnSecondaryClickOverlay (line 94) | public override void OnSecondaryClickOverlay() {
    method OnPrimaryClickOverlay (line 101) | public override void OnPrimaryClickOverlay() {
    method OnToolGUI (line 222) | public override void OnToolGUI(Event e) {
    method RenderOverlay (line 240) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method _guiTimedControlPanel (line 260) | private void _guiTimedControlPanel(int num) {
    method Cleanup (line 651) | public override void Cleanup() {
    method Initialize (line 665) | public override void Initialize() {
    method BuildStepChangeMetricDisplay (line 675) | private void BuildStepChangeMetricDisplay(bool editable) {
    method BuildFlowPolicyDisplay (line 707) | private void BuildFlowPolicyDisplay(bool editable) {
    method GetStepChangeMetricDescription (line 776) | private string GetStepChangeMetricDescription(StepChangeMetric metric) {
    method _guiTimedTrafficLightsNode (line 792) | private void _guiTimedTrafficLightsNode() {
    method _guiTimedTrafficLights (line 800) | private void _guiTimedTrafficLights() {
    method _guiTimedTrafficLightsCopy (line 815) | private void _guiTimedTrafficLightsCopy() {
    method _guiTimedTrafficLightsPasteWindow (line 823) | private void _guiTimedTrafficLightsPasteWindow(int num) {
    method _guiTimedTrafficLightsNodeWindow (line 827) | private void _guiTimedTrafficLightsNodeWindow(int num) {
    method getWaitFlowBalanceInfo (line 854) | private string getWaitFlowBalanceInfo() {
    method DisableTimed (line 872) | private void DisableTimed() {
    method AddSelectedNode (line 883) | private void AddSelectedNode(ushort node) {
    method IsNodeSelected (line 887) | private bool IsNodeSelected(ushort node) {
    method RemoveSelectedNode (line 891) | private void RemoveSelectedNode(ushort node) {
    method ClearSelectedNodes (line 895) | private void ClearSelectedNodes() {
    method drawStraightLightTexture (line 899) | private void drawStraightLightTexture(RoadBaseAI.TrafficLightState sta...
    method drawForwardLeftLightTexture (line 917) | private void drawForwardLeftLightTexture(RoadBaseAI.TrafficLightState ...
    method drawForwardRightLightTexture (line 935) | private void drawForwardRightLightTexture(RoadBaseAI.TrafficLightState...
    method drawLeftLightTexture (line 953) | private void drawLeftLightTexture(RoadBaseAI.TrafficLightState state, ...
    method drawRightLightTexture (line 971) | private void drawRightLightTexture(RoadBaseAI.TrafficLightState state,...
    method drawMainLightTexture (line 989) | private void drawMainLightTexture(RoadBaseAI.TrafficLightState state, ...
    method ShowGUIOverlay (line 1007) | public override void ShowGUIOverlay(ToolMode toolMode, bool viewOnly) {
    method ShowGUI (line 1043) | private void ShowGUI() {

FILE: TLM/TLM/UI/SubTools/ToggleTrafficLightsTool.cs
  class ToggleTrafficLightsTool (line 15) | public class ToggleTrafficLightsTool : SubTool {
    method ToggleTrafficLightsTool (line 16) | public ToggleTrafficLightsTool(TrafficManagerTool mainTool) : base(mai...
    method OnPrimaryClickOverlay (line 20) | public override void OnPrimaryClickOverlay() {
    method ToggleTrafficLight (line 32) | public void ToggleTrafficLight(ushort nodeId, ref NetNode node, bool s...
    method OnToolGUI (line 54) | public override void OnToolGUI(Event e) {
    method RenderOverlay (line 58) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {

FILE: TLM/TLM/UI/SubTools/VehicleRestrictionsTool.cs
  class VehicleRestrictionsTool (line 21) | public class VehicleRestrictionsTool : SubTool {
    method VehicleRestrictionsTool (line 30) | public VehicleRestrictionsTool(TrafficManagerTool mainTool) : base(mai...
    method OnActivate (line 34) | public override void OnActivate() {
    method RefreshCurrentRestrictedSegmentIds (line 39) | private void RefreshCurrentRestrictedSegmentIds(ushort forceSegmentId=...
    method Cleanup (line 56) | public override void Cleanup() {
    method Initialize (line 60) | public override void Initialize() {
    method IsCursorInPanel (line 70) | public override bool IsCursorInPanel() {
    method OnPrimaryClickOverlay (line 74) | public override void OnPrimaryClickOverlay() {
    method OnSecondaryClickOverlay (line 84) | public override void OnSecondaryClickOverlay() {
    method OnToolGUI (line 90) | public override void OnToolGUI(Event e) {
    method RenderOverlay (line 104) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
    method ShowGUIOverlay (line 118) | public override void ShowGUIOverlay(ToolMode toolMode, bool viewOnly) {
    method ShowSigns (line 125) | private void ShowSigns(bool viewOnly) {
    method _guiVehicleRestrictionsWindow (line 163) | private void _guiVehicleRestrictionsWindow(int num) {
    method ApplyRestrictionsToAllSegments (line 235) | private void ApplyRestrictionsToAllSegments(int? sortedLaneIndex=null) {
    method drawVehicleRestrictionHandles (line 279) | private bool drawVehicleRestrictionHandles(ushort segmentId, ref NetSe...

FILE: TLM/TLM/UI/TextureResources.cs
  class TextureResources (line 17) | public class TextureResources
    method TextureResources (line 71) | static TextureResources()
    method LoadDllResource (line 196) | private static Texture2D LoadDllResource(string resourceName, int widt...
    method ReadToEnd (line 220) | static byte[] ReadToEnd(Stream stream)

FILE: TLM/TLM/UI/ToolMode.cs
  type ToolMode (line 3) | public enum ToolMode

FILE: TLM/TLM/UI/TrafficManagerTool.cs
  type NodeVisitItem (line 28) | public struct NodeVisitItem {
    method NodeVisitItem (line 32) | public NodeVisitItem(ushort nodeId, bool startNode) {
  method TrafficManagerTool (line 62) | static TrafficManagerTool() {
  method GetToolController (line 66) | internal ToolController GetToolController() {
  method MoveGUI (line 70) | internal static Rect MoveGUI(Rect rect) {
  method IsNodeWithinViewDistance (line 76) | internal bool IsNodeWithinViewDistance(ushort nodeId) {
  method IsSegmentWithinViewDistance (line 85) | internal bool IsSegmentWithinViewDistance(ushort segmentId) {
  method IsPosWithinOverlayDistance (line 95) | internal bool IsPosWithinOverlayDistance(Vector3 position) {
  method AdaptWidth (line 99) | internal static float AdaptWidth(float originalWidth) {
  method GetBaseZoom (line 104) | internal float GetBaseZoom() {
  method GetWindowAlpha (line 108) | internal float GetWindowAlpha() {
  method GetHandleAlpha (line 112) | internal float GetHandleAlpha(bool hovered) {
  method TransparencyToAlpha (line 121) | private static float TransparencyToAlpha(byte transparency) {
  method Initialize (line 125) | internal void Initialize() {
  method OnUpdate (line 156) | public void OnUpdate(GlobalConfig config) {
  method InitializeSubTools (line 160) | internal void InitializeSubTools() {
  method Awake (line 166) | protected override void Awake() {
  method GetSubTool (line 171) | public SubTool GetSubTool(ToolMode mode) {
  method GetToolMode (line 179) | public ToolMode GetToolMode() {
  method SetToolMode (line 183) | public void SetToolMode(ToolMode mode) {
  method OnEnable (line 236) | protected override void OnEnable() {
  method OnDisable (line 244) | protected override void OnDisable() {
  method RenderGeometry (line 247) | public override void RenderGeometry(RenderManager.CameraInfo cameraInfo) {
  method RenderOverlay (line 257) | public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) {
  method OnToolUpdate (line 280) | protected override void OnToolUpdate() {
  method OnToolGUI (line 333) | protected override void OnToolGUI(Event e) {
  method DrawNodeCircle (line 375) | public void DrawNodeCircle(RenderManager.CameraInfo cameraInfo, ushort n...
  method DrawNodeCircle (line 379) | public void DrawNodeCircle(RenderManager.CameraInfo cameraInfo, ushort n...
  method DrawOverlayBezier (line 396) | private void DrawOverlayBezier(RenderManager.CameraInfo cameraInfo, Bezi...
  method DrawOverlayCircle (line 402) | private void DrawOverlayCircle(RenderManager.CameraInfo cameraInfo, Colo...
  method DrawStaticSquareOverlayGridTexture (line 407) | public void DrawStaticSquareOverlayGridTexture(Texture2D texture, Vector...
  method DrawHoverableSquareOverlayGridTexture (line 412) | public bool DrawHoverableSquareOverlayGridTexture(Texture2D texture, Vec...
  method DrawGenericSquareOverlayGridTexture (line 417) | public bool DrawGenericSquareOverlayGridTexture(Texture2D texture, Vecto...
  method DrawStaticOverlayGridTexture (line 422) | public void DrawStaticOverlayGridTexture(Texture2D texture, Vector3 camP...
  method DrawHoverableOverlayGridTexture (line 427) | public bool DrawHoverableOverlayGridTexture(Texture2D texture, Vector3 c...
  method DrawGenericOverlayGridTexture (line 432) | public bool DrawGenericOverlayGridTexture(Texture2D texture, Vector3 cam...
  method DrawStaticSquareOverlayTexture (line 438) | public void DrawStaticSquareOverlayTexture(Texture2D texture, Vector3 ca...
  method DrawHoverableSquareOverlayTexture (line 442) | public bool DrawHoverableSquareOverlayTexture(Texture2D texture, Vector3...
  method DrawGenericSquareOverlayTexture (line 446) | public bool DrawGenericSquareOverlayTexture(Texture2D texture, Vector3 c...
  method DrawStaticOverlayTexture (line 450) | public void DrawStaticOverlayTexture(Texture2D texture, Vector3 camPos, ...
  method DrawHoverableOverlayTexture (line 454) | public bool DrawHoverableOverlayTexture(Texture2D texture, Vector3 camPo...
  method DrawGenericOverlayTexture (line 458) | public bool DrawGenericOverlayTexture(Texture2D texture, Vector3 camPos,...
  method WorldToScreenPoint (line 490) | public bool WorldToScreenPoint(Vector3 worldPos, out Vector3 screenPos) {
  method ShowAdvisor (line 501) | public static void ShowAdvisor(string localeKey) {
  method SimulationStep (line 522) | public override void SimulationStep() {
  method DoRayCast (line 553) | public bool DoRayCast(RaycastInput input, out RaycastOutput output) {
  method determineHoveredElements (line 557) | private bool determineHoveredElements() {
  method _guiLanes (line 674) | private void _guiLanes(ushort segmentId, ref NetSegment segment, ref Net...
  method _guiSegments (line 763) | private void _guiSegments() {
  method _guiNodes (line 867) | private void _guiNodes() {
  method _guiVehicles (line 907) | private void _guiVehicles() {
  method _guiCitizens (line 971) | private void _guiCitizens() {

FILE: TLM/TLM/UI/Translation.cs
  class Translation (line 14) | public class Translation {
    method Translation (line 23) | static Translation() {
    method GetString (line 61) | public static string GetString(string key) {
    method HasString (line 71) | public static bool HasString(string key) {
    method GetTranslatedFileName (line 76) | public static string GetTranslatedFileName(string filename) {
    method GetCurrentLanguage (line 112) | public static string GetCurrentLanguage() {
    method SetCurrentLanguage (line 121) | public static void SetCurrentLanguage(string lang) {
    method LoadTranslations (line 130) | private static void LoadTranslations() {
    method ReloadTutorialTranslations (line 165) | public static void ReloadTutorialTranslations() {
    method getMenuWidth (line 196) | internal static int getMenuWidth() {
    method OnLevelUnloading (line 215) | internal static void OnLevelUnloading() {

FILE: TLM/TLM/UI/TransportDemandViewMode.cs
  type TransportDemandViewMode (line 2) | public enum TransportDemandViewMode {

FILE: TLM/TLM/UI/UIBase.cs
  class UIBase (line 12) | public class UIBase : UICustomControl {
    method GetTrafficManagerTool (line 19) | public static TrafficManagerTool GetTrafficManagerTool(bool createIfRe...
    method UIBase (line 34) | public UIBase() {
    method IsVisible (line 59) | public bool IsVisible() {
    method ToggleMainMenu (line 63) | public void ToggleMainMenu() {
    method RebuildMenu (line 70) | internal void RebuildMenu() {
    method Show (line 90) | public void Show() {
    method Close (line 112) | public void Close() {
    method GetMenu (line 127) | internal MainMenuPanel GetMenu() {
    method GetDebugMenu (line 132) | internal DebugMenuPanel GetDebugMenu() {
    method SetToolMode (line 137) | public static void SetToolMode(TrafficManagerMode mode) {
    method EnableTool (line 149) | public static void EnableTool() {
    method DisableTool (line 157) | public static void DisableTool() {
    method ReleaseTool (line 163) | internal static void ReleaseTool() {
    method DestroyTool (line 170) | private static void DestroyTool() {

FILE: TLM/TLM/UI/UIMainMenuButton.cs
  class UIMainMenuButton (line 13) | public class UIMainMenuButton : UIButton, IObserver<GlobalConfig> {
    method Start (line 28) | public override void Start() {
    method OnDestroy (line 63) | public override void OnDestroy() {
    method SetPosLock (line 69) | internal void SetPosLock(bool lck) {
    method OnClick (line 73) | protected override void OnClick(UIMouseEventParameter p) {
    method OnPositionChanged (line 79) | protected override void OnPositionChanged() {
    method UpdateSprites (line 95) | internal void UpdateSprites() {
    method OnUpdate (line 114) | public void OnUpdate(GlobalConfig config) {
    method UpdatePosition (line 118) | public void UpdatePosition(Vector2 pos) {

FILE: TLM/TLM/UI/UITransportDemand.cs
  class UITransportDemand (line 15) | public class UITransportDemand : UIPanel {
    method Start (line 19) | public override void Start() {
    method _createButton (line 48) | private UIButton _createButton(string text, int x, int y, MouseEventHa...
    method clickSwitchViewMode (line 67) | private void clickSwitchViewMode(UIComponent component, UIMouseEventPa...
    method ParentVisibilityChanged (line 77) | private void ParentVisibilityChanged(UIComponent component, bool value) {

FILE: TLM/TLM/Util/GenericObservable.cs
  class GenericObservable (line 9) | public abstract class GenericObservable<T> : IObservable<T> {
    method Subscribe (line 25) | public IDisposable Subscribe(IObserver<T> observer) {
    method NotifyObservers (line 39) | public virtual void NotifyObservers(T subject) {

FILE: TLM/TLM/Util/GenericUnsubscriber.cs
  class GenericUnsubscriber (line 7) | public class GenericUnsubscriber<T> : IDisposable {
    method GenericUnsubscriber (line 12) | public GenericUnsubscriber(List<IObserver<T>> observers, IObserver<T> ...
    method Dispose (line 18) | public void Dispose() {

FILE: TLM/TLM/Util/IObservable.cs
  type IObservable (line 6) | public interface IObservable<T> {
    method Subscribe (line 7) | IDisposable Subscribe(IObserver<T> observer);

FILE: TLM/TLM/Util/IObserver.cs
  type IObserver (line 6) | public interface IObserver<T> {
    method OnUpdate (line 7) | void OnUpdate(T subject);

FILE: TLM/TLM/Util/IVisitor.cs
  type IVisitor (line 6) | public interface IVisitor<Target> {
    method Visit (line 7) | bool Visit(Target target);

FILE: TLM/TLM/Util/LoopUtil.cs
  class LoopUtil (line 7) | public static class LoopUtil {
    method SpiralLoop (line 10) | public static void SpiralLoop(int xCenter, int yCenter, int width, int...
    method SpiralLoop (line 16) | public static void SpiralLoop(int width, int height, TwoDimLoopHandler...

FILE: TLM/TLM/Util/ModsCompatibilityChecker.cs
  class ModsCompatibilityChecker (line 14) | public class ModsCompatibilityChecker {
    method ModsCompatibilityChecker (line 22) | public ModsCompatibilityChecker() {
    method PerformModCheck (line 27) | public void PerformModCheck() {
    method LoadIncompatibleModList (line 49) | private Dictionary<ulong, string> LoadIncompatibleModList() {
    method GetUserModsList (line 69) | private ulong[] GetUserModsList() {

FILE: TLM/TLM/Util/RedirectionHelper.cs
  type RedirectCallsState (line 29) | public struct RedirectCallsState
  method RedirectCalls (line 46) | public static RedirectCallsState RedirectCalls(MethodInfo from, MethodIn...
  method RevertRedirect (line 65) | public static void RevertRedirect(MethodInfo from, RedirectCallsState st...
  method IsRedirected (line 71) | public static bool IsRedirected(MethodInfo from, MethodInfo to) {

FILE: TLM/TLM/Util/SegmentLaneTraverser.cs
  class SegmentLaneTraverser (line 11) | public class SegmentLaneTraverser {
    type LaneStopCriterion (line 14) | [Flags]
    class SegmentLaneVisitData (line 26) | public class SegmentLaneVisitData {
      method SegmentLaneVisitData (line 47) | public SegmentLaneVisitData(SegmentVisitData segVisitData, int sorte...
    method Traverse (line 55) | public static void Traverse(ushort initialSegmentId, TraverseDirection...

FILE: TLM/TLM/Util/SegmentTraverser.cs
  class SegmentTraverser (line 10) | public class SegmentTraverser {
    type TraverseDirection (line 11) | [Flags]
    type TraverseSide (line 19) | [Flags]
    type SegmentStopCriterion (line 30) | [Flags]
    class SegmentVisitData (line 42) | public class SegmentVisitData {
      method SegmentVisitData (line 68) | public SegmentVisitData(SegmentGeometry prevGeo, SegmentGeometry cur...
    method Traverse (line 85) | public static void Traverse(ushort initialSegmentId, TraverseDirection...
    method TraverseRec (line 101) | private static void TraverseRec(SegmentGeometry prevSegGeometry, bool ...

FILE: TLM/TLM/Util/TextureUtil.cs
  class TextureUtil (line 9) | public static class TextureUtil {
    method GenerateLinearAtlas (line 10) | public static UITextureAtlas GenerateLinearAtlas(string name, Texture2...
    method Generate2DAtlas (line 14) | public static UITextureAtlas Generate2DAtlas(string name, Texture2D te...

FILE: TLM/TLM/Util/TinyDictionary.cs
  class TinyDictionary (line 14) | public class TinyDictionary<TKey, TValue> : IDictionary<TKey, TValue> {
    method TinyDictionary (line 19) | public TinyDictionary() {
    method ToString (line 47) | public override string ToString() {
    method ContainsKey (line 74) | public bool ContainsKey(TKey key) {
    method Add (line 78) | public void Add(TKey key, TValue value) {
    method Remove (line 105) | public bool Remove(TKey key) {
    method TryGetValue (line 140) | public bool TryGetValue(TKey key, out TValue value) {
    method Add (line 151) | public void Add(KeyValuePair<TKey, TValue> item) {
    method Clear (line 155) | public void Clear() {
    method Contains (line 161) | public bool Contains(KeyValuePair<TKey, TValue> item) {
    method CopyTo (line 165) | public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) {
    method Remove (line 169) | public bool Remove(KeyValuePair<TKey, TValue> item) {
    method GetEnumerator (line 173) | public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() {
    method GetEnumerator (line 177) | IEnumerator IEnumerable.GetEnumerator() {
    method IndexOfKey (line 181) | protected int IndexOfKey(TKey key) {
    class TinyDictionaryEnumerator (line 194) | protected class TinyDictionaryEnumerator<TKey, TValue> : IEnumerator<K...
      method TinyDictionaryEnumerator (line 198) | public TinyDictionaryEnumerator(TinyDictionary<TKey, TValue> dict) {
      method Dispose (line 214) | public void Dispose() {
      method MoveNext (line 218) | public bool MoveNext() {
      method Reset (line 222) | public void Reset() {

FILE: TLM/TMPE.CitiesGameBridge/Factory/ServiceFactory.cs
  class ServiceFactory (line 6) | public class ServiceFactory : IServiceFactory {
    method ServiceFactory (line 9) | private ServiceFactory() {

FILE: TLM/TMPE.CitiesGameBridge/Service/BuildingService.cs
  class BuildingService (line 6) | public class BuildingService : IBuildingService {
    method BuildingService (
Condensed preview — 297 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,070K chars).
[
  {
    "path": ".gitattributes",
    "chars": 2518,
    "preview": "###############################################################################\n# Set default behavior to automatically "
  },
  {
    "path": ".gitignore",
    "chars": 2756,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
  },
  {
    "path": ".gitmodules",
    "chars": 202,
    "preview": "[submodule \"TLM/OptionsFramework\"]\n\tpath = TLM/OptionsFramework\n\turl = ../OptionsFramework.git\n[submodule \"TLM/CSUtil.Ca"
  },
  {
    "path": ".travis.yml",
    "chars": 120,
    "preview": "language: csharp\nsolution: \"./TLM/TMPE.sln\"\nbranches:\n  only:\n    - master\n    - stable\nnotifications:\n  - email: false\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 53336,
    "preview": "# Cities: Skylines - Traffic Manager: *President Edition* [![Discord](https://img.shields.io/discord/545065285862948894"
  },
  {
    "path": "LICENSE",
    "chars": 1077,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2015 Svetlozar\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "README.md",
    "chars": 2247,
    "preview": "# Traffic Manager: *President Edition* [![Discord](https://img.shields.io/discord/545065285862948894.svg)](https://disc"
  },
  {
    "path": "TLM/.vs/config/applicationhost.config",
    "chars": 84280,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    IIS configuration sections.\n\n    For schema documentation, see\n    %II"
  },
  {
    "path": "TLM/ATTACHING_DEBUGGER.md",
    "chars": 4183,
    "preview": "# Attaching Debugger to Cities.exe\n\nUse this guide to attach a debugger to Cities: Skylines.\n\n> **Notes:**\n> * Attaching"
  },
  {
    "path": "TLM/BUILDING_INSTRUCTIONS.md",
    "chars": 2447,
    "preview": "\n\n# Project building instructions\n\n\n#### Prerequisites:\n* [Git for Windows](https://gitforwindows.org/) / [GitHub Deskto"
  },
  {
    "path": "TLM/CSUtil.Commons/ArrowDirection.cs",
    "chars": 194,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace CSUtil.Commons {\n\tpublic enum ArrowDirect"
  },
  {
    "path": "TLM/CSUtil.Commons/ArrowDirectionUtil.cs",
    "chars": 2587,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace CSUtil.Commons {\n\tpubl"
  },
  {
    "path": "TLM/CSUtil.Commons/Benchmark/Benchmark.cs",
    "chars": 682,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Reflection;\nu"
  },
  {
    "path": "TLM/CSUtil.Commons/Benchmark/BenchmarkProfile.cs",
    "chars": 607,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\n\nnamesp"
  },
  {
    "path": "TLM/CSUtil.Commons/Benchmark/BenchmarkProfileProvider.cs",
    "chars": 2370,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamesp"
  },
  {
    "path": "TLM/CSUtil.Commons/CSUtil.Commons.csproj",
    "chars": 4236,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "TLM/CSUtil.Commons/EnumUtil.cs",
    "chars": 251,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace CSUtil.Commons {\n\tpubl"
  },
  {
    "path": "TLM/CSUtil.Commons/Log.cs",
    "chars": 1432,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Threading;\nusin"
  },
  {
    "path": "TLM/CSUtil.Commons/LogicUtil.cs",
    "chars": 382,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace CSUtil.Commons {\n\tpubl"
  },
  {
    "path": "TLM/CSUtil.Commons/Properties/AssemblyInfo.cs",
    "chars": 1336,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "TLM/CSUtil.Commons/TernaryBool.cs",
    "chars": 188,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace CSUtil.Commons {\n\tpubl"
  },
  {
    "path": "TLM/CSUtil.Commons/TernaryBoolUtil.cs",
    "chars": 765,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace CSUtil.Commons {\n\tpubl"
  },
  {
    "path": "TLM/CSUtil.Commons/ToStringExt.cs",
    "chars": 771,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamesp"
  },
  {
    "path": "TLM/CSUtil.Commons/VectorUtil.cs",
    "chars": 685,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing UnityEngine;\n\nnamespace CSU"
  },
  {
    "path": "TLM/CSUtil.Commons/packages.config",
    "chars": 169,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"StyleCop.Analyzers\" version=\"1.0.2\" targetFramework=\"n"
  },
  {
    "path": "TLM/CSUtil.Redirection/CSUtil.Redirection.csproj",
    "chars": 3145,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "TLM/CSUtil.Redirection/MethodInfoExt.cs",
    "chars": 1135,
    "preview": "using System;\nusing System.Reflection;\n\nnamespace CSUtil.Redirection {\n    public static class MethodInfoExt\n    {\n    "
  },
  {
    "path": "TLM/CSUtil.Redirection/NetworkExtensions.Framework.Unsafe.csproj.DotSettings",
    "chars": 441,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "TLM/CSUtil.Redirection/Properties/AssemblyInfo.cs",
    "chars": 1386,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "TLM/CSUtil.Redirection/RedirectionHelper.cs",
    "chars": 4369,
    "preview": "/*\nThe MIT License (MIT)\nCopyright (c) 2015 Sebastian Schöner\nPermission is hereby granted, free of charge, to any pers"
  },
  {
    "path": "TLM/CSUtil.Redirection/Redirector.cs",
    "chars": 7937,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\n\nname"
  },
  {
    "path": "TLM/CSUtil.Redirection/Transit.Framework.Redirection.csproj.DotSettings",
    "chars": 443,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "TLM/CSUtil.Redirection/Transit.Framework.Unsafe.csproj.DotSettings",
    "chars": 441,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "TLM/PR_REVIEW_INSTRUCTIONS.md",
    "chars": 937,
    "preview": "\n## Pull Request Review\n\n\n### Clone PR as new branch inside repository folder:\n\n#### Github Desktop(Atom-version):\n* the"
  },
  {
    "path": "TLM/TLM/CodeProfiler.cs",
    "chars": 2104,
    "preview": "using ColossalFramework;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nu"
  },
  {
    "path": "TLM/TLM/Constants.cs",
    "chars": 618,
    "preview": "using GenericGameBridge.Factory;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomAmbulanceAI.cs",
    "chars": 3539,
    "preview": "using ColossalFramework;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing TrafficManager.Custom"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomBuildingAI.cs",
    "chars": 1488,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Colle"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomBusAI.cs",
    "chars": 3178,
    "preview": "using ColossalFramework;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing TrafficManager.Custom"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomCarAI.cs",
    "chars": 20606,
    "preview": "#define DEBUGVx\n\nusing System;\nusing System.Collections.Generic;\nusing ColossalFramework;\nusing ColossalFramework.Math;\n"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomCargoTruckAI.cs",
    "chars": 7150,
    "preview": "using System;\nusing ColossalFramework;\nusing UnityEngine;\nusing TrafficManager.State;\nusing TrafficManager.Geometry;\nusi"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomCitizenAI.cs",
    "chars": 27290,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing System;\nusing System.Collections.Generic;\nusing System.Tex"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomCommonBuildingAI.cs",
    "chars": 1873,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Collections.Generic;\nusing System.L"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomFireTruckAI.cs",
    "chars": 3716,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Collections.Generic;\nusing System.T"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomHumanAI.cs",
    "chars": 26298,
    "preview": "using ColossalFramework;\nusing TrafficManager.State;\nusing TrafficManager.Geometry;\nusing TrafficManager.TrafficLight;\nu"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomPassengerCarAI.cs",
    "chars": 41270,
    "preview": "using System;\nusing ColossalFramework;\nusing UnityEngine;\nusing TrafficManager.Custom.PathFinding;\nusing TrafficManager."
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomPoliceCarAI.cs",
    "chars": 3760,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Collections.Generic;\nusing System.T"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomResidentAI.cs",
    "chars": 13232,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Globalization;\nusing ColossalFramework.Math;\nusing CSUtil.Commons;\nusi"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomRoadAI.cs",
    "chars": 43070,
    "preview": "using System;\nusing System.Collections.Generic;\nusing ColossalFramework;\nusing TrafficManager.TrafficLight;\nusing Traffi"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomShipAI.cs",
    "chars": 3259,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Collections.G"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomTaxiAI.cs",
    "chars": 5038,
    "preview": "using ColossalFramework;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing TrafficManager.Custom"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomTouristAI.cs",
    "chars": 11406,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Globalization;\nusing ColossalFramework.Math;\nusing CSUtil.Commons;\nusi"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomTrainAI.cs",
    "chars": 42429,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing System;\nusing System.Collections.Generic;\nusing System.Tex"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomTramBaseAI.cs",
    "chars": 39026,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing System;\nusing System.Collections.Generic;\nusing System.Tex"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomTransportLineAI.cs",
    "chars": 8958,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Collections.G"
  },
  {
    "path": "TLM/TLM/Custom/AI/CustomVehicleAI.cs",
    "chars": 23347,
    "preview": "#define QUEUEDSTATSx\n\nusing ColossalFramework;\nusing ColossalFramework.Math;\nusing System;\nusing System.Collections.Gen"
  },
  {
    "path": "TLM/TLM/Custom/AI/README.md",
    "chars": 2692,
    "preview": "# TM:PE -- /Custom/AI\nDetoured *AI classes.\n## Classes\n- **CustomAmbulanceAI**: Path-finding detours for ambulances.\n- *"
  },
  {
    "path": "TLM/TLM/Custom/Data/CustomVehicle.cs",
    "chars": 6385,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing CSUtil.Commons;\nusing CSUtil.Commons.Benchmark;\nusing Syst"
  },
  {
    "path": "TLM/TLM/Custom/Data/README.md",
    "chars": 137,
    "preview": "# TM:PE -- /Custom/Data\nDetoured data structs.\n## Classes\n- **CustomVehicle**: Detoured for checking when vehicle are sp"
  },
  {
    "path": "TLM/TLM/Custom/Manager/CustomCitizenManager.cs",
    "chars": 1528,
    "preview": "using ColossalFramework.Math;\nusing CSUtil.Commons;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Collecti"
  },
  {
    "path": "TLM/TLM/Custom/Manager/CustomNetManager.cs",
    "chars": 4606,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Collections.G"
  },
  {
    "path": "TLM/TLM/Custom/Manager/CustomVehicleManager.cs",
    "chars": 5356,
    "preview": "using ColossalFramework.Math;\nusing CSUtil.Commons;\nusing CSUtil.Commons.Benchmark;\nusing System;\nusing System.Collecti"
  },
  {
    "path": "TLM/TLM/Custom/Manager/README.md",
    "chars": 538,
    "preview": "# TM:PE -- /Custom/Manager\nDetoured *Manager classes.\n## Classes\n- **CustomCitizenManager**: Implements detours for chec"
  },
  {
    "path": "TLM/TLM/Custom/PathFinding/CustomPathFind.cs",
    "chars": 137059,
    "preview": "#define DEBUGLOCKSx\n#define COUNTSEGMENTSTONEXTJUNCTIONx\n\nusing System;\nusing System.Reflection;\nusing System.Threading"
  },
  {
    "path": "TLM/TLM/Custom/PathFinding/CustomPathFind2.cs",
    "chars": 129997,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing ColossalFramework.UI;\nusing CSUtil.Commons;\nusing System;\n"
  },
  {
    "path": "TLM/TLM/Custom/PathFinding/CustomPathManager.cs",
    "chars": 23842,
    "preview": "#define QUEUEDSTATSx\n#define DEBUGPF3x\n\nusing System;\nusing System.Reflection;\nusing System.Threading;\nusing ColossalFra"
  },
  {
    "path": "TLM/TLM/Custom/PathFinding/README.md",
    "chars": 581,
    "preview": "# TM:PE -- /Custom/PathFinding\nDetoured path-finding classes.\n## Classes\n- **CustomPathFind**: Implements modifications "
  },
  {
    "path": "TLM/TLM/Custom/PathFinding/StockPathFind.cs",
    "chars": 56896,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing ColossalFramework.UI;\nusing System;\nusing System.Threading"
  },
  {
    "path": "TLM/TLM/Custom/README.md",
    "chars": 82,
    "preview": "# TM:PE -- /Custom\nEverything that is being detoured lands here.\n## Classes\n*none*"
  },
  {
    "path": "TLM/TLM/Geometry/GeometryCalculationMode.cs",
    "chars": 203,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Geometr"
  },
  {
    "path": "TLM/TLM/Geometry/ISegmentEndId.cs",
    "chars": 321,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Geometr"
  },
  {
    "path": "TLM/TLM/Geometry/Impl/NodeGeometry.cs",
    "chars": 9636,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing"
  },
  {
    "path": "TLM/TLM/Geometry/Impl/SegmentEndGeometry.cs",
    "chars": 17003,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing GenericGameBridge.Service;\nusing System;\nusing System.Collections."
  },
  {
    "path": "TLM/TLM/Geometry/Impl/SegmentEndId.cs",
    "chars": 1297,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Geometr"
  },
  {
    "path": "TLM/TLM/Geometry/Impl/SegmentGeometry.cs",
    "chars": 55943,
    "preview": "using ColossalFramework;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\nusi"
  },
  {
    "path": "TLM/TLM/Geometry/README.md",
    "chars": 1350,
    "preview": "# TM:PE -- /Custom/Geometry\nClasses for pre-calculated properties of segments, segment ends and nodes.\n## Terminology\nAl"
  },
  {
    "path": "TLM/TLM/LoadingExtension.cs",
    "chars": 88265,
    "preview": "using System;\nusing System.Reflection;\nusing ColossalFramework;\nusing ICities;\nusing TrafficManager.Custom.AI;\nusing Tra"
  },
  {
    "path": "TLM/TLM/Manager/AbstractCustomManager.cs",
    "chars": 2208,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing GenericGameBridge.Factory;\n"
  },
  {
    "path": "TLM/TLM/Manager/AbstractFeatureManager.cs",
    "chars": 965,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/AbstractGeometryObservingManager.cs",
    "chars": 3833,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Syste"
  },
  {
    "path": "TLM/TLM/Manager/IAdvancedParkingManager.cs",
    "chars": 20838,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Traffic;\nusi"
  },
  {
    "path": "TLM/TLM/Manager/ICustomDataManager.cs",
    "chars": 251,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/ICustomManager.cs",
    "chars": 420,
    "preview": "using GenericGameBridge.Factory;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace TrafficM"
  },
  {
    "path": "TLM/TLM/Manager/ICustomSegmentLightsManager.cs",
    "chars": 1195,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Geometry;\nus"
  },
  {
    "path": "TLM/TLM/Manager/IExtBuildingManager.cs",
    "chars": 189,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/IExtCitizenInstanceManager.cs",
    "chars": 962,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Traffic.Data"
  },
  {
    "path": "TLM/TLM/Manager/IExtCitizenManager.cs",
    "chars": 492,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/IFeatureManager.cs",
    "chars": 475,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/IGeometryManager.cs",
    "chars": 1425,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Geometry.Imp"
  },
  {
    "path": "TLM/TLM/Manager/IJunctionRestrictionsManager.cs",
    "chars": 18239,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace T"
  },
  {
    "path": "TLM/TLM/Manager/ILaneArrowManager.cs",
    "chars": 187,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/ILaneConnectionManager.cs",
    "chars": 568,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/IManagerFactory.cs",
    "chars": 1450,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Manager;\n\nna"
  },
  {
    "path": "TLM/TLM/Manager/IOptionsManager.cs",
    "chars": 477,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/IParkingRestrictionsManager.cs",
    "chars": 197,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/IRoutingManager.cs",
    "chars": 4040,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace "
  },
  {
    "path": "TLM/TLM/Manager/ISegmentEndManager.cs",
    "chars": 777,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Geometry;\nus"
  },
  {
    "path": "TLM/TLM/Manager/ISpeedLimitManager.cs",
    "chars": 633,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/ITrafficLightManager.cs",
    "chars": 1145,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/ITrafficLightSimulationManager.cs",
    "chars": 686,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.TrafficLight"
  },
  {
    "path": "TLM/TLM/Manager/ITrafficMeasurementManager.cs",
    "chars": 196,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/ITrafficPriorityManager.cs",
    "chars": 1193,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing static TrafficManager.Traff"
  },
  {
    "path": "TLM/TLM/Manager/ITurnOnRedManager.cs",
    "chars": 553,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Traffic.Data;"
  },
  {
    "path": "TLM/TLM/Manager/IUtilityManager.cs",
    "chars": 185,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Manager"
  },
  {
    "path": "TLM/TLM/Manager/IVehicleBehaviorManager.cs",
    "chars": 4497,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Traffic.Data"
  },
  {
    "path": "TLM/TLM/Manager/IVehicleRestrictionsManager.cs",
    "chars": 3755,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Traffic;\n\nna"
  },
  {
    "path": "TLM/TLM/Manager/IVehicleStateManager.cs",
    "chars": 445,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Traffic.Data"
  },
  {
    "path": "TLM/TLM/Manager/Impl/AdvancedParkingManager.cs",
    "chars": 93014,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Globalization;\nusing ColossalFramework.Math;\nusing CSUtil.Commons;\nusi"
  },
  {
    "path": "TLM/TLM/Manager/Impl/CustomSegmentLightsManager.cs",
    "chars": 11316,
    "preview": "using System;\nusing System.Collections.Generic;\nusing ColossalFramework;\nusing TrafficManager.Geometry;\nusing TrafficMan"
  },
  {
    "path": "TLM/TLM/Manager/Impl/ExtBuildingManager.cs",
    "chars": 1398,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing"
  },
  {
    "path": "TLM/TLM/Manager/Impl/ExtCitizenInstanceManager.cs",
    "chars": 6953,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing"
  },
  {
    "path": "TLM/TLM/Manager/Impl/ExtCitizenManager.cs",
    "chars": 4314,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing"
  },
  {
    "path": "TLM/TLM/Manager/Impl/GeometryManager.cs",
    "chars": 7442,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing"
  },
  {
    "path": "TLM/TLM/Manager/Impl/JunctionRestrictionsManager.cs",
    "chars": 34361,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing "
  },
  {
    "path": "TLM/TLM/Manager/Impl/LaneArrowManager.cs",
    "chars": 5520,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Util;\nusing "
  },
  {
    "path": "TLM/TLM/Manager/Impl/LaneConnectionManager.cs",
    "chars": 23673,
    "preview": "using ColossalFramework;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\nusi"
  },
  {
    "path": "TLM/TLM/Manager/Impl/ManagerFactory.cs",
    "chars": 3058,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Manager;\n\nna"
  },
  {
    "path": "TLM/TLM/Manager/Impl/OptionsManager.cs",
    "chars": 6755,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Traff"
  },
  {
    "path": "TLM/TLM/Manager/Impl/ParkingRestrictionsManager.cs",
    "chars": 4521,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Traff"
  },
  {
    "path": "TLM/TLM/Manager/Impl/RoutingManager.cs",
    "chars": 74232,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing ColossalFramework.UI;\nusing CSUtil.Commons;\nusing System;\n"
  },
  {
    "path": "TLM/TLM/Manager/Impl/SegmentEndManager.cs",
    "chars": 5858,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Traff"
  },
  {
    "path": "TLM/TLM/Manager/Impl/SpeedLimitManager.cs",
    "chars": 31153,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing"
  },
  {
    "path": "TLM/TLM/Manager/Impl/TrafficLightManager.cs",
    "chars": 9956,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Traff"
  },
  {
    "path": "TLM/TLM/Manager/Impl/TrafficLightSimulationManager.cs",
    "chars": 18437,
    "preview": "using System;\nusing ColossalFramework;\nusing TrafficManager.Geometry;\nusing System.Collections.Generic;\nusing TrafficMan"
  },
  {
    "path": "TLM/TLM/Manager/Impl/TrafficMeasurementManager.cs",
    "chars": 10220,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing"
  },
  {
    "path": "TLM/TLM/Manager/Impl/TrafficPriorityManager.cs",
    "chars": 51077,
    "preview": "using System;\nusing System.Collections.Generic;\nusing ColossalFramework;\nusing TrafficManager.TrafficLight;\nusing Traffi"
  },
  {
    "path": "TLM/TLM/Manager/Impl/TurnOnRedManager.cs",
    "chars": 7553,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing "
  },
  {
    "path": "TLM/TLM/Manager/Impl/UtilityManager.cs",
    "chars": 7685,
    "preview": "using ColossalFramework;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Tr"
  },
  {
    "path": "TLM/TLM/Manager/Impl/VehicleBehaviorManager.cs",
    "chars": 67719,
    "preview": "using ColossalFramework;\nusing ColossalFramework.Math;\nusing CSUtil.Commons;\nusing CSUtil.Commons.Benchmark;\nusing Gene"
  },
  {
    "path": "TLM/TLM/Manager/Impl/VehicleRestrictionsManager.cs",
    "chars": 24563,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing"
  },
  {
    "path": "TLM/TLM/Manager/Impl/VehicleStateManager.cs",
    "chars": 11880,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing"
  },
  {
    "path": "TLM/TLM/Manager/README.md",
    "chars": 3352,
    "preview": "# TM:PE -- /Manager\nManager classes that allow for creating and controlling custom behavior.\n## Classes\n- **AbstractCust"
  },
  {
    "path": "TLM/TLM/PrintTransportLines.cs",
    "chars": 2497,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Unity"
  },
  {
    "path": "TLM/TLM/Properties/AssemblyInfo.cs",
    "chars": 1329,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "TLM/TLM/README.md",
    "chars": 594,
    "preview": "# TM:PE -- /\nThis is the project root directory.\n## Classes\n- **CodeProfiler**: Helper class for profiling\n- **Constants"
  },
  {
    "path": "TLM/TLM/Resources/incompatible_mods.txt",
    "chars": 1674,
    "preview": "1581695572;Traffic Manager: President Edition\n1348361731;Traffic Manager: President Edition ALPHA/DEBUG\n498363759;Traffi"
  },
  {
    "path": "TLM/TLM/Resources/lang.txt",
    "chars": 15184,
    "preview": "Switch_traffic_lights Switch traffic lights\nAdd_priority_signs Add priority signs\nManual_traffic_lights Manual traffic l"
  },
  {
    "path": "TLM/TLM/Resources/lang_de.txt",
    "chars": 17087,
    "preview": "Switch_traffic_lights Ampeln setzen\nAdd_priority_signs Vorfahrtsschilder\nManual_traffic_lights Manuelle Ampeln\nTimed_tra"
  },
  {
    "path": "TLM/TLM/Resources/lang_es.txt",
    "chars": 16024,
    "preview": "Switch_traffic_lights Agregar/Borrar semáforos\nAdd_priority_signs Agregar señales de tránsito\nManual_traffic_lights Semá"
  },
  {
    "path": "TLM/TLM/Resources/lang_fr.txt",
    "chars": 18183,
    "preview": "Switch_traffic_lights (Dés)activer les feux tricolores\nAdd_priority_signs Ajouter des signes de priorité\nManual_traffic_"
  },
  {
    "path": "TLM/TLM/Resources/lang_it.txt",
    "chars": 16179,
    "preview": "Switch_traffic_lights Attiva/Disattiva semaforo\nAdd_priority_signs Aggiungi segnale stradale\nManual_traffic_lights Semaf"
  },
  {
    "path": "TLM/TLM/Resources/lang_ja.txt",
    "chars": 13840,
    "preview": "Switch_traffic_lights 信号の付け外し\nAdd_priority_signs 優先関係標識の追加\nManual_traffic_lights 信号の手動切替\nTimed_traffic_lights 時間設定付き信号\nC"
  },
  {
    "path": "TLM/TLM/Resources/lang_ko.txt",
    "chars": 11069,
    "preview": "Switch_traffic_lights 신호등 추가/제거\nAdd_priority_signs 교통 표지판 추가\nManual_traffic_lights 신호등 직접 통제\nTimed_traffic_lights 신호등 시간"
  },
  {
    "path": "TLM/TLM/Resources/lang_nl.txt",
    "chars": 16151,
    "preview": "Switch_traffic_lights Stoplichten omwisselen\nAdd_priority_signs Plaats voorrangsborden\nManual_traffic_lights Handmatige "
  },
  {
    "path": "TLM/TLM/Resources/lang_pl.txt",
    "chars": 16654,
    "preview": "Switch_traffic_lights Włącznik sygnalizacji\nAdd_priority_signs Dodaj znaki pierwszeństwa\nManual_traffic_lights Sygnaliza"
  },
  {
    "path": "TLM/TLM/Resources/lang_pt.txt",
    "chars": 16040,
    "preview": "Switch_traffic_lights Interruptor de Semáforos\nAdd_priority_signs Placas de preferência \nManual_traffic_lights Semáforo "
  },
  {
    "path": "TLM/TLM/Resources/lang_ru.txt",
    "chars": 16878,
    "preview": "Switch_traffic_lights Установка светофора\nAdd_priority_signs Знаки приоритета\nManual_traffic_lights Ручной светофор\nTime"
  },
  {
    "path": "TLM/TLM/Resources/lang_template.txt",
    "chars": 5671,
    "preview": "Switch_traffic_lights\nAdd_priority_signs\nManual_traffic_lights\nTimed_traffic_lights\nChange_lane_arrows\nClear_Traffic\nDis"
  },
  {
    "path": "TLM/TLM/Resources/lang_zh-tw.txt",
    "chars": 12627,
    "preview": "Switch_traffic_lights 增刪號誌燈\nAdd_priority_signs 增訂優先通行權\nManual_traffic_lights 手控號誌燈\nTimed_traffic_lights 號誌燈時相設定\nChange_l"
  },
  {
    "path": "TLM/TLM/Resources/lang_zh.txt",
    "chars": 8868,
    "preview": "Switch_traffic_lights 红绿灯增删\nAdd_priority_signs 添加路口优先权\nManual_traffic_lights 手动控制红绿灯\nTimed_traffic_lights 红绿灯定时设置\nChange"
  },
  {
    "path": "TLM/TLM/State/ConfigData/AdvancedVehicleAI.cs",
    "chars": 1414,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.State.C"
  },
  {
    "path": "TLM/TLM/State/ConfigData/Debug.cs",
    "chars": 1991,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Traffic;\nusi"
  },
  {
    "path": "TLM/TLM/State/ConfigData/DynamicLaneSelection.cs",
    "chars": 1301,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.State.C"
  },
  {
    "path": "TLM/TLM/State/ConfigData/Main.cs",
    "chars": 1615,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.UI.MainMenu;"
  },
  {
    "path": "TLM/TLM/State/ConfigData/ParkingAI.cs",
    "chars": 3782,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.State.C"
  },
  {
    "path": "TLM/TLM/State/ConfigData/PathFinding.cs",
    "chars": 1466,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.State.C"
  },
  {
    "path": "TLM/TLM/State/ConfigData/PriorityRules.cs",
    "chars": 785,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.State.C"
  },
  {
    "path": "TLM/TLM/State/ConfigData/TimedTrafficLights.cs",
    "chars": 584,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.TrafficLight"
  },
  {
    "path": "TLM/TLM/State/Configuration.cs",
    "chars": 8967,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Runtime.Serialization;\nusing System.Xml.Se"
  },
  {
    "path": "TLM/TLM/State/Flags.cs",
    "chars": 35210,
    "preview": "#define DEBUGFLAGSx\n\nusing ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusi"
  },
  {
    "path": "TLM/TLM/State/GlobalConfig.cs",
    "chars": 9446,
    "preview": "#define RUSHHOUR\n\nusing ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing "
  },
  {
    "path": "TLM/TLM/State/Options.cs",
    "chars": 62152,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UnityEngine;\nusing ColossalFramework;\nusing Co"
  },
  {
    "path": "TLM/TLM/State/README.md",
    "chars": 652,
    "preview": "# TM:PE -- /State\nConfiguration and classes for loading and saving.\n## Classes\n- **Configuration**: Serializable classes"
  },
  {
    "path": "TLM/TLM/State/SerializableDataExtension.cs",
    "chars": 13426,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Runtime.Serialization.Formatters.Binary;\n"
  },
  {
    "path": "TLM/TLM/TLM.csproj",
    "chars": 25930,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "TLM/TLM/TMPE.csproj",
    "chars": 17845,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "TLM/TLM/ThreadingExtension.cs",
    "chars": 4015,
    "preview": "using System;\nusing System.Reflection;\nusing ColossalFramework;\nusing ICities;\nusing TrafficManager.Custom.AI;\nusing Uni"
  },
  {
    "path": "TLM/TLM/Traffic/Data/ExtBuilding.cs",
    "chars": 3448,
    "preview": "using ColossalFramework;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Tr"
  },
  {
    "path": "TLM/TLM/Traffic/Data/ExtCitizen.cs",
    "chars": 2419,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Traff"
  },
  {
    "path": "TLM/TLM/Traffic/Data/ExtCitizenInstance.cs",
    "chars": 17138,
    "preview": "using ColossalFramework;\nusing CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing"
  },
  {
    "path": "TLM/TLM/Traffic/Data/PrioritySegment.cs",
    "chars": 1402,
    "preview": "using System;\n\nnamespace TrafficManager.Traffic.Data {\n\t/// <summary>\n\t/// A priority segment specifies the priority sig"
  },
  {
    "path": "TLM/TLM/Traffic/Data/SegmentEndFlags.cs",
    "chars": 7753,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Traff"
  },
  {
    "path": "TLM/TLM/Traffic/Data/SegmentFlags.cs",
    "chars": 4344,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Traff"
  },
  {
    "path": "TLM/TLM/Traffic/Data/TurnOnRedSegments.cs",
    "chars": 760,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Traffic"
  },
  {
    "path": "TLM/TLM/Traffic/Data/VehicleState.cs",
    "chars": 20050,
    "preview": "#define DEBUGVSTATEx\n#define DEBUGREGx\n\nusing System;\nusing ColossalFramework;\nusing UnityEngine;\nusing System.Collectio"
  },
  {
    "path": "TLM/TLM/Traffic/ExtVehicleType.cs",
    "chars": 1061,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace TrafficManager.Traffic {\n\t[Flags]\n\tpublic"
  },
  {
    "path": "TLM/TLM/Traffic/ISegmentEnd.cs",
    "chars": 487,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Geometry;\n\nn"
  },
  {
    "path": "TLM/TLM/Traffic/Impl/SegmentEnd.cs",
    "chars": 9705,
    "preview": "#define DEBUGFRONTVEHx\n#define DEBUGREGx\n#define DEBUGMETRIC\n#define DEBUGMETRIC2x\n\nusing System;\nusing System.Collectio"
  },
  {
    "path": "TLM/TLM/Traffic/README.md",
    "chars": 1130,
    "preview": "# TM:PE -- /Traffic\nAuxiliary and traffic related data structures.\n## Classes\n- **ExtBuilding**: Extended building data."
  },
  {
    "path": "TLM/TLM/Traffic/VehicleJunctionTransitState.cs",
    "chars": 516,
    "preview": "namespace TrafficManager.Traffic {\n\tpublic enum VehicleJunctionTransitState {\n\t\t/// <summary>\n\t\t/// Represents an unknow"
  },
  {
    "path": "TLM/TLM/TrafficLight/Data/TrafficLightSimulation.cs",
    "chars": 3755,
    "preview": "using System;\nusing ColossalFramework;\nusing TrafficManager.Geometry;\nusing System.Collections.Generic;\nusing TrafficMan"
  },
  {
    "path": "TLM/TLM/TrafficLight/FlowWaitCalcMode.cs",
    "chars": 328,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Traffic"
  },
  {
    "path": "TLM/TLM/TrafficLight/ICustomSegmentLight.cs",
    "chars": 1309,
    "preview": "using CSUtil.Commons;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace "
  },
  {
    "path": "TLM/TLM/TrafficLight/ICustomSegmentLights.cs",
    "chars": 1772,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing TrafficManager.Geometry;\nus"
  },
  {
    "path": "TLM/TLM/TrafficLight/ITimedTrafficLights.cs",
    "chars": 1696,
    "preview": "using System.Collections.Generic;\nusing CSUtil.Commons;\nusing TrafficManager.Geometry.Impl;\nusing TrafficManager.Traffi"
  },
  {
    "path": "TLM/TLM/TrafficLight/ITimedTrafficLightsStep.cs",
    "chars": 1639,
    "preview": "using System.Collections.Generic;\nusing TrafficManager.Geometry.Impl;\nusing TrafficManager.Manager;\nusing TrafficManage"
  },
  {
    "path": "TLM/TLM/TrafficLight/Impl/CustomSegment.cs",
    "chars": 442,
    "preview": "using System.Collections.Generic;\nusing TrafficManager.Geometry;\n\nnamespace TrafficManager.TrafficLight.Impl {\n    class"
  },
  {
    "path": "TLM/TLM/TrafficLight/Impl/CustomSegmentLight.cs",
    "chars": 13176,
    "preview": "#define DEBUGVISUALSx\n\nusing System;\nusing System.Collections.Generic;\nusing ColossalFramework;\nusing TrafficManager.Ge"
  },
  {
    "path": "TLM/TLM/TrafficLight/Impl/CustomSegmentLights.cs",
    "chars": 27438,
    "preview": "#define DEBUGGETx\n\nusing System;\nusing System.Collections.Generic;\nusing ColossalFramework;\nusing TrafficManager.Geomet"
  },
  {
    "path": "TLM/TLM/TrafficLight/Impl/TimedTrafficLights.cs",
    "chars": 40228,
    "preview": "#define DEBUGTTLx\n\nusing System;\nusing System.Collections.Generic;\nusing ColossalFramework;\nusing TrafficManager.Custom."
  },
  {
    "path": "TLM/TLM/TrafficLight/Impl/TimedTrafficLightsStep.cs",
    "chars": 45284,
    "preview": "#define DEBUGSTEPx\n#define DEBUGTTLx\n#define DEBUGMETRICx\n\nusing System;\nusing System.Collections.Generic;\nusing Colossa"
  },
  {
    "path": "TLM/TLM/TrafficLight/LightMode.cs",
    "chars": 255,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Traffic"
  },
  {
    "path": "TLM/TLM/TrafficLight/README.md",
    "chars": 1026,
    "preview": "# TM:PE -- /TrafficLight\nCustom traffic light data structures.\n## Classes\n- **CustomSegment**: Holds references to both "
  },
  {
    "path": "TLM/TLM/TrafficLight/StepChangeMetric.cs",
    "chars": 624,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Traffic"
  },
  {
    "path": "TLM/TLM/TrafficLight/TrafficLightSimulationType.cs",
    "chars": 201,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TrafficManager.Traffic"
  },
  {
    "path": "TLM/TLM/TrafficManager.cs",
    "chars": 840,
    "preview": "using GenericGameBridge.Factory;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n"
  },
  {
    "path": "TLM/TLM/TrafficManagerMod.cs",
    "chars": 1447,
    "preview": "using CSUtil.Commons;\nusing ICities;\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing ColossalFrame"
  },
  {
    "path": "TLM/TLM/TrafficManagerMode.cs",
    "chars": 116,
    "preview": "namespace TrafficManager\n{\n    public enum TrafficManagerMode\n    {\n        None = 0,\n        Activated = 1\n    }\n}\n"
  },
  {
    "path": "TLM/TLM/UI/CustomKeyHandler.cs",
    "chars": 514,
    "preview": "using ColossalFramework.UI;\nusing CSUtil.Commons;\nusing UnityEngine;\n\nnamespace TrafficManager.UI {\n    public class Cus"
  },
  {
    "path": "TLM/TLM/UI/IncompatibleModsPanel.cs",
    "chars": 9741,
    "preview": "using System;\nusing System.Collections.Generic;\nusing ColossalFramework;\nusing ColossalFramework.Globalization;\nusing Co"
  }
]

// ... and 97 more files (download for full content)

About this extraction

This page contains the full source code of the VictorPhilipp/Cities-Skylines-Traffic-Manager-President-Edition GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 297 files (2.6 MB), approximately 702.1k tokens, and a symbol index with 2194 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!