diff --git a/CSharpCodeAnalyst/App.xaml.cs b/CSharpCodeAnalyst/App.xaml.cs index 862c8f3..1f1a302 100644 --- a/CSharpCodeAnalyst/App.xaml.cs +++ b/CSharpCodeAnalyst/App.xaml.cs @@ -103,17 +103,22 @@ private void StartUi() var explorer = new CodeGraphExplorer(); var mainWindow = new MainWindow(); - var explorationGraphViewer = new GraphViewer(messaging, applicationSettings.WarningCodeElementLimit); + // The shared, render-agnostic model the web view observes and drives. + var graphViewState = new GraphViewState(); + + // Graph search reads/writes the shared GraphViewState (search highlights live in + // PresentationState, which the web view renders). + var graphSearchViewModel = new GraphSearchViewModel(graphViewState); var refactoringInteraction = new RefactoringInteraction(); var refactoringService = new RefactoringService(refactoringInteraction, messaging); - mainWindow.SetViewer(explorationGraphViewer, messaging); + mainWindow.SetViewer(graphViewState, messaging, messaging, applicationSettings); var projectStorage = new JsonProjectStorage(); var projectService = new ProjectService(projectStorage, uiNotification, userSettings); var viewModel = new MainViewModel(messaging, applicationSettings, userSettings, analyzerManager, refactoringService, projectService); - var graphViewModel = new GraphViewModel(explorationGraphViewer, explorer, messaging, applicationSettings, refactoringService); + var graphViewModel = new GraphViewModel(graphViewState, explorer, messaging, applicationSettings, refactoringService); var treeViewModel = new TreeViewModel(messaging, refactoringService); var searchViewModel = new AdvancedSearchViewModel(messaging, refactoringService); var infoPanelViewModel = new InfoPanelViewModel(); @@ -122,6 +127,7 @@ private void StartUi() viewModel.GraphViewModel = graphViewModel; viewModel.TreeViewModel = treeViewModel; viewModel.SearchViewModel = searchViewModel; + viewModel.GraphSearchViewModel = graphSearchViewModel; // Setup messaging messaging.Subscribe(mainWindow.HandleLocateInTreeRequest); diff --git a/CSharpCodeAnalyst/AssemblyInfo.cs b/CSharpCodeAnalyst/AssemblyInfo.cs index a5e31b9..6bceb8a 100644 --- a/CSharpCodeAnalyst/AssemblyInfo.cs +++ b/CSharpCodeAnalyst/AssemblyInfo.cs @@ -10,5 +10,5 @@ // app, or any theme specific resource dictionaries) )] -// Allow test project to access internal types for unit testing (e.g., MsaglHierarchicalBuilder) +// Allow test project to access internal types for unit testing [assembly: InternalsVisibleTo("Tests")] \ No newline at end of file diff --git a/CSharpCodeAnalyst/CSharpCodeAnalyst.csproj b/CSharpCodeAnalyst/CSharpCodeAnalyst.csproj index 31c0bad..97d97b1 100644 --- a/CSharpCodeAnalyst/CSharpCodeAnalyst.csproj +++ b/CSharpCodeAnalyst/CSharpCodeAnalyst.csproj @@ -142,25 +142,22 @@ + - - + + + PreserveNewest + - - ..\ReferencedAssemblies\Microsoft.Msagl.dll - - - ..\ReferencedAssemblies\Microsoft.Msagl.Drawing.dll - - - ..\ReferencedAssemblies\Microsoft.Msagl.WpfGraphControl.dll - + + + True diff --git a/CSharpCodeAnalyst/Features/AdvancedSearch/AdvancedSearchControl.xaml b/CSharpCodeAnalyst/Features/AdvancedSearch/AdvancedSearchControl.xaml index 69c65ce..6aeb6f7 100644 --- a/CSharpCodeAnalyst/Features/AdvancedSearch/AdvancedSearchControl.xaml +++ b/CSharpCodeAnalyst/Features/AdvancedSearch/AdvancedSearchControl.xaml @@ -100,6 +100,10 @@ + + diff --git a/CSharpCodeAnalyst/Features/AdvancedSearch/AdvancedSearchViewModel.cs b/CSharpCodeAnalyst/Features/AdvancedSearch/AdvancedSearchViewModel.cs index 4e5076c..e8d91d9 100644 --- a/CSharpCodeAnalyst/Features/AdvancedSearch/AdvancedSearchViewModel.cs +++ b/CSharpCodeAnalyst/Features/AdvancedSearch/AdvancedSearchViewModel.cs @@ -7,6 +7,7 @@ using CSharpCodeAnalyst.Features.Refactoring; using CSharpCodeAnalyst.Shared.Messages; using CSharpCodeAnalyst.Shared.Search; +using CSharpCodeAnalyst.Shared.Services; using CSharpCodeAnalyst.Shared.Wpf; namespace CSharpCodeAnalyst.Features.AdvancedSearch; @@ -45,6 +46,7 @@ public AdvancedSearchViewModel(MessageBus messaging, RefactoringService refactor AddSelectedToGraphCollapsedCommand = new WpfCommand(AddSelectedToGraphCollapsed); PartitionCommand = new WpfCommand(OnPartition, CanPartition); CopyToClipboardCommand = new WpfCommand(OnCopyToClipboard); + JumpToCodeCommand = new WpfCommand(JumpToCode, CanJumpToCode); SelectAllCommand = new WpfCommand(SelectAll); DeselectAllCommand = new WpfCommand(DeselectAll); @@ -91,6 +93,7 @@ public string SearchText public ICommand AddSelectedToGraphCollapsedCommand { get; } public ICommand PartitionCommand { get; } public ICommand CopyToClipboardCommand { get; } + public ICommand JumpToCodeCommand { get; } public ICommand SelectAllCommand { get; } public ICommand DeselectAllCommand { get; } public ICommand SetMovementTargetCommand { get; } @@ -146,6 +149,19 @@ private static bool CanPartition(SearchItemViewModel? vm) return vm?.CodeElement is { ElementType: CodeElementType.Class }; } + private static bool CanJumpToCode(SearchItemViewModel? vm) + { + return SourceLocationNavigator.CanJump(vm?.CodeElement); + } + + private static void JumpToCode(SearchItemViewModel? vm) + { + if (vm?.CodeElement is { } element) + { + SourceLocationNavigator.JumpTo(element); + } + } + private void OnPartition(SearchItemViewModel? vm) { if (vm?.CodeElement != null) diff --git a/CSharpCodeAnalyst/Features/Analyzers/ArchitecturalRules/Presentation/RuleViolationViewModel.cs b/CSharpCodeAnalyst/Features/Analyzers/ArchitecturalRules/Presentation/RuleViolationViewModel.cs index 2055921..f1d7689 100644 --- a/CSharpCodeAnalyst/Features/Analyzers/ArchitecturalRules/Presentation/RuleViolationViewModel.cs +++ b/CSharpCodeAnalyst/Features/Analyzers/ArchitecturalRules/Presentation/RuleViolationViewModel.cs @@ -107,8 +107,7 @@ private static void OnOpenSourceLocation(RelationshipViewModel? detailViewModel) try { - var fileOpener = new FileOpener(); - fileOpener.TryOpenFile(detailViewModel.SourceLocation.File, + SourceLocationNavigator.Open(detailViewModel.SourceLocation.File, detailViewModel.SourceLocation.Line, detailViewModel.SourceLocation.Column); } diff --git a/CSharpCodeAnalyst/Features/Analyzers/EventRegistration/Presentation/EventImbalanceViewModel.cs b/CSharpCodeAnalyst/Features/Analyzers/EventRegistration/Presentation/EventImbalanceViewModel.cs index a850350..85c6bce 100644 --- a/CSharpCodeAnalyst/Features/Analyzers/EventRegistration/Presentation/EventImbalanceViewModel.cs +++ b/CSharpCodeAnalyst/Features/Analyzers/EventRegistration/Presentation/EventImbalanceViewModel.cs @@ -35,8 +35,7 @@ private static void OnOpenSourceLocation(SourceLocation? location) try { // Create a new instance to find newly open studio instance. - var fileOpener = new FileOpener(); - fileOpener.TryOpenFile(location.File, location.Line, location.Column); + SourceLocationNavigator.Open(location.File, location.Line, location.Column); } catch (Exception ex) { diff --git a/CSharpCodeAnalyst/Features/Export/Exporter.cs b/CSharpCodeAnalyst/Features/Export/Exporter.cs index 7086ed7..7afe4b0 100644 --- a/CSharpCodeAnalyst/Features/Export/Exporter.cs +++ b/CSharpCodeAnalyst/Features/Export/Exporter.cs @@ -20,8 +20,7 @@ public Exporter(IUserNotification ui) } /// - /// Svg export is special because it is a feature of the - /// Msagl graph library. + /// Old Svg export is with customizable export function. /// public void ToSvg(Action? svgExport) { diff --git a/CSharpCodeAnalyst/Features/Graph/ClickController.cs b/CSharpCodeAnalyst/Features/Graph/ClickController.cs deleted file mode 100644 index 351a12a..0000000 --- a/CSharpCodeAnalyst/Features/Graph/ClickController.cs +++ /dev/null @@ -1,155 +0,0 @@ -using System.Diagnostics; -using System.Windows.Input; -using System.Windows.Threading; -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph; - -internal enum States -{ - Init, - - /// - /// Detected a left mouse down. - /// - AwaitSingleClick, - - /// - /// First mouse up was received. - /// - DetectedSingleClick, - - /// - /// Second left mouse down was received within the time limit. - /// - AwaitDoubleClick -} - -/// -/// Emulates single and double click events since the graph control does not provide them. -/// I want to detect a double click without executing the single click action first. -/// Also, it is important to let the MSAGL LayoutEditor handles the mouse events first. -/// If the layout editor is not finished with its internal cleanup on mouse up, -/// replacing the graph crashes the application. -/// -internal class ClickController -{ - - private readonly DispatcherTimer _timer = new(); - private readonly Microsoft.Msagl.WpfGraphControl.GraphViewer _viewer; - private readonly Stopwatch _watch = Stopwatch.StartNew(); - - private States _state = States.Init; - - /// - /// The object that was under the mouse cursor when the first click was detected. - /// - private IViewerObject? _targetObject; - - public ClickController(Microsoft.Msagl.WpfGraphControl.GraphViewer viewer, int doubleClickDelay = 300) - { - _viewer = viewer; - _timer.Interval = TimeSpan.FromMilliseconds(doubleClickDelay); - _timer.Stop(); - _timer.Tick += OnTimerTick; - _watch.Restart(); - Register(viewer); - } - - private bool IsShiftPressed() - { - return Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift); - } - - private bool IsCtrlPressed() - { - return Keyboard.IsKeyDown(Key.LeftCtrl); - } - - - private void OnTimerTick(object? sender, EventArgs e) - { - _timer.Stop(); - - if (_state == States.DetectedSingleClick) - { - // No second click within the time limit. - // Interpret as single click. - LeftSingleClick?.Invoke(_targetObject); - } - - _state = States.Init; - } - - - // High-level events - public event Action? LeftSingleClick; - public event Action? LeftDoubleClick; - public event Action? OpenContextMenu; - - - private void Register(Microsoft.Msagl.WpfGraphControl.GraphViewer msaglViewer) - { - // Important: The LayoutEditor has to handle the events first - // and finish all cleanup work. - - msaglViewer.MouseDown += OnViewerMouseDown; - msaglViewer.MouseUp += OnViewerMouseUp; - msaglViewer.MouseMove += OnViewerMouseMove; - } - - private static void OnViewerMouseMove(object? sender, MsaglMouseEventArgs e) - { - // _timer.Stop(); - // _state = States.Init; - } - - private void OnViewerMouseUp(object? sender, MsaglMouseEventArgs e) - { - if (_state == States.AwaitSingleClick) - { - _state = States.DetectedSingleClick; - } - else if (_state == States.AwaitDoubleClick) - { - // Detected a second left mouse click within the time limit. - _timer.Stop(); - LeftDoubleClick?.Invoke(_targetObject); - _state = States.Init; - } - } - - private void OnViewerMouseDown(object? sender, MsaglMouseEventArgs e) - { - if (e.LeftButtonIsPressed) - { - if (_state == States.Init) - { - _timer.Stop(); - _targetObject = _viewer.ObjectUnderMouseCursor; - _state = States.AwaitSingleClick; - - _timer.Start(); - } - else if (_state == States.DetectedSingleClick) - { - // Second left click detected within time limit - _state = States.AwaitDoubleClick; - } - else - { - // Unexpected state, reset - _state = States.Init; - _timer.Stop(); - } - - return; - } - - if (e.RightButtonIsPressed) - { - OpenContextMenu?.Invoke(_targetObject); - e.Handled = true; - } - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/CodeElementContextCommand.cs b/CSharpCodeAnalyst/Features/Graph/CodeElementContextCommand.cs index 65273a9..4fd76ac 100644 --- a/CSharpCodeAnalyst/Features/Graph/CodeElementContextCommand.cs +++ b/CSharpCodeAnalyst/Features/Graph/CodeElementContextCommand.cs @@ -7,6 +7,7 @@ public class CodeElementContextCommand : ICodeElementContextCommand { private readonly Action _action; private readonly Func? _canExecute; + private readonly Func? _canEnable; private readonly CodeElementType? _type; public CodeElementContextCommand(string label, CodeElementType type, Action action, ImageSource? icon = null) @@ -18,14 +19,17 @@ public CodeElementContextCommand(string label, CodeElementType type, Action - /// Generic for all code elements + /// Generic for all code elements. + /// restricts visibility (hidden when it returns false); + /// keeps the command visible but grays it out when false. /// public CodeElementContextCommand(string label, Action action, - Func? canExecute = null, ImageSource? icon = null) + Func? canExecute = null, ImageSource? icon = null, Func? canEnable = null) { _type = null; _action = action; _canExecute = canExecute; + _canEnable = canEnable; Label = label; Icon = icon; } @@ -57,6 +61,11 @@ public bool CanHandle(CodeElement element) return canHandle; } + public bool CanExecute(CodeElement element) + { + return _canEnable?.Invoke(element) ?? true; + } + public void Invoke(CodeElement element) { _action.Invoke(element); diff --git a/CSharpCodeAnalyst/Features/Graph/CodeExplorerControl.xaml b/CSharpCodeAnalyst/Features/Graph/CodeExplorerControl.xaml deleted file mode 100644 index 46f4629..0000000 --- a/CSharpCodeAnalyst/Features/Graph/CodeExplorerControl.xaml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/CodeExplorerControl.xaml.cs b/CSharpCodeAnalyst/Features/Graph/CodeExplorerControl.xaml.cs deleted file mode 100644 index 2c2e37c..0000000 --- a/CSharpCodeAnalyst/Features/Graph/CodeExplorerControl.xaml.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Windows.Input; -using CSharpCodeAnalyst.Shared.Contracts; -using CSharpCodeAnalyst.Shared.Messages; - -namespace CSharpCodeAnalyst.Features.Graph; - -public partial class CodeExplorerControl -{ - private GraphSearchViewModel? _searchViewModel; - private IPublisher? _publisher; - - public CodeExplorerControl() - { - InitializeComponent(); - } - - public void SetViewer(IGraphBinding graphViewer, IPublisher publisher) - { - _publisher = publisher; - graphViewer.Bind(GraphPanel); - - // Initialize search functionality if the viewer implements IGraphViewer - if (graphViewer is IGraphViewer viewer) - { - _searchViewModel = new GraphSearchViewModel(viewer); - SearchControl.DataContext = _searchViewModel; - } - } - - private void OnMouseButtonDown(object sender, MouseButtonEventArgs e) - { - // If this is called no viewer object was hit. If an object was clicked while the info area is not visible - // it is ignored, but the viewer locks the last clicked object. - _publisher?.Publish(new ClearQuickInfoRequest()); - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/Constants.cs b/CSharpCodeAnalyst/Features/Graph/Constants.cs deleted file mode 100644 index 01f7a45..0000000 --- a/CSharpCodeAnalyst/Features/Graph/Constants.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph; - -internal static class Constants -{ - internal const int FlagLineWidth = 3; - internal const int SearchHighlightLineWidth = 2; - internal const double DefaultLineWidth = 1; - internal const int MouseHighlightLineWidth = 3; - internal static int DoubleClickMilliseconds = 350; - - internal static Color FlagColor = Color.Red; - internal static Color SearchHighlightColor = Color.Red; - internal static Color DefaultLineColor = Color.Black; - internal static readonly Color GrayColor = Color.LightGray; - internal static readonly Color MouseHighlightColor = Color.Red; -} diff --git a/CSharpCodeAnalyst/Features/Graph/Filtering/GraphHideFilter.cs b/CSharpCodeAnalyst/Features/Graph/Filtering/GraphHideFilter.cs index cc6d011..5d07c65 100644 --- a/CSharpCodeAnalyst/Features/Graph/Filtering/GraphHideFilter.cs +++ b/CSharpCodeAnalyst/Features/Graph/Filtering/GraphHideFilter.cs @@ -37,7 +37,8 @@ public class GraphHideFilter RelationshipType.Overrides, RelationshipType.UsesAttribute, RelationshipType.Invokes, - RelationshipType.Handles + RelationshipType.Handles, + RelationshipType.Containment ]; /// diff --git a/CSharpCodeAnalyst/Features/Graph/GraphDropHandler.cs b/CSharpCodeAnalyst/Features/Graph/GraphDropHandler.cs index b1453c9..437214e 100644 --- a/CSharpCodeAnalyst/Features/Graph/GraphDropHandler.cs +++ b/CSharpCodeAnalyst/Features/Graph/GraphDropHandler.cs @@ -25,17 +25,17 @@ public void DragOver(IDropInfo dropInfo) if (dropInfo.Data is TreeItemViewModel { CodeElement: not null }) { dropInfo.Effects = DragDropEffects.Copy; - dropInfo.DropTargetAdorner = DropTargetAdorners.Highlight; + // dropInfo.DropTargetAdorner = DropTargetAdorners.Highlight; } else if (dropInfo.Data is SearchItemViewModel { CodeElement: not null }) { dropInfo.Effects = DragDropEffects.Copy; - dropInfo.DropTargetAdorner = DropTargetAdorners.Highlight; + // dropInfo.DropTargetAdorner = DropTargetAdorners.Highlight; } else if (dropInfo.Data is List list && list.OfType().Any()) { dropInfo.Effects = DragDropEffects.Copy; - dropInfo.DropTargetAdorner = DropTargetAdorners.Highlight; + // dropInfo.DropTargetAdorner = DropTargetAdorners.Highlight; } else { @@ -62,11 +62,11 @@ public void Drop(IDropInfo dropInfo) .Where(s => s.CodeElement != null) .Select(s => s.CodeElement) .ToList(); - + if (elements.Any()) { _publisher.Publish(new AddNodeToGraphRequest(elements!, false)); } } } -} +} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/GraphSearchControl.xaml b/CSharpCodeAnalyst/Features/Graph/GraphSearchControl.xaml deleted file mode 100644 index 5690189..0000000 --- a/CSharpCodeAnalyst/Features/Graph/GraphSearchControl.xaml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/GraphSearchControl.xaml.cs b/CSharpCodeAnalyst/Features/Graph/GraphSearchControl.xaml.cs deleted file mode 100644 index 999fd49..0000000 --- a/CSharpCodeAnalyst/Features/Graph/GraphSearchControl.xaml.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Windows; -using System.Windows.Controls; - -namespace CSharpCodeAnalyst.Features.Graph; - -public partial class GraphSearchControl : UserControl -{ - public GraphSearchControl() - { - InitializeComponent(); - } - - private void ToggleButton_Click(object sender, RoutedEventArgs e) - { - if (DataContext is GraphSearchViewModel viewModel) - { - viewModel.ToggleSearchVisibility(); - - // Focus search box when opening - if (viewModel.IsSearchVisible) - { - Dispatcher.BeginInvoke(() => - { - SearchTextBox.Focus(); - SearchTextBox.SelectAll(); - }); - } - } - } - - private void ClearButton_Click(object sender, RoutedEventArgs e) - { - if (DataContext is GraphSearchViewModel viewModel) - { - viewModel.ClearSearch(); - SearchTextBox.Focus(); - } - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/GraphSearchViewModel.cs b/CSharpCodeAnalyst/Features/Graph/GraphSearchViewModel.cs index 827490a..e9a1a27 100644 --- a/CSharpCodeAnalyst/Features/Graph/GraphSearchViewModel.cs +++ b/CSharpCodeAnalyst/Features/Graph/GraphSearchViewModel.cs @@ -1,12 +1,14 @@ using System.ComponentModel; +using System.Windows.Input; using System.Windows.Threading; using CSharpCodeAnalyst.Shared.Search; +using CSharpCodeAnalyst.Shared.Wpf; namespace CSharpCodeAnalyst.Features.Graph; public sealed class GraphSearchViewModel : INotifyPropertyChanged { - private readonly IGraphViewer _graphViewer; + private readonly GraphViewState _state; private readonly DispatcherTimer _searchTimer; @@ -15,14 +17,15 @@ public sealed class GraphSearchViewModel : INotifyPropertyChanged private string _searchText; - public GraphSearchViewModel(IGraphViewer graphViewer) + public GraphSearchViewModel(GraphViewState state) { - _graphViewer = graphViewer; + _state = state; _searchText = string.Empty; _isSearchVisible = false; + ClearSearchCommand = new WpfCommand(ClearSearch); - // Subscribe to graph changes - _graphViewer.GraphChanged += OnGraphChanged; + // Re-run the search when the graph changes (render-agnostic; shared by both views). + _state.Changed += OnStateChanged; // Initialize debounce timer for search _searchTimer = new DispatcherTimer @@ -54,6 +57,8 @@ public string SearchText } } + public ICommand ClearSearchCommand { get; } + public bool IsSearchVisible { get => _isSearchVisible; @@ -75,14 +80,9 @@ public bool IsSearchVisible public event PropertyChangedEventHandler? PropertyChanged; - private void OnGraphChanged(CodeGraph.Graph.CodeGraph newGraph) - { - UpdateGraph(newGraph); - } - - private void UpdateGraph(CodeGraph.Graph.CodeGraph graph) + private void OnStateChanged() { - // Re-execute search with new graph if we have search text + // Re-execute search against the new graph if we have search text. if (!string.IsNullOrWhiteSpace(_searchText)) { ExecuteSearchInternal(); @@ -97,21 +97,21 @@ public void ToggleSearchVisibility() public void ClearSearch() { SearchText = string.Empty; - _graphViewer.ClearSearchHighlights(); + _state.ClearSearchHighlights(); } private void ExecuteSearchInternal() { if (string.IsNullOrWhiteSpace(SearchText)) { - _graphViewer.ClearSearchHighlights(); + _state.ClearSearchHighlights(); return; } var root = SearchExpressionFactory.CreateSearchExpression(SearchText); var matchingNodeIds = new List(); - var nodes = _graphViewer.GetGraph().Nodes; + var nodes = _state.CodeGraph.Nodes; foreach (var node in nodes.Values) { if (root.Evaluate(node)) @@ -120,7 +120,7 @@ private void ExecuteSearchInternal() } } - _graphViewer.SetSearchHighlights(matchingNodeIds); + _state.SetSearchHighlights(matchingNodeIds); } private void OnPropertyChanged(string propertyName) diff --git a/CSharpCodeAnalyst/Features/Graph/GraphToolbarControl.xaml b/CSharpCodeAnalyst/Features/Graph/GraphToolbarControl.xaml new file mode 100644 index 0000000..135ab8e --- /dev/null +++ b/CSharpCodeAnalyst/Features/Graph/GraphToolbarControl.xaml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSharpCodeAnalyst/Features/Graph/GraphToolbarControl.xaml.cs b/CSharpCodeAnalyst/Features/Graph/GraphToolbarControl.xaml.cs new file mode 100644 index 0000000..473c529 --- /dev/null +++ b/CSharpCodeAnalyst/Features/Graph/GraphToolbarControl.xaml.cs @@ -0,0 +1,12 @@ +namespace CSharpCodeAnalyst.Features.Graph; + +/// +/// Reusable strip of global graph-tool buttons. +/// +public partial class GraphToolbarControl +{ + public GraphToolbarControl() + { + InitializeComponent(); + } +} diff --git a/CSharpCodeAnalyst/Features/Graph/GraphViewModel.cs b/CSharpCodeAnalyst/Features/Graph/GraphViewModel.cs index 5ec1f57..23debf8 100644 --- a/CSharpCodeAnalyst/Features/Graph/GraphViewModel.cs +++ b/CSharpCodeAnalyst/Features/Graph/GraphViewModel.cs @@ -1,6 +1,5 @@ using System.Collections.ObjectModel; using System.ComponentModel; -using System.IO; using System.Windows; using System.Windows.Input; using CodeGraph.Contracts; @@ -8,11 +7,11 @@ using CSharpCodeAnalyst.Configuration; using CSharpCodeAnalyst.Features.Graph.Filtering; using CSharpCodeAnalyst.Features.Graph.RenderOptions; -using CSharpCodeAnalyst.Features.Help; using CSharpCodeAnalyst.Features.Refactoring; using CSharpCodeAnalyst.Resources; using CSharpCodeAnalyst.Shared.Contracts; using CSharpCodeAnalyst.Shared.Messages; +using CSharpCodeAnalyst.Shared.Services; using CSharpCodeAnalyst.Shared.UI; using CSharpCodeAnalyst.Shared.Wpf; @@ -28,31 +27,23 @@ internal sealed class GraphViewModel : INotifyPropertyChanged private readonly IPublisher _publisher; private readonly RefactoringService _refactoringService; private readonly AppSettings _settings; + private readonly GraphViewState _state; private readonly LinkedList _undoStack; - private readonly IGraphViewer _viewer; private HighlightOption _selectedHighlightOption; - private RenderOption _selectedRenderOption; + private LayoutOption _selectedLayoutOption; - internal GraphViewModel(IGraphViewer viewer, ICodeGraphExplorer explorer, IPublisher publisher, + internal GraphViewModel(GraphViewState state, ICodeGraphExplorer explorer, IPublisher publisher, AppSettings settings, RefactoringService refactoringService) { _undoStack = []; - _viewer = viewer; + _state = state; _explorer = explorer; _publisher = publisher; _settings = settings; _refactoringService = refactoringService; DropHandler = new GraphDropHandler(publisher); - // Initialize RenderOptions - RenderOptions = - [ - new DefaultRenderOptions(), - new LeftToRightRenderOptions(), - new BottomToTopRenderOptions() - ]; - HighlightOptions = [ HighlightOption.Default, @@ -60,25 +51,36 @@ internal GraphViewModel(IGraphViewer viewer, ICodeGraphExplorer explorer, IPubli new HighlightOption(HighlightMode.ShortestNonSelfCircuit, Strings.HighlightSelfCircuit) ]; + LayoutOptions = + [ + LayoutOption.Default, + new LayoutOption("dagre-tb", Strings.Layout_DagreTopBottom_Label), + new LayoutOption("dagre-lr", Strings.Layout_DagreLeftRight_Label), + new LayoutOption("elk-down", Strings.Layout_ElkDown_Label), + new LayoutOption("elk-right", Strings.Layout_ElkRight_Label) + ]; + // Set defaults - _selectedRenderOption = RenderOptions[0]; _selectedHighlightOption = HighlightOptions[0]; + _selectedLayoutOption = LayoutOptions[0]; var flag = IconLoader.LoadIcon("Resources/flag.png"); var removeWithoutChildren = IconLoader.LoadIcon("Resources/remove_without_children_16.png"); // Edge commands - _viewer.AddCommand(new RelationshipContextCommand(string.Empty, Strings.ToggleFlag, ToggleEdgeFlag, icon: flag)); - _viewer.AddCommand(new RelationshipContextCommand(string.Empty, Strings.RemoveWithoutChildren, RemoveEdges, icon: removeWithoutChildren)); - _viewer.AddCommand(new RelationshipContextCommand(Strings.Refactor, Strings.Refactor_DeleteEdgeFromModel, DeleteEdgeFromModel)); + _state.AddCommand(new RelationshipContextCommand(string.Empty, Strings.ToggleFlag, ToggleEdgeFlag, icon: flag)); + _state.AddCommand(new RelationshipContextCommand(string.Empty, Strings.RemoveWithoutChildren, RemoveEdges, icon: removeWithoutChildren)); + _state.AddCommand(new RelationshipContextCommand(Strings.Refactor, Strings.Refactor_DeleteEdgeFromModel, DeleteEdgeFromModel)); + // Last: jump to code (always shown, grayed out unless the edge is a single relationship with a single source location). + _state.AddCommand(new RelationshipContextCommand(string.Empty, Strings.JumpToCode, JumpToCodeEdge, canEnable: CanJumpToCodeEdge)); // Static commands - _viewer.AddCommand(new CodeElementContextCommand(Strings.Expand, Expand, CanExpand) + _state.AddCommand(new CodeElementContextCommand(Strings.Expand, Expand, CanExpand) { IsDoubleClickable = true, IsVisible = false }); - _viewer.AddCommand(new CodeElementContextCommand(Strings.Collapse, Collapse, CanCollapse) + _state.AddCommand(new CodeElementContextCommand(Strings.Collapse, Collapse, CanCollapse) { IsDoubleClickable = true, IsVisible = false @@ -89,12 +91,12 @@ internal GraphViewModel(IGraphViewer viewer, ICodeGraphExplorer explorer, IPubli var removeWithChildren = IconLoader.LoadIcon("Resources/remove_with_children_16.png"); var findInTree = IconLoader.LoadIcon("Resources/find_in_tree_16.png"); var addParent = IconLoader.LoadIcon("Resources/add_parent_16.png"); - _viewer.AddCommand(new CodeElementContextCommand(Strings.ToggleFlag, ToggleNodeFlag, icon: flag)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.RemoveWithoutChildren, RemoveWithoutChildren, icon: removeWithoutChildren)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.RemoveWithChildren, RemoveWithChildren, icon: removeWithChildren)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindInTree, FindInTreeRequest, icon: findInTree)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.AddParent, OnAddParent, icon: addParent)); - _viewer.AddCommand(new SeparatorCommand()); + _state.AddCommand(new CodeElementContextCommand(Strings.ToggleFlag, ToggleNodeFlag, icon: flag)); + _state.AddCommand(new CodeElementContextCommand(Strings.RemoveWithoutChildren, RemoveWithoutChildren, icon: removeWithoutChildren)); + _state.AddCommand(new CodeElementContextCommand(Strings.RemoveWithChildren, RemoveWithChildren, icon: removeWithChildren)); + _state.AddCommand(new CodeElementContextCommand(Strings.FindInTree, FindInTreeRequest, icon: findInTree)); + _state.AddCommand(new CodeElementContextCommand(Strings.AddParent, OnAddParent, icon: addParent)); + _state.AddCommand(new SeparatorCommand()); // Methods and properties @@ -106,15 +108,15 @@ internal GraphViewModel(IGraphViewer viewer, ICodeGraphExplorer explorer, IPubli HashSet elementTypes = [CodeElementType.Method, CodeElementType.Property]; foreach (var elementType in elementTypes) { - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindOutgoingCalls, elementType, + _state.AddCommand(new CodeElementContextCommand(Strings.FindOutgoingCalls, elementType, FindOutgoingCalls, outgoingCalls)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindIncomingCalls, elementType, + _state.AddCommand(new CodeElementContextCommand(Strings.FindIncomingCalls, elementType, FindIncomingCalls, incomingCalls)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FollowIncomingCalls, elementType, + _state.AddCommand(new CodeElementContextCommand(Strings.FollowIncomingCalls, elementType, FollowIncomingCallsRecursive, followIncomingCalls)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindSpecializations, elementType, + _state.AddCommand(new CodeElementContextCommand(Strings.FindSpecializations, elementType, FindSpecializations, findSpecializations)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindAbstractions, elementType, + _state.AddCommand(new CodeElementContextCommand(Strings.FindAbstractions, elementType, FindAbstractions, findAbstractions)); } @@ -123,36 +125,36 @@ internal GraphViewModel(IGraphViewer viewer, ICodeGraphExplorer explorer, IPubli elementTypes = [CodeElementType.Class, CodeElementType.Interface, CodeElementType.Struct]; foreach (var elementType in elementTypes) { - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindInheritanceTree, elementType, + _state.AddCommand(new CodeElementContextCommand(Strings.FindInheritanceTree, elementType, FindInheritanceTree, findInheritanceTree)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindSpecializations, elementType, + _state.AddCommand(new CodeElementContextCommand(Strings.FindSpecializations, elementType, FindSpecializations, findSpecializations)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindAbstractions, elementType, + _state.AddCommand(new CodeElementContextCommand(Strings.FindAbstractions, elementType, FindAbstractions, findAbstractions)); } // Events - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindSpecializations, CodeElementType.Event, + _state.AddCommand(new CodeElementContextCommand(Strings.FindSpecializations, CodeElementType.Event, FindSpecializations, findSpecializations)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FindAbstractions, CodeElementType.Event, + _state.AddCommand(new CodeElementContextCommand(Strings.FindAbstractions, CodeElementType.Event, FindAbstractions, findAbstractions)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.FollowIncomingCalls, CodeElementType.Event, + _state.AddCommand(new CodeElementContextCommand(Strings.FollowIncomingCalls, CodeElementType.Event, FollowIncomingCallsRecursive, followIncomingCalls)); // Everyone gets the in/out relationships - _viewer.AddCommand(new SeparatorCommand()); + _state.AddCommand(new SeparatorCommand()); var incomingRelationships = IconLoader.LoadIcon("Resources/incoming_relationships_16.png"); var outgoingRelationships = IconLoader.LoadIcon("Resources/outgoing_relationships_16.png"); - _viewer.AddCommand(new CodeElementContextCommand(Strings.AllIncomingRelationships, + _state.AddCommand(new CodeElementContextCommand(Strings.AllIncomingRelationships, FindAllIncomingRelationships, icon: incomingRelationships)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.AllOutgoingRelationships, + _state.AddCommand(new CodeElementContextCommand(Strings.AllOutgoingRelationships, FindAllOutgoingRelationships, icon: outgoingRelationships)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.AllIncomingRelationshipsDeep, + _state.AddCommand(new CodeElementContextCommand(Strings.AllIncomingRelationshipsDeep, FindAllIncomingRelationshipsDeep)); - _viewer.AddCommand(new CodeElementContextCommand(Strings.AllOutgoingRelationshipsDeep, + _state.AddCommand(new CodeElementContextCommand(Strings.AllOutgoingRelationshipsDeep, FindAllOutgoingRelationshipsDeep)); @@ -164,10 +166,14 @@ Partition belongs to the tree view because it refers to all code elements inside PartitionClass)); */ var copyFqn = IconLoader.LoadIcon("Resources/copy_fqn_16.png"); - _viewer.AddCommand(new SeparatorCommand()); - _viewer.AddCommand(new CodeElementContextCommand(Strings.CopyFullQualifiedNameToClipboard, + _state.AddCommand(new SeparatorCommand()); + _state.AddCommand(new CodeElementContextCommand(Strings.CopyFullQualifiedNameToClipboard, OnCopyToClipboard, icon: copyFqn)); + // Last entry, consistent across all menus: jump to code (always shown, grayed out + // unless the element has exactly one source location). + _state.AddCommand(new CodeElementContextCommand(Strings.JumpToCode, JumpToCode, canEnable: CanJumpToCode)); + UndoCommand = new WpfCommand(Undo); OpenGraphHideDialogCommand = new WpfCommand(OpenGraphHideDialog); @@ -183,12 +189,12 @@ Partition belongs to the tree view because it refers to all code elements inside AddParentsCommand = new WpfCommand(OnAddParents); // Global commands, moved to toolbar - // _viewer.AddGlobalCommand(new GlobalCommand(Strings.CompleteRelationships, CompleteRelationships)); - // _viewer.AddGlobalCommand(new GlobalCommand(Strings.CompleteToTypes, CompleteToTypes)); - // _viewer.AddGlobalCommand(new GlobalCommand(Strings.SelectedFocus, Focus, CanHandleIfSelectedElements)); - // _viewer.AddGlobalCommand(new GlobalCommand(Strings.ClearAllFlags, ClearAllFlags)); - // _viewer.AddGlobalCommand(new GlobalCommand(Strings.ExpandEverything, ExpandEverything)); - //_viewer.AddGlobalCommand(new GlobalCommand(Strings.SelectedRemoveWithChildren, OnRemoveSelectedWithChildren, CanHandleIfSelectedElements, null, Key.Delete)); + // _state.AddGlobalCommand(new GlobalCommand(Strings.CompleteRelationships, CompleteRelationships)); + // _state.AddGlobalCommand(new GlobalCommand(Strings.CompleteToTypes, CompleteToTypes)); + // _state.AddGlobalCommand(new GlobalCommand(Strings.SelectedFocus, Focus, CanHandleIfSelectedElements)); + // _state.AddGlobalCommand(new GlobalCommand(Strings.ClearAllFlags, ClearAllFlags)); + // _state.AddGlobalCommand(new GlobalCommand(Strings.ExpandEverything, ExpandEverything)); + //_state.AddGlobalCommand(new GlobalCommand(Strings.SelectedRemoveWithChildren, OnRemoveSelectedWithChildren, CanHandleIfSelectedElements, null, Key.Delete)); } public ICommand CompleteToContainingTypesCommand { get; set; } @@ -203,22 +209,7 @@ Partition belongs to the tree view because it refers to all code elements inside public ObservableCollection HighlightOptions { get; } - - public ObservableCollection RenderOptions { get; } - - public RenderOption SelectedRenderOption - { - get => _selectedRenderOption; - set - { - if (_selectedRenderOption != value) - { - _selectedRenderOption = value; - OnPropertyChanged(nameof(SelectedRenderOption)); - UpdateGraphRenderOption(); - } - } - } + public ObservableCollection LayoutOptions { get; } @@ -233,7 +224,7 @@ public bool ShowFlatGraph } field = value; - _viewer.ShowFlatGraph(value); + _state.SetShowFlat(value); OnPropertyChanged(nameof(ShowFlatGraph)); } } @@ -250,7 +241,7 @@ public bool ShowDataFlow } field = value; - _viewer.ShowInformationFlow(value); + _state.SetShowInformationFlow(value); OnPropertyChanged(nameof(ShowDataFlow)); } } @@ -266,11 +257,27 @@ public HighlightOption SelectedHighlightOption } _selectedHighlightOption = value; - _viewer.SetHighlightMode(value.Mode); + _state.SetHighlightMode(value.Mode); OnPropertyChanged(nameof(SelectedHighlightOption)); } } + public LayoutOption SelectedLayoutOption + { + get => _selectedLayoutOption; + set + { + if (_selectedLayoutOption == value) + { + return; + } + + _selectedLayoutOption = value; + _state.SetLayout(value.Name); + OnPropertyChanged(nameof(SelectedLayoutOption)); + } + } + public ICommand AddParentsCommand { get; } public GraphDropHandler DropHandler { get; } @@ -288,22 +295,22 @@ private void OnExpandEverything() { PushUndo(); - var session = _viewer.GetSession(); - var graph = _viewer.GetGraph(); + var session = _state.GetSession(); + var graph = _state.CodeGraph; var state = session.PresentationState; // Create a new presentation state with no collapsed nodes state.NodeIdToCollapsed.Clear(); - _viewer.LoadSession(graph, state); + _state.LoadSession(graph, state); } private void OnCollapseEverything() { PushUndo(); - var session = _viewer.GetSession(); - var graph = _viewer.GetGraph(); + var session = _state.GetSession(); + var graph = _state.CodeGraph; var state = session.PresentationState; // Create a new presentation state with all collapsed nodes @@ -316,12 +323,12 @@ private void OnCollapseEverything() } } - _viewer.LoadSession(graph, state); + _state.LoadSession(graph, state); } private void OnFocusOnSelected() { - var selectedElementIds = _viewer.GetSelectedElementIds(); + var selectedElementIds = _state.SelectedIds; if (!selectedElementIds.Any()) { return; @@ -332,8 +339,8 @@ private void OnFocusOnSelected() PushUndo(); - var session = _viewer.GetSession(); - var graph = _viewer.GetGraph(); + var session = _state.GetSession(); + var graph = _state.CodeGraph; var idsToKeep = new HashSet(); @@ -353,18 +360,18 @@ private void OnFocusOnSelected() var presentationState = session.PresentationState.Clone(); presentationState.RemoveStates(idsToRemove); - _viewer.LoadSession(newGraph, presentationState); + _state.LoadSession(newGraph, presentationState); } private void OnClearAllFlags() { - _viewer.ClearAllFlags(); + _state.ClearAllFlags(); } private void OnCompleteRelationships() { // Not interested in the selected elements! - var viewerGraph = _viewer.GetGraph(); + var viewerGraph = _state.CodeGraph; var ids = viewerGraph.Nodes.Keys.ToHashSet(); var relationships = _explorer.FindAllRelationships(ids); @@ -373,7 +380,7 @@ private void OnCompleteRelationships() private void OnCompleteToContainingTypes() { - var viewerGraph = _viewer.GetGraph(); + var viewerGraph = _state.CodeGraph; var ids = viewerGraph.Nodes.Keys.ToHashSet(); var result = _explorer.FindMissingTypesForLonelyTypeMembers(ids); AddToGraph(result.Elements, []); @@ -381,7 +388,7 @@ private void OnCompleteToContainingTypes() private void ToggleNodeFlag(CodeElement codeElement) { - _viewer.ToggleFlag(codeElement.Id); + _state.ToggleFlag(codeElement.Id); } private void ToggleEdgeFlag(string sourceId, string targetId, List relationships) @@ -391,7 +398,29 @@ private void ToggleEdgeFlag(string sourceId, string targetId, List return; } - _viewer.ToggleFlag(sourceId, targetId, relationships); + _state.ToggleFlag(sourceId, targetId); + } + + // Jump to code: only offered when there is exactly one source location (so it is hidden + // on namespaces, multi-location elements and bundled edges). + private static bool CanJumpToCode(CodeElement element) + { + return SourceLocationNavigator.CanJump(element); + } + + private static void JumpToCode(CodeElement element) + { + SourceLocationNavigator.JumpTo(element); + } + + private static bool CanJumpToCodeEdge(List relationships) + { + return SourceLocationNavigator.CanJump(relationships); + } + + private static void JumpToCodeEdge(string sourceId, string targetId, List relationships) + { + SourceLocationNavigator.JumpTo(relationships); } private static void OnCopyToClipboard(CodeElement element) @@ -406,12 +435,12 @@ private static void OnCopyToClipboard(CodeElement element) private void RemoveEdges(string sourceId, string targetId, List relationships) { PushUndo(); - _viewer.RemoveFromGraph(relationships); + _state.RemoveRelationships(relationships); } private void OnRemoveSelectedWithChildren() { - var selectedElementIds = _viewer.GetSelectedElementIds(); + var selectedElementIds = _state.SelectedIds; if (!selectedElementIds.Any()) { return; @@ -420,7 +449,7 @@ private void OnRemoveSelectedWithChildren() PushUndo(); - var graph = _viewer.GetGraph(); + var graph = _state.CodeGraph; var idsToRemove = new HashSet(); // Include children @@ -430,31 +459,31 @@ private void OnRemoveSelectedWithChildren() idsToRemove.UnionWith(children); } - _viewer.RemoveFromGraph(idsToRemove); + _state.RemoveElements(idsToRemove); } private bool CanCollapse(CodeElement codeElement) { - return !_viewer.IsCollapsed(codeElement.Id) && + return !_state.IsCollapsed(codeElement.Id) && codeElement.Children.Any(); } private void Collapse(CodeElement codeElement) { PushUndo(); - _viewer.Collapse(codeElement.Id); + _state.Collapse(codeElement.Id); } private bool CanExpand(CodeElement codeElement) { - return _viewer.IsCollapsed(codeElement.Id) && + return _state.IsCollapsed(codeElement.Id) && codeElement.Children.Any(); } private void Expand(CodeElement codeElement) { PushUndo(); - _viewer.Expand(codeElement.Id); + _state.Expand(codeElement.Id); } private void OnAddParent(CodeElement codeElement) @@ -464,11 +493,11 @@ private void OnAddParent(CodeElement codeElement) private void OnAddParents() { - var elementIds = _viewer.GetSelectedElementIds().ToList(); + var elementIds = _state.SelectedIds.ToList(); if (!elementIds.Any()) { - elementIds = _viewer.GetGraph().GetRoots().Select(r => r.Id).ToList(); + elementIds = _state.CodeGraph.GetRoots().Select(r => r.Id).ToList(); } if (elementIds.Any()) @@ -481,7 +510,10 @@ private void AddParents(List ids) { // We do not know the original graph. var result = _explorer.FindParents(ids); - AddToGraph(result.Elements, []); + + // Avoid flickering if parent is already part of the canvas. + var newParents = result.Elements.Where(e => !_state.CodeGraph.Nodes.ContainsKey(e.Id)); + AddToGraph(newParents, []); } private void FindInTreeRequest(CodeElement codeElement) @@ -492,15 +524,15 @@ private void FindInTreeRequest(CodeElement codeElement) private void RemoveWithoutChildren(CodeElement element) { PushUndo(); - _viewer.RemoveFromGraph([element.Id]); + _state.RemoveElements([element.Id]); } private void RemoveWithChildren(CodeElement element) { PushUndo(); - var graph = _viewer.GetGraph(); + var graph = _state.CodeGraph; var idsToRemove = graph.Nodes[element.Id].GetChildrenIncludingSelf(); - _viewer.RemoveFromGraph(idsToRemove); + _state.RemoveElements(idsToRemove); } private void PushUndo() @@ -511,7 +543,7 @@ private void PushUndo() _undoStack.RemoveLast(); } - var session = _viewer.GetSession(); + var session = _state.GetSession(); _undoStack.AddFirst(session); } @@ -531,12 +563,7 @@ private void Undo() var elements = _explorer.GetElements(state.CodeElementIds); // No undo stack operations while restoring the session. - _viewer.LoadSession(elements, state.Relationships, state.PresentationState); - } - - private void UpdateGraphRenderOption() - { - _viewer.UpdateRenderOption(SelectedRenderOption); + _state.LoadSession(elements, state.Relationships, state.PresentationState); } private void FindAllOutgoingRelationships(CodeElement element) @@ -596,14 +623,14 @@ private void AddToGraph(IEnumerable originalCodeElements, IEnumerab // Merge with existing ones so that we can fill container gaps directly var elementIds = elementsToAdd .Select(e => e.Id) - .Union(_viewer.GetGraph().Nodes.Keys).ToHashSet(); + .Union(_state.CodeGraph.Nodes.Keys).ToHashSet(); var result = _explorer.FindMissingTypesForLonelyTypeMembers(elementIds); elementsToAdd.AddRange(result.Elements); relationshipsToAdd.AddRange(result.Relationships); } - _viewer.AddToGraph(elementsToAdd, relationshipsToAdd, addCollapsed); + _state.AddToGraph(elementsToAdd, relationshipsToAdd, addCollapsed); } public void LoadCodeGraph(CodeGraph.Graph.CodeGraph codeGraph) @@ -611,9 +638,6 @@ public void LoadCodeGraph(CodeGraph.Graph.CodeGraph codeGraph) _explorer.LoadCodeGraph(codeGraph); Clear(); _undoStack.Clear(); - - // Only update after we change the code graph. - _viewer.SetQuickInfoFactory(new QuickInfoFactory(codeGraph)); } @@ -626,12 +650,7 @@ internal void Clear() { PushUndo(); //_undoStack.Clear(); - _viewer.Clear(); - } - - internal void Layout() - { - _viewer.Layout(); + _state.Clear(); } private void FindIncomingCalls(CodeElement method) @@ -709,23 +728,13 @@ private void OnPropertyChanged(string propertyName) /// public CodeGraph.Graph.CodeGraph ExportGraph() { - return _viewer.GetGraph(); - } - - public void SaveToSvg(FileStream stream) - { - _viewer.SaveToSvg(stream); - } - - public void ShowGlobalContextMenu() - { - _viewer.ShowGlobalContextMenu(); + return _state.CodeGraph; } public void ImportCycleGroup(CodeGraph.Graph.CodeGraph graph) { PushUndo(); - _viewer.Clear(); + _state.Clear(); // Everything is collapsed by default. This allows to import large graphs. var defaultState = graph.Nodes.Values.Where(c => c.Children.Any()).ToDictionary(c => c.Id, _ => true); @@ -738,19 +747,19 @@ public void ImportCycleGroup(CodeGraph.Graph.CodeGraph graph) presentationState.SetCollapsedState(roots[0].Id, false); } - _viewer.LoadSession(graph, presentationState); + _state.LoadSession(graph, presentationState); WarnIfFiltersActive(); } public GraphSession GetSession() { - return _viewer.GetSession(); + return _state.GetSession(); } public CodeGraph.Graph.CodeGraph GetGraph() { - return _viewer.GetGraph(); + return _state.CodeGraph; } public void LoadSession(GraphSession session, bool withUndo) @@ -761,7 +770,7 @@ public void LoadSession(GraphSession session, bool withUndo) } var elements = _explorer.GetElements(session.CodeElementIds); - _viewer.LoadSession(elements, session.Relationships, session.PresentationState); + _state.LoadSession(elements, session.Relationships, session.PresentationState); WarnIfFiltersActive(); } @@ -770,7 +779,7 @@ private void WarnIfFiltersActive() { if (_settings.WarnIfFiltersActive) { - var hideFilter = _viewer.GetHideFilter(); + var hideFilter = _state.HideFilter; if (hideFilter.IsActive()) { // var hiddenCount = hideFilter.HiddenElementTypes.Count + hideFilter.HiddenRelationshipTypes.Count; @@ -792,7 +801,7 @@ public bool TryHandleKeyDown(KeyEventArgs keyEventArgs) private void OpenGraphHideDialog() { - var currentFilter = _viewer.GetHideFilter(); + var currentFilter = _state.HideFilter; var viewModel = new GraphHideDialogViewModel(currentFilter); var dialog = new GraphHideDialog(viewModel) { @@ -803,7 +812,7 @@ private void OpenGraphHideDialog() if (result == true) { // Apply the filter from the dialog - _viewer.SetHideFilter(viewModel.Filter); + _state.SetHideFilter(viewModel.Filter); } } @@ -811,8 +820,8 @@ public void HandleCodeGraphRefactored(CodeGraphRefactored message) { // No undo because the old model does not exist anymore. - var session = _viewer.GetSession(); - var canvasGraph = _viewer.GetGraph(); + var session = _state.GetSession(); + var canvasGraph = _state.CodeGraph; if (message is CodeElementsDeleted deleted) { @@ -825,7 +834,7 @@ public void HandleCodeGraphRefactored(CodeGraphRefactored message) var presentationState = session.PresentationState.Clone(); presentationState.RemoveStates(deleted.DeletedIds); - _viewer.LoadSession(newGraph, presentationState); + _state.LoadSession(newGraph, presentationState); } else if (message is CodeElementsMoved moved) { @@ -857,19 +866,14 @@ public void HandleCodeGraphRefactored(CodeGraphRefactored message) // I use the old presentation state. Except the new parent node I should not see any different nodes. // However, the parent / child relationships have changed. var nodes = ids.Select(id => originalGraph.Nodes[id]).ToList(); - _viewer.LoadSession(nodes, relationships, session.PresentationState); + _state.LoadSession(nodes, relationships, session.PresentationState); } else if (message is RelationshipsDeleted relationshipsDeleted) { // Get rid of relationships in the canvas graph. - _viewer.RemoveFromGraph(relationshipsDeleted.Deleted); + _state.RemoveRelationships(relationshipsDeleted.Deleted); } // Added elements are for sure not in this graph yet. } - - public void ClearQuickInfo() - { - _viewer.ClearQuickInfo(); - } } \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/GraphViewState.cs b/CSharpCodeAnalyst/Features/Graph/GraphViewState.cs new file mode 100644 index 0000000..93640ac --- /dev/null +++ b/CSharpCodeAnalyst/Features/Graph/GraphViewState.cs @@ -0,0 +1,298 @@ +using CodeGraph.Graph; +using CSharpCodeAnalyst.Features.Graph.Filtering; +using CSharpCodeAnalyst.Features.Graph.RenderOptions; + +namespace CSharpCodeAnalyst.Features.Graph; + +/// +/// Render-agnostic model of the graph view: the working graph, presentation state +/// (collapsed / flags / search highlights), hide filter, display toggles, highlight +/// mode, the context-command registry and session handling. +/// This is the single source of truth. The renderers observe structural changes via +/// and drive via the operations below. It contains no UI so it is unit-testable. +/// +public class GraphViewState +{ + private readonly List _edgeCommands = []; + private readonly List _globalCommands = []; + private readonly List _nodeCommands = []; + + private readonly HashSet _selectedIds = []; + + public CodeGraph.Graph.CodeGraph CodeGraph { get; private set; } = new(); + public PresentationState PresentationState { get; private set; } = new(); + public GraphHideFilter HideFilter { get; private set; } = new(); + + public bool ShowFlat { get; private set; } + public bool ShowInformationFlow { get; private set; } + public HighlightMode HighlightMode { get; private set; } = HighlightMode.EdgeHovered; + + /// + /// The active graph layout key (e.g. "fcose", "dagre-tb"). Cytoscape stays the + /// renderer; only the layout extension that computes positions changes. + /// + public string LayoutName { get; private set; } = "fcose"; + + /// + /// The currently selected ids. + /// The web view pushes it on selection change. Commands that act on "the selected elements" read this. + /// + public IReadOnlyCollection SelectedIds => _selectedIds; + + public IReadOnlyList NodeCommands => _nodeCommands; + public IReadOnlyList EdgeCommands => _edgeCommands; + public IReadOnlyList GlobalCommands => _globalCommands; + + /// Structural change: observers should re-render (and possibly re-layout). + public event Action? Changed; + + /// The hover-highlight mode changed (a view concern, not a structural change). + public event Action? HighlightModeChanged; + + /// The layout algorithm changed (render-only: re-layout, no rebuild). + public event Action? LayoutChanged; + + /// The selection changed (not a structural change; no re-layout needed). + public event Action? SelectionChanged; + + /// + /// A decoration changed (flags / search highlights). These are PresentationState + /// overlays that only restyle existing elements — observers must NOT re-layout. + /// + public event Action? DecorationsChanged; + + // ---- Command registry --------------------------------------------------- + public void AddCommand(ICodeElementContextCommand command) + { + _nodeCommands.Add(command); + } + + public void AddCommand(IRelationshipContextCommand command) + { + _edgeCommands.Add(command); + } + + public void AddGlobalCommand(IGlobalCommand command) + { + _globalCommands.Add(command); + } + + // ---- Display toggles ---------------------------------------------------- + public void SetShowFlat(bool value) + { + ShowFlat = value; + RaiseChanged(); + } + + public void SetShowInformationFlow(bool value) + { + ShowInformationFlow = value; + RaiseChanged(); + } + + public void SetHighlightMode(HighlightMode mode) + { + HighlightMode = mode; + HighlightModeChanged?.Invoke(mode); + } + + public void SetLayout(string name) + { + LayoutName = name; + LayoutChanged?.Invoke(name); + } + + public void SetHideFilter(GraphHideFilter filter) + { + HideFilter = filter; + RaiseChanged(); + } + + public void SetSelection(IEnumerable ids) + { + var incoming = ids.ToList(); + if (_selectedIds.SetEquals(incoming)) + { + // No actual change + return; + } + + _selectedIds.Clear(); + _selectedIds.UnionWith(incoming); + SelectionChanged?.Invoke(); + } + + // ---- Decorations (flags / search highlights) ---------------------------- + // The data lives in PresentationState; these ops mutate it and raise DecorationsChanged + // so every adapter restyles WITHOUT a re-layout. + public bool IsFlagged(string id) + { + return PresentationState.IsFlagged(id); + } + + public void ToggleFlag(string id) + { + PresentationState.SetFlaggedState(id, !PresentationState.IsFlagged(id)); + DecorationsChanged?.Invoke(); + } + + public void ToggleFlag(string sourceId, string targetId) + { + var key = (sourceId, targetId); + PresentationState.SetFlaggedState(key, !PresentationState.IsFlagged(key)); + DecorationsChanged?.Invoke(); + } + + public void ClearAllFlags() + { + PresentationState.ClearAllFlags(); + DecorationsChanged?.Invoke(); + } + + public void SetSearchHighlights(IEnumerable nodeIds) + { + PresentationState.ClearAllSearchHighlights(); + foreach (var id in nodeIds) + { + PresentationState.SetSearchHighlightedState(id, true); + } + + DecorationsChanged?.Invoke(); + } + + public void ClearSearchHighlights() + { + PresentationState.ClearAllSearchHighlights(); + DecorationsChanged?.Invoke(); + } + + // ---- Collapse / expand -------------------------------------------------- + public void Collapse(string id) + { + PresentationState.SetCollapsedState(id, true); + RaiseChanged(); + } + + public void Expand(string id) + { + PresentationState.SetCollapsedState(id, false); + RaiseChanged(); + } + + public bool IsCollapsed(string id) + { + return PresentationState.IsCollapsed(id); + } + + // ---- Add / remove ------------------------------------------------------- + public List AddToGraph(IEnumerable originalCodeElements, + IEnumerable newRelationships, bool addCollapsed) + { + var integrated = AddToGraphInternal(originalCodeElements, newRelationships); + + if (addCollapsed) + { + foreach (var codeElement in integrated.Where(c => c.Children.Any())) + { + PresentationState.SetCollapsedState(codeElement.Id, true); + } + } + + RaiseChanged(); + return integrated; + } + + public void RemoveRelationships(List relationships) + { + foreach (var relationship in relationships) + { + CodeGraph.Nodes[relationship.SourceId].Relationships.Remove(relationship); + } + + RaiseChanged(); + } + + public void RemoveElements(HashSet idsToRemove) + { + if (idsToRemove.Count == 0) + { + return; + } + + CodeGraph.RemoveCodeElements(idsToRemove); + PresentationState.RemoveStates(idsToRemove); + RaiseChanged(); + } + + // ---- Sessions ----------------------------------------------------------- + public GraphSession GetSession() + { + return GraphSession.Create("", CodeGraph, PresentationState); + } + + public void LoadSession(List codeElements, List relationships, PresentationState state) + { + ClearData(); + AddToGraphInternal(codeElements, relationships); + PresentationState = state; + RaiseChanged(); + } + + public void LoadSession(CodeGraph.Graph.CodeGraph newGraph, PresentationState? presentationState) + { + PresentationState = presentationState ?? new PresentationState(); + CodeGraph = newGraph; + RaiseChanged(); + } + + public void Clear() + { + ClearData(); + RaiseChanged(); + } + + private void ClearData() + { + CodeGraph = new CodeGraph.Graph.CodeGraph(); + PresentationState = new PresentationState(); + } + + private List AddToGraphInternal(IEnumerable originalCodeElements, + IEnumerable newRelationships) + { + var integrated = IntegrateNewFromOriginal(originalCodeElements); + + // Add relationships we explicitly requested. + foreach (var newRelationship in newRelationships) + { + var sourceElement = CodeGraph.Nodes[newRelationship.SourceId]; + sourceElement.Relationships.Add(newRelationship); + } + + return integrated; + } + + /// + /// Adds the new nodes, integrating hierarchical relationships from original master + /// nodes. Parent / child connections not present in this graph are discarded. + /// + private List IntegrateNewFromOriginal(IEnumerable originalCodeElements) + { + var integrated = new List(); + foreach (var originalElement in originalCodeElements) + { + var result = CodeGraph.IntegrateCodeElementFromOriginal(originalElement); + if (result.IsAdded) + { + integrated.Add(result.CodeElement); + } + } + + return integrated; + } + + private void RaiseChanged() + { + Changed?.Invoke(); + } +} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/GraphViewer.cs b/CSharpCodeAnalyst/Features/Graph/GraphViewer.cs deleted file mode 100644 index 3dabc44..0000000 --- a/CSharpCodeAnalyst/Features/Graph/GraphViewer.cs +++ /dev/null @@ -1,925 +0,0 @@ -using System.ComponentModel; -using System.Diagnostics; -using System.IO; -using System.Runtime.CompilerServices; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Input; -using CodeGraph.Graph; -using CSharpCodeAnalyst.Features.Graph.Filtering; -using CSharpCodeAnalyst.Features.Graph.Highlighting; -using CSharpCodeAnalyst.Features.Graph.RenderOptions; -using CSharpCodeAnalyst.Features.Help; -using CSharpCodeAnalyst.Resources; -using CSharpCodeAnalyst.Shared.Contracts; -using CSharpCodeAnalyst.Shared.Messages; -using Microsoft.Msagl.Core.Routing; -using Microsoft.Msagl.Drawing; -using Node = Microsoft.Msagl.Drawing.Node; - -namespace CSharpCodeAnalyst.Features.Graph; - -/// -/// Note: -/// Between nodes we can have multiple relationships if the relationship type is different. -/// Relationships of the same type (i.e a method Calls another multiple times) are handled -/// in the parser. In this case the relationship holds all source references. -/// If ever the MSAGL is replaced this is the adapter to re-write. -/// -public class GraphViewer : IGraphViewer, IGraphBinding, INotifyPropertyChanged, IGraphViewerHighlighting -{ - private readonly List _edgeCommands = []; - private readonly List _globalCommands = []; - private readonly int _maxElementWarningLimit; - private readonly List _nodeCommands = []; - private readonly IPublisher _publisher; - - private IHighlighting _activeHighlighting = new EdgeHoveredHighlighting(); - - private ClickController? _clickController; - - /// - /// Held to read the help - /// - private IViewerObject? _clickedObject; - - private CodeGraph.Graph.CodeGraph _clonedCodeGraph = new(); - private IQuickInfoFactory? _factory; - private bool _flow; - - private GraphHideFilter _hideFilter = new(); - private Microsoft.Msagl.WpfGraphControl.GraphViewer? _msaglViewer; - private PresentationState _presentationState = new(); - private RenderOption _renderOption = new DefaultRenderOptions(); - private bool _showFlatGraph; - - /// - /// Note: - /// Between nodes we can have multiple relationships if the relationship type is different. - /// Relationships of the same type (i.e a method Calls another multiple times) are handled - /// in the parser. In this case the relationship holds all source references. - /// - public GraphViewer(IPublisher publisher, int settings) - { - _publisher = publisher; - SetHighlightMode(HighlightMode.EdgeHovered); - _maxElementWarningLimit = settings; - } - - public void Bind(Panel graphPanel) - { - _msaglViewer = new Microsoft.Msagl.WpfGraphControl.GraphViewer(); - _msaglViewer.BindToPanel(graphPanel); - - _msaglViewer.ObjectUnderMouseCursorChanged += ObjectUnderMouseCursorChanged; - - _clickController = new ClickController(_msaglViewer); - - _clickController.LeftDoubleClick += OnLeftDoubleClick; - _clickController.LeftSingleClick += OnLeftSingleClick; - _clickController.OpenContextMenu += OnOpenContextMenu; - } - - - public void ShowFlatGraph(bool value) - { - _showFlatGraph = value; - RefreshGraph(); - } - - public void ShowInformationFlow(bool value) - { - _flow = value; - RefreshGraph(); - } - - /// - /// Adding an existing element or relationship is prevented. - /// Note from the originalCodeElement we don't add parent or children. - /// We just use this information to integrate the node into the existing canvas. - /// - public void AddToGraph(IEnumerable originalCodeElements, IEnumerable newRelationships, bool addCollapsed) - { - if (!IsBoundToPanel()) - { - return; - } - - var original = originalCodeElements.ToList(); - - // Actually I could iterate over the elements that w - //var previousElementIds = _clonedCodeGraph.Nodes.Values.Select(n => n.Id).ToHashSet(); - //var newElementIds = original.Select(n => n.Id).Except(previousElementIds); - - var integrated = AddToGraphInternal(original, newRelationships); - - if (addCollapsed) - { - foreach (var codeElement in integrated.Where(c => c.Children.Any())) - { - _presentationState.SetCollapsedState(codeElement.Id, true); - } - } - - RefreshGraph(); - OnGraphChanged(); - } - - public void AddCommand(ICodeElementContextCommand command) - { - _nodeCommands.Add(command); - } - - public void AddCommand(IRelationshipContextCommand command) - { - _edgeCommands.Add(command); - } - - public void AddGlobalCommand(IGlobalCommand command) - { - _globalCommands.Add(command); - } - - public void Layout() - { - //_msaglViewer?.SetInitialTransform(); - RefreshGraph(); - } - - public CodeGraph.Graph.CodeGraph GetGraph() - { - return _clonedCodeGraph; - } - - public void UpdateRenderOption(RenderOption renderOption) - { - _renderOption = renderOption; - RefreshGraph(); - } - - public void SetHideFilter(GraphHideFilter filter) - { - _hideFilter = filter; - RefreshGraph(); - } - - public GraphHideFilter GetHideFilter() - { - return _hideFilter; - } - - public void SaveToSvg(FileStream stream) - { - if (_msaglViewer is null) - { - return; - } - - var writer = new SvgGraphWriter(stream, _msaglViewer.Graph); - writer.Write(); - } - - public void SetHighlightMode(HighlightMode valueMode) - { - ClearAllEdgeHighlighting(); - - switch (valueMode) - { - case HighlightMode.EdgeHovered: - _activeHighlighting = new EdgeHoveredHighlighting(); - break; - case HighlightMode.OutgoingEdgesChildrenAndSelf: - _activeHighlighting = new OutgoingEdgesOfChildrenAndSelfHighlighting(); - break; - case HighlightMode.ShortestNonSelfCircuit: - _activeHighlighting = new HighlightShortestNonSelfCircuit(); - break; - default: - _activeHighlighting = new EdgeHoveredHighlighting(); - break; - } - } - - public void SetQuickInfoFactory(IQuickInfoFactory factory) - { - _factory = factory; - _publisher.Publish(new QuickInfoUpdateRequest(QuickInfoFactory.DefaultInfo)); - } - - - public void ShowGlobalContextMenu() - { - // Click on free space - if (!_globalCommands.Any() || _msaglViewer?.ObjectUnderMouseCursor != null || - !_clonedCodeGraph.Nodes.Any()) - { - return; - } - - var globalContextMenu = new ContextMenu(); - - var selectedElements = GetSelectedElementIds() - .Select(id => _clonedCodeGraph.Nodes[id]) - .ToList(); - - foreach (var command in _globalCommands) - { - if (!command.CanHandle(selectedElements)) - { - continue; - } - - var menuItem = new MenuItem { Header = command.Label }; - - // Add icon if provided - if (command.Icon != null) - { - var iconImage = new Image - { - Width = 16, - Height = 16, - Source = command.Icon - }; - menuItem.Icon = iconImage; - } - - menuItem.Click += (_, _) => command.Invoke(selectedElements); - globalContextMenu.Items.Add(menuItem); - } - - globalContextMenu.IsOpen = true; - } - - public GraphSession GetSession() - { - return GraphSession.Create("", _clonedCodeGraph, _presentationState); - } - - - public void Clear() - { - if (_msaglViewer is null) - { - return; - } - - _clonedCodeGraph = new CodeGraph.Graph.CodeGraph(); - - // Nothing collapsed by default - _presentationState = new PresentationState(); - RefreshGraph(); - OnGraphChanged(); - } - - public void RemoveFromGraph(List relationships) - { - if (_msaglViewer is null) - { - return; - } - - foreach (var relationship in relationships) - { - _clonedCodeGraph.Nodes[relationship.SourceId].Relationships.Remove(relationship); - } - - RefreshGraph(); - } - - public void RemoveFromGraph(HashSet idsToRemove) - { - if (_msaglViewer is null) - { - return; - } - - if (!idsToRemove.Any()) - { - return; - } - - _clonedCodeGraph.RemoveCodeElements(idsToRemove); - _presentationState.RemoveStates(idsToRemove); - - RefreshGraph(); - } - - public void Collapse(string id) - { - _presentationState.SetCollapsedState(id, true); - RefreshGraph(); - } - - public void Expand(string id) - { - _presentationState.SetCollapsedState(id, false); - RefreshGraph(); - } - - public bool IsCollapsed(string id) - { - return _presentationState.IsCollapsed(id); - } - - public bool IsFlagged(string id) - { - return _presentationState.IsFlagged(id); - } - - public void ToggleFlag(string id) - { - var currentState = _presentationState.IsFlagged(id); - var newState = !currentState; - _presentationState.SetFlaggedState(id, newState); - RefreshNodeDecorationWithoutLayout([id]); - } - - public void ToggleFlag(string sourceId, string targetId, List relationships) - { - var key = (sourceId, targetId); - var currentState = _presentationState.IsFlagged(key); - var newState = !currentState; - _presentationState.SetFlaggedState(key, newState); - RefreshEdgeDecorationWithoutLayout([key]); - } - - public void ClearAllFlags() - { - var affectedIds = _presentationState.NodeIdToFlagged.Keys.ToList(); - _presentationState.ClearAllFlags(); - RefreshNodeDecorationWithoutLayout(affectedIds); - - // After the highlighting is removed the state appears. - ClearAllEdgeHighlighting(); - } - - public void SetSearchHighlights(List nodeIds) - { - // Clear previous search highlights - var previousIds = _presentationState.NodeIdToSearchHighlighted.Keys.ToList(); - - _presentationState.ClearAllSearchHighlights(); - - // Set new search highlights - foreach (var nodeId in nodeIds) - { - _presentationState.SetSearchHighlightedState(nodeId, true); - } - - // Refresh all affected nodes - var allAffectedIds = previousIds.Union(nodeIds).ToList(); - RefreshNodeDecorationWithoutLayout(allAffectedIds); - } - - public void ClearSearchHighlights() - { - var ids = _presentationState.NodeIdToSearchHighlighted.Keys.ToList(); - _presentationState.ClearAllSearchHighlights(); - RefreshNodeDecorationWithoutLayout(ids); - } - - public void LoadSession(List codeElements, List relationships, PresentationState state) - { - if (_msaglViewer is null) - { - return; - } - - Clear(); - AddToGraphInternal(codeElements, relationships); - _presentationState = state; - - RefreshGraph(); - OnGraphChanged(); - } - - public void LoadSession(CodeGraph.Graph.CodeGraph newGraph, PresentationState? presentationState) - { - if (presentationState is null) - { - presentationState = new PresentationState(); - } - - _presentationState = presentationState; - _clonedCodeGraph = newGraph; - RefreshGraph(); - OnGraphChanged(); - } - - public event Action? GraphChanged; - - public bool TryHandleKeyEvent(Key key) - { - var cmd = _globalCommands.FirstOrDefault(c => c.Key == key); - if (cmd is null) - { - return false; - } - - var selectedElements = GetSelectedElementIds() - .Select(id => _clonedCodeGraph.Nodes[id]) - .ToList(); - if (cmd.CanHandle(selectedElements)) - { - cmd.Invoke(selectedElements); - return true; - } - - return false; - } - - public HashSet GetSelectedElementIds() - { - if (_msaglViewer is null) - { - return []; - } - - var selectedIds = _msaglViewer.Entities - .Where(e => e.MarkedForDragging) - .OfType() - .Select(n => n.Node.Id) - .ToHashSet(); - return selectedIds; - } - - public void ClearQuickInfo() - { - _clickedObject = null; - } - - public Microsoft.Msagl.WpfGraphControl.GraphViewer? GetMsaglGraphViewer() - { - return _msaglViewer; - } - - public void ClearAllEdgeHighlighting() - { - if (_msaglViewer is null) - { - return; - } - - var edges = _msaglViewer.Entities.OfType(); - foreach (var edge in edges) - { - ClearEdgeHighlighting(edge); - } - } - - /// - /// - /// - public void ClearEdgeHighlighting(IViewerEdge? edge) - { - if (edge is null) - { - return; - } - - edge.Edge.Attr.Color = Constants.DefaultLineColor; - edge.Edge.Attr.LineWidth = Constants.DefaultLineWidth; - - if (edge.Edge.UserData is Relationship { Type: RelationshipType.Containment }) - { - edge.Edge.Attr.Color = Constants.GrayColor; - } - - // Clearing highlighting recovers the flagged state. - if (_presentationState.IsFlagged((edge.Edge.Source, edge.Edge.Target))) - { - edge.Edge.Attr.LineWidth = Constants.FlagLineWidth; - edge.Edge.Attr.Color = Constants.FlagColor; - } - } - - public void HighlightEdge(IViewerEdge edge) - { - edge.Edge.Attr.Color = Constants.MouseHighlightColor; - edge.Edge.Attr.LineWidth = Constants.MouseHighlightLineWidth; - _msaglViewer?.Invalidate(edge); - } - - public event PropertyChangedEventHandler? PropertyChanged; - - private void OnGraphChanged() - { - GraphChanged?.Invoke(_clonedCodeGraph); - } - - private void OnOpenContextMenu(IViewerObject? obj) - { - if (_msaglViewer?.ObjectUnderMouseCursor is IViewerNode clickedObject) - { - // Click on specific node - var node = clickedObject.Node; - var contextMenu = new ContextMenu(); - var element = GetCodeElementFromUserData(node); - AddToContextMenuEntries(element, contextMenu); - if (contextMenu.Items.Count > 0) - { - contextMenu.IsOpen = true; - } - } - else if (_msaglViewer?.ObjectUnderMouseCursor is IViewerEdge viewerEdge) - { - // Click on specific edge - var edge = viewerEdge.Edge; - var sourceId = edge.Source; - var targetid = edge.Target; - var contextMenu = new ContextMenu(); - var relationships = GetRelationshipsFromUserData(edge); - AddContextMenuEntries(sourceId, targetid, relationships, contextMenu); - if (contextMenu.Items.Count > 0) - { - contextMenu.IsOpen = true; - } - } - else - { - // Click on free space - ShowGlobalContextMenu(); - } - } - - private void OnLeftSingleClick(IViewerObject? obj) - { - if (obj == null) - { - // Release the fixed info if we click on empty space - _clickedObject = null; - } - else - { - // User wants to "hold" the current quick info. - _clickedObject = obj; - } - - UpdateQuickInfoPanel(obj); - } - - private void OnLeftDoubleClick(IViewerObject? obj) - { - // Execute double click action if any registered - if (obj is IViewerNode clickedObject) - { - var node = clickedObject.Node; - var element = GetCodeElementFromUserData(node); - if (element is not null) - { - foreach (var cmd in _nodeCommands) - { - if (cmd.IsDoubleClickable && cmd.CanHandle(element)) - { - cmd.Invoke(element); - return; - } - } - } - } - } - - /// - /// Assumption. In the hierarchical view there is only one edge connecting two nodes. Real edges are bundled together. - /// - private void RefreshEdgeDecorationWithoutLayout(List<(string sourceId, string targetId)> relationships) - { - if (_msaglViewer?.Graph is null) - { - return; - } - - //var edges = _msaglViewer.Graph.Edges.Where(e => relationships.Contains((e.Source, e.Target))); - var edges = _msaglViewer.Entities.OfType().Where(e => relationships.Contains((e.Edge.Source, e.Edge.Target))); - - foreach (var edge in edges) - { - ClearEdgeHighlighting(edge); - } - } - - private void RefreshNodeDecorationWithoutLayout(List ids) - { - if (_msaglViewer?.Graph is null) - { - return; - } - - foreach (var id in ids) - { - if (!TryGetNodeOrSubGraphToRefresh(id, out var node)) - { - continue; - } - - if (node is null) - { - continue; - } - - // Apply correct styling based on current state - if (_presentationState.IsFlagged(id)) - { - // Flagged takes precedence over search highlight. - // We don't want to destroy the flags when updating highlights. - node.Attr.Color = Constants.FlagColor; - node.Attr.LineWidth = Constants.FlagLineWidth; - } - else if (_presentationState.IsSearchHighlighted(id)) - { - node.Attr.Color = Constants.SearchHighlightColor; - node.Attr.LineWidth = Constants.SearchHighlightLineWidth; - } - else - { - node.Attr.Color = Constants.DefaultLineColor; - node.Attr.LineWidth = Constants.DefaultLineWidth; - } - } - } - - private bool TryGetNodeOrSubGraphToRefresh(string id, out Node? node) - { - node = _msaglViewer!.Graph.FindNode(id); - if (node is not null) - { - return true; - } - - // If the id is rendered as an expanded subgraph. Both derive from Node. - if (_msaglViewer.Graph.SubgraphMap.TryGetValue(id, out var subGraph)) - { - node = subGraph; - return true; - } - - // This happens when the highlighting finds matches that are not currently visible. - return false; - } - - private bool IsBoundToPanel() - { - return _msaglViewer is not null; - } - - private List AddToGraphInternal(IEnumerable originalCodeElements, - IEnumerable newRelationships) - { - if (_msaglViewer is null) - { - return []; - } - - var integrated = IntegrateNewFromOriginal(originalCodeElements); - - // Add relationships we explicitly requested. - foreach (var newRelationship in newRelationships) - { - var sourceElement = _clonedCodeGraph.Nodes[newRelationship.SourceId]; - sourceElement.Relationships.Add(newRelationship); - } - - return integrated; - } - - /// - /// Adds the new nodes, integrating hierarchical relationships from - /// original master nodes. Parent / child connections not present in this graph are discarded. - /// We may add them later when adding new elements. - /// The original elements get cloned. - /// - private List IntegrateNewFromOriginal(IEnumerable originalCodeElements) - { - var integrated = new List(); - foreach (var originalElement in originalCodeElements) - { - var result = _clonedCodeGraph.IntegrateCodeElementFromOriginal(originalElement); - if (result.IsAdded) - { - integrated.Add(result.CodeElement); - } - } - - return integrated; - } - - private bool ShouldProceedWithLargeGraph(int numberOfElements) - { - if (numberOfElements > _maxElementWarningLimit) - { - var msg = string.Format(Strings.TooMuchElementsMessage, numberOfElements); - var title = Strings.TooMuchElementsTitle; - var result = MessageBox.Show(msg, title, MessageBoxButton.YesNo, MessageBoxImage.Warning); - return MessageBoxResult.Yes == result; - } - - return true; - } - - private bool RefreshGraph(bool askUserToShowLargeGraphs = true) - { - try - { - if (_msaglViewer != null) - { - MsaglBuilderBase builder = _showFlatGraph ? new MsaglFlatBuilder() : new MsaglHierarchicalBuilder(); - var graph = builder.CreateGraph(_clonedCodeGraph, _presentationState, _flow, _hideFilter); - - if (askUserToShowLargeGraphs) - { - var elements = graph.Nodes.Count() + graph.Edges.Count() + graph.SubgraphMap.Count; - if (!ShouldProceedWithLargeGraph(elements)) - { - _msaglViewer.Graph = new Microsoft.Msagl.Drawing.Graph(); - return false; - } - } - - - _renderOption.Apply(graph); - - Exception? renderException = null; - try - { - _msaglViewer.Graph = graph; - } - catch (Exception ex) - { - renderException = ex; - } - - if (renderException != null) - { - // In rare cases the rendering fails when finding attachment points for bundled edges. - // As a workaround I render the graph with straight lines. - MessageBox.Show(Strings.GraphRenderingWarning, Strings.Warning_Title, MessageBoxButton.OK, MessageBoxImage.Warning); - - var settings = graph.LayoutAlgorithmSettings; - settings.EdgeRoutingSettings.EdgeRoutingMode = EdgeRoutingMode.StraightLine; - _msaglViewer.Graph = graph; - } - } - } - catch (Exception ex) - { - Trace.WriteLine(ex); - MessageBox.Show(Strings.GraphRenderingError, Strings.Error_Title, MessageBoxButton.OK, MessageBoxImage.Error); - } - - return true; - } - - - private void ObjectUnderMouseCursorChanged(object? sender, ObjectUnderMouseCursorChangedEventArgs e) - { - if (_clickedObject is null) - { - // Update only if we don't hold the quick info. - UpdateQuickInfoPanel(e.NewObject); - } - - ClearAllEdgeHighlighting(); - _activeHighlighting.Highlight(this, e.NewObject, _clonedCodeGraph); - } - - private void OnPropertyChanged([CallerMemberName] string? name = null) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); - } - - private void UpdateQuickInfoPanel(IViewerObject? obj) - { - var quickInfo = QuickInfoFactory.NoInfoProviderRegistered; - if (_factory is not null) - { - quickInfo = _factory.CrateQuickInfo(obj); - } - - _publisher.Publish(new QuickInfoUpdateRequest(quickInfo)); - } - - private void AddContextMenuEntries(string sourceId, string targetId, List relationships, ContextMenu contextMenu) - { - if (relationships.Count == 0) - { - return; - } - - Dictionary subMenus = []; - foreach (var cmd in _edgeCommands) - { - if (cmd.CanHandle(relationships)) - { - MenuItem? parentMenu = null; - var menuItem = new MenuItem { Header = cmd.Label }; - - var isSubMenu = !string.IsNullOrEmpty(cmd.SubMenuGroup); - if (isSubMenu && cmd.SubMenuGroup != null) - { - if (!subMenus.TryGetValue(cmd.SubMenuGroup, out parentMenu)) - { - parentMenu = new MenuItem(); - parentMenu.Header = cmd.SubMenuGroup; - subMenus[cmd.SubMenuGroup] = parentMenu; - contextMenu.Items.Add(parentMenu); - } - } - - // Add icon if provided - if (cmd.Icon != null) - { - var iconImage = new Image - { - Width = 16, - Height = 16, - Source = cmd.Icon - }; - menuItem.Icon = iconImage; - } - - menuItem.Click += (_, _) => cmd.Invoke(sourceId, targetId, relationships); - - if (!isSubMenu) - { - contextMenu.Items.Add(menuItem); - } - else - { - parentMenu!.Items.Add(menuItem); - } - } - } - } - - private static List GetRelationshipsFromUserData(Edge edge) - { - var result = new List(); - switch (edge.UserData) - { - case Relationship relationship: - result.Add(relationship); - break; - case List relationships: - result.AddRange(relationships); - break; - } - - return result; - } - - private static CodeElement? GetCodeElementFromUserData(Node node) - { - return node.UserData as CodeElement; - } - - /// - /// Commands registered for nodes - /// - private void AddToContextMenuEntries(CodeElement? element, ContextMenu contextMenu) - { - if (element is null) - { - return; - } - - var lastItemIsSeparator = true; - - foreach (var cmd in _nodeCommands) - { - // Add separator command only if the last element was a real menu item. - if (cmd is SeparatorCommand) - { - if (!lastItemIsSeparator) - { - contextMenu.Items.Add(new Separator()); - lastItemIsSeparator = true; - } - - continue; - } - - if (!cmd.IsVisible || !cmd.CanHandle(element)) - { - continue; - } - - var menuItem = new MenuItem { Header = cmd.Label }; - - // Add icon if provided - if (cmd.Icon != null) - { - var iconImage = new Image - { - Width = 16, - Height = 16, - Source = cmd.Icon - }; - menuItem.Icon = iconImage; - } - - menuItem.Click += (_, _) => cmd.Invoke(element); - contextMenu.Items.Add(menuItem); - lastItemIsSeparator = false; - } - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/Highlighting/EdgeHoveredHighlighting.cs b/CSharpCodeAnalyst/Features/Graph/Highlighting/EdgeHoveredHighlighting.cs deleted file mode 100644 index e3af536..0000000 --- a/CSharpCodeAnalyst/Features/Graph/Highlighting/EdgeHoveredHighlighting.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph.Highlighting; - -internal class EdgeHoveredHighlighting : HighlightingBase -{ - - public override void Highlight(IGraphViewerHighlighting graphViewer, - IViewerObject? viewerObject, CodeGraph.Graph.CodeGraph? codeGraph) - { - if (codeGraph is null) - { - return; - } - - graphViewer.ClearAllEdgeHighlighting(); - if (viewerObject is not IViewerEdge newEdge) - { - return; - } - - // Highlight new edge, if any - graphViewer.HighlightEdge(newEdge); - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/Highlighting/HighlightShortestNonSelfCircuit.cs b/CSharpCodeAnalyst/Features/Graph/Highlighting/HighlightShortestNonSelfCircuit.cs deleted file mode 100644 index 6b0b999..0000000 --- a/CSharpCodeAnalyst/Features/Graph/Highlighting/HighlightShortestNonSelfCircuit.cs +++ /dev/null @@ -1,121 +0,0 @@ -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph.Highlighting; - -internal class HighlightShortestNonSelfCircuit : HighlightingBase -{ - private Dictionary _idToViewerNode = new(); - private Microsoft.Msagl.Drawing.Graph? _lastGraph; - - - private void Clear(IGraphViewerHighlighting graphViewer) - { - graphViewer.ClearAllEdgeHighlighting(); - _idToViewerNode.Clear(); - _lastGraph = null; - } - - - public override void Highlight(IGraphViewerHighlighting graphViewer, - IViewerObject? viewerObject, CodeGraph.Graph.CodeGraph? codeGraph) - { - if (codeGraph is null) - { - return; - } - - if (viewerObject is not IViewerNode selectedNode) - { - Clear(graphViewer); - return; - } - - var msagl = graphViewer.GetMsaglGraphViewer(); - if (msagl != null && !ReferenceEquals(_lastGraph, msagl.Graph)) - { - // Optimize same search on same graph. Did it really take that long? - _idToViewerNode = msagl.Entities.OfType().ToDictionary(n => n.Node.Id, n => n); - _lastGraph = msagl.Graph; - } - - var shortestPath = new List(); - var minEdges = int.MaxValue; - - // We see the graph in correct representation state (collapsed nodes) - foreach (var edgeToNeighbor in selectedNode.OutEdges) - { - // Since we don't want self edge we start with the direct neighbors - // Edge.Source is null!? - - var path = BreadthFirstSearch( - _idToViewerNode[edgeToNeighbor.Edge.Target], selectedNode, _idToViewerNode); - - if (path.Any() && path.Count + 1 < minEdges) // + 1 for the starting edge - { - path.Add(edgeToNeighbor); - shortestPath = path; - minEdges = path.Count; - } - } - - graphViewer.ClearAllEdgeHighlighting(); - foreach (var edge in shortestPath) - { - graphViewer.HighlightEdge(edge); - } - } - - - private static List BreadthFirstSearch(IViewerNode start, IViewerNode end, - Dictionary idToViewerNode) - { - // node id -> edge we came from (contains the source) - var whereICameFrom = new Dictionary(); - var queue = new Queue(); - queue.Enqueue(start); - whereICameFrom[start.Node.Id] = null!; - - while (queue.Count > 0) - { - var node = queue.Dequeue(); - if (ReferenceEquals(node, end)) - { - return Backtrace(whereICameFrom, start.Node.Id, end.Node.Id); - } - - foreach (var outEdge in node.OutEdges) - { - if (whereICameFrom.TryAdd(outEdge.Edge.Target, outEdge)) - { - queue.Enqueue(idToViewerNode[outEdge.Edge.Target]); - } - } - } - - return []; // No path found - } - - /// - /// Called to recreate the path when we know it exists - /// Returns the list of edges to get from start to end. - /// - private static List Backtrace(Dictionary whereICameFrom, string startNodeId, - string endNodeId) - { - // Add immediately so we can use it later for self edges. - var path = new List - { whereICameFrom[endNodeId] }; - - var currentNodeId = path.Last().Edge.Source; - while (currentNodeId != startNodeId) - { - var incomingEdge = whereICameFrom[currentNodeId]; - path.Add(incomingEdge); - currentNodeId = incomingEdge.Edge.Source; - } - - // Not necessary. - //path.Reverse(); - return path; - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/Highlighting/HighlightingBase.cs b/CSharpCodeAnalyst/Features/Graph/Highlighting/HighlightingBase.cs deleted file mode 100644 index 474cfaf..0000000 --- a/CSharpCodeAnalyst/Features/Graph/Highlighting/HighlightingBase.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph.Highlighting; - -internal abstract class HighlightingBase : IHighlighting -{ - public abstract void Highlight(IGraphViewerHighlighting graphViewer, - IViewerObject? viewerObject, CodeGraph.Graph.CodeGraph? codeGraph); -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/Highlighting/IHighlighting.cs b/CSharpCodeAnalyst/Features/Graph/Highlighting/IHighlighting.cs deleted file mode 100644 index 980f7ff..0000000 --- a/CSharpCodeAnalyst/Features/Graph/Highlighting/IHighlighting.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph.Highlighting; - -internal interface IHighlighting -{ - void Highlight(IGraphViewerHighlighting graphViewer, IViewerObject? viewerObject, - CodeGraph.Graph.CodeGraph? codeGraph); -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/Highlighting/OutgoingEdgesOfChildrenAndSelfHighlighting.cs b/CSharpCodeAnalyst/Features/Graph/Highlighting/OutgoingEdgesOfChildrenAndSelfHighlighting.cs deleted file mode 100644 index 91898e3..0000000 --- a/CSharpCodeAnalyst/Features/Graph/Highlighting/OutgoingEdgesOfChildrenAndSelfHighlighting.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph.Highlighting; - -internal class OutgoingEdgesOfChildrenAndSelfHighlighting : HighlightingBase -{ - public override void Highlight(IGraphViewerHighlighting graphViewer, - IViewerObject? viewerObject, CodeGraph.Graph.CodeGraph? codeGraph) - { - var msagl = graphViewer.GetMsaglGraphViewer(); - if (codeGraph is null || msagl is null) - { - return; - } - - if (viewerObject is not IViewerNode node) - { - graphViewer.ClearAllEdgeHighlighting(); - return; - } - - var id = node.Node.Id; - var vertex = codeGraph.Nodes[id]; - var ids = vertex.GetChildrenIncludingSelf(); - - var edges = msagl.Entities.OfType(); - foreach (var edge in edges) - { - var sourceId = edge.Edge.Source; - if (ids.Contains(sourceId)) - { - graphViewer.HighlightEdge(edge); - } - else - { - graphViewer.ClearEdgeHighlighting(edge); - } - } - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/ICodeElementContextCommand.cs b/CSharpCodeAnalyst/Features/Graph/ICodeElementContextCommand.cs index d0a6dca..d4d2fd1 100644 --- a/CSharpCodeAnalyst/Features/Graph/ICodeElementContextCommand.cs +++ b/CSharpCodeAnalyst/Features/Graph/ICodeElementContextCommand.cs @@ -10,5 +10,12 @@ public interface ICodeElementContextCommand ImageSource? Icon { get; } bool IsDoubleClickable { get; set; } bool CanHandle(CodeElement item); + + /// + /// Whether the (visible) command is enabled for this element. Lets a command always + /// appear in the menu but render grayed-out when it does not apply (default: enabled). + /// + bool CanExecute(CodeElement item) => true; + void Invoke(CodeElement item); } \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/IGraphBinding.cs b/CSharpCodeAnalyst/Features/Graph/IGraphBinding.cs deleted file mode 100644 index cf3467b..0000000 --- a/CSharpCodeAnalyst/Features/Graph/IGraphBinding.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Windows.Controls; - -namespace CSharpCodeAnalyst.Features.Graph; - -public interface IGraphBinding -{ - /// - /// Binds the given Panel to the viewer. - /// The graph is drawn on the panel. - /// Use DockPanel, Canvas does not work. - /// - void Bind(Panel graphPanel); -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/IGraphViewer.cs b/CSharpCodeAnalyst/Features/Graph/IGraphViewer.cs deleted file mode 100644 index f41d838..0000000 --- a/CSharpCodeAnalyst/Features/Graph/IGraphViewer.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System.IO; -using System.Windows.Input; -using CodeGraph.Graph; -using CSharpCodeAnalyst.Features.Graph.Filtering; -using CSharpCodeAnalyst.Features.Graph.RenderOptions; -using CSharpCodeAnalyst.Features.Help; - -namespace CSharpCodeAnalyst.Features.Graph; - -public interface IGraphViewer -{ - void ShowFlatGraph(bool value); - void ShowInformationFlow(bool value); - void AddToGraph(IEnumerable originalCodeElements, IEnumerable newRelationships, bool addCollapsed); - void RemoveFromGraph(HashSet idsToRemove); - void RemoveFromGraph(List relationships); - - void AddCommand(ICodeElementContextCommand command); - void AddGlobalCommand(IGlobalCommand command); - - /// - /// Clear the internal code graph. The graph is empty after this. - /// - void Clear(); - - /// - /// Renders the graph and re-layouts it. - /// - void Layout(); - - /// - /// Note: - /// The IQuickInfoFactory may be initialized with a different code graph. - /// We need the original graph if it exists such that we can - /// access the full parent paths that may not be known in the graph. - /// The graph may not include all the parents that are known in the original graph. - /// - void SetQuickInfoFactory(IQuickInfoFactory factory); - - CodeGraph.Graph.CodeGraph GetGraph(); - void UpdateRenderOption(RenderOption renderOption); - void SaveToSvg(FileStream stream); - void SetHighlightMode(HighlightMode valueMode); - void ShowGlobalContextMenu(); - - /// - /// Current content of the graph for persistence and undo/redo. - /// - GraphSession GetSession(); - - void Collapse(string id); - void Expand(string id); - bool IsCollapsed(string id); - - /// - /// Undo and gallery. - /// - void LoadSession(List codeElements, List relationships, PresentationState state); - - /// - /// Cycle groups, focus on selected elements - /// - void LoadSession(CodeGraph.Graph.CodeGraph newGraph, PresentationState? presentationState); - - void AddCommand(IRelationshipContextCommand command); - - // Flags - bool IsFlagged(string id); - void ToggleFlag(string id); - - void ToggleFlag(string sourceId, string targetId, List relationships); - - void ClearAllFlags(); - - // Search highlights - void SetSearchHighlights(List nodeIds); - void ClearSearchHighlights(); - - // Event for graph changes to notify search UI - event Action? GraphChanged; - bool TryHandleKeyEvent(Key key); - - void SetHideFilter(GraphHideFilter hideFilter); - GraphHideFilter GetHideFilter(); - HashSet GetSelectedElementIds(); - - /// - /// Allows to release the last clicked object. - /// If an object was clicked while the info area is not visible the quick info event is ignored. - /// However, the viewer locks the last clicked object. This gives bad user experience. - /// - void ClearQuickInfo(); -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/IGraphViewerHighlighting.cs b/CSharpCodeAnalyst/Features/Graph/IGraphViewerHighlighting.cs deleted file mode 100644 index beae5e1..0000000 --- a/CSharpCodeAnalyst/Features/Graph/IGraphViewerHighlighting.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph; - -public interface IGraphViewerHighlighting -{ - Microsoft.Msagl.WpfGraphControl.GraphViewer? GetMsaglGraphViewer(); - - void ClearAllEdgeHighlighting(); - - /// - /// Since edges are highlighted when the mouse hovers over it we have to - /// recover the flags if the highlighting is cleared. - /// - void ClearEdgeHighlighting(IViewerEdge? edge); - - void HighlightEdge(IViewerEdge edge); -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/IRelationshipContextCommand.cs b/CSharpCodeAnalyst/Features/Graph/IRelationshipContextCommand.cs index 8a4982d..0aa6705 100644 --- a/CSharpCodeAnalyst/Features/Graph/IRelationshipContextCommand.cs +++ b/CSharpCodeAnalyst/Features/Graph/IRelationshipContextCommand.cs @@ -11,5 +11,12 @@ public interface IRelationshipContextCommand string? SubMenuGroup { get; } bool CanHandle(List relationships); + + /// + /// Whether the (visible) command is enabled for these relationships. Lets a command + /// always appear but render grayed-out when it does not apply (default: enabled). + /// + bool CanExecute(List relationships) => true; + void Invoke(string sourceId, string targetId, List relationships); } \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/MsaglBuilderBase.cs b/CSharpCodeAnalyst/Features/Graph/MsaglBuilderBase.cs deleted file mode 100644 index cdbc090..0000000 --- a/CSharpCodeAnalyst/Features/Graph/MsaglBuilderBase.cs +++ /dev/null @@ -1,153 +0,0 @@ -using CodeGraph.Colors; -using CodeGraph.Graph; -using CSharpCodeAnalyst.Features.Graph.Filtering; -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph; - -internal abstract class MsaglBuilderBase -{ - - private static readonly Dictionary FlowReversalMap = new() - { - // Reverse these for information flow - { RelationshipType.Handles, true }, // Show flow: Event -> Handler - { RelationshipType.Implements, true }, // Show flow: Interface -> Implementation - { RelationshipType.Overrides, true }, // Show flow: Base -> Override - - // Keep normal direction (already show flow correctly) - { RelationshipType.Calls, false }, // Caller -> Callee (control flow) - { RelationshipType.Invokes, false }, // Invoker -> Event (event flow) - { RelationshipType.Creates, false }, // Creator -> Created (instantiation flow) - { RelationshipType.Uses, false }, // User -> Used (data flow) - { RelationshipType.Inherits, false }, // Child -> Parent (inheritance flow) - { RelationshipType.UsesAttribute, false } // Decorated -> Attribute (metadata flow) - }; - - public abstract Microsoft.Msagl.Drawing.Graph CreateGraph(CodeGraph.Graph.CodeGraph codeGraph, PresentationState presentationState, - bool showInformationFlow, GraphHideFilter hideFilter); - - protected static NodeAttr CreateNodeAttr(CodeElement element, PresentationState presentationState) - { - var attr = new NodeAttr - { - Id = element.Id, - FillColor = GetColor(element) - }; - - if (presentationState.IsFlagged(element.Id)) - { - attr.LineWidth = Constants.FlagLineWidth; - attr.Color = Constants.FlagColor; - } - else if (presentationState.IsSearchHighlighted(element.Id)) - { - attr.LineWidth = Constants.SearchHighlightLineWidth; - attr.Color = Constants.SearchHighlightColor; - } - - return attr; - } - - protected static EdgeAttr CreateEdgeAttr(string sourceId, string targetId, RelationshipType type, PresentationState presentationState) - { - var attr = new EdgeAttr(); - - - if (type == RelationshipType.Bundled) - { - // No unique styling possible when we collapse multiple edges - // Mark the multi edges with a bold line - attr.AddStyle(Style.Bold); - } - else if (type == RelationshipType.Implements) - { - attr.AddStyle(Style.Dotted); - } - - var key = (sourceId, targetId); - if (presentationState.IsFlagged(key)) - { - attr.LineWidth = Constants.FlagLineWidth; - attr.Color = Constants.FlagColor; - } - - - return attr; - } - - private static Color GetColor(CodeElement codeElement) - { - // External code elements are always gray, regardless of type - if (codeElement.IsExternal) - { - return ToColor(0x808080); // Gray - } - - // Commonly used schema by IDE's for internal elements - var rgb = ColorDefinitions.GetRbgOf(codeElement.ElementType); - return ToColor(rgb); - } - - private static Color ToColor(int colorValue) - { - // Extract RGB components - var r = colorValue >> 16 & 0xFF; - var g = colorValue >> 8 & 0xFF; - var b = colorValue & 0xFF; - - // Create and return the Color object - return new Color((byte)r, (byte)g, (byte)b); - } - - protected virtual Node CreateNode(Microsoft.Msagl.Drawing.Graph graph, CodeElement codeElement, PresentationState presentationState) - { - var node = graph.AddNode(codeElement.Id); - node.LabelText = codeElement.Name; - node.UserData = codeElement; - node.Attr = CreateNodeAttr(codeElement, presentationState); - - return node; - } - - - protected static bool ShouldReverseInFlowMode(CodeGraph.Graph.CodeGraph graph, string sourceId, RelationshipType relationshipType) - { - if (relationshipType == RelationshipType.Implements) - { - if (graph.Nodes[sourceId].ElementType == CodeElementType.Event) - { - return false; - } - } - - return FlowReversalMap.GetValueOrDefault(relationshipType, false); - } - - protected static string GetLabelText(Relationship relationship) - { - // Omit the label text for now. The color makes it clear that it is a call relationship - if (relationship.Type is RelationshipType.Calls or RelationshipType.Invokes) - { - return string.Empty; - } - - // We can see this by the dotted line - if (relationship.Type is RelationshipType.Implements or RelationshipType.Inherits) - { - return string.Empty; - } - - if (relationship.Type == RelationshipType.Uses) - { - return string.Empty; - } - - if (relationship.Type == RelationshipType.UsesAttribute) - { - return string.Empty; - } - - return relationship.Type.ToString(); - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/MsaglFlatBuilder.cs b/CSharpCodeAnalyst/Features/Graph/MsaglFlatBuilder.cs deleted file mode 100644 index 66d2189..0000000 --- a/CSharpCodeAnalyst/Features/Graph/MsaglFlatBuilder.cs +++ /dev/null @@ -1,99 +0,0 @@ -using CodeGraph.Graph; -using CSharpCodeAnalyst.Features.Graph.Filtering; -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph; - -internal class MsaglFlatBuilder : MsaglBuilderBase -{ - public override Microsoft.Msagl.Drawing.Graph CreateGraph(CodeGraph.Graph.CodeGraph codeGraph, PresentationState presentationState, - bool showInformationFlow, GraphHideFilter hideFilter) - { - return CreateFlatGraph(codeGraph, presentationState, showInformationFlow, hideFilter); - } - - private Microsoft.Msagl.Drawing.Graph CreateFlatGraph(CodeGraph.Graph.CodeGraph codeGraph, PresentationState presentationState, bool showInformationFlow, GraphHideFilter hideFilter) - { - // Since we start with a fresh graph we don't need to check for existing nodes and edges. - - var graph = new Microsoft.Msagl.Drawing.Graph("graph"); - - // Add nodes (excluding hidden ones) - foreach (var codeElement in codeGraph.Nodes.Values) - { - if (!hideFilter.ShouldHideElement(codeElement)) - { - CreateNode(graph, codeElement, presentationState); - } - } - - // Add edges and hierarchy - codeGraph.ForEachNode(AddRelationshipsFunc); - - return graph; - - - void AddRelationshipsFunc(CodeElement element) - { - // Skip relationships from/to hidden elements - if (hideFilter.ShouldHideElement(element)) - { - return; - } - - foreach (var relationship in element.Relationships) - { - // Skip hidden relationships - if (hideFilter.ShouldHideRelationship(relationship)) - { - continue; - } - - // Skip if target is hidden - var targetElement = codeGraph.Nodes[relationship.TargetId]; - if (hideFilter.ShouldHideElement(targetElement)) - { - continue; - } - - var sourceId = relationship.SourceId; - var reverse = showInformationFlow && ShouldReverseInFlowMode(codeGraph, sourceId, relationship.Type); - CreateEdgeForFlatStructure(graph, relationship, reverse, presentationState); - } - - if (element.Parent != null && !hideFilter.ShouldHideElement(element.Parent)) - { - CreateContainmentEdge(graph, - new Relationship(element.Parent.Id, element.Id, RelationshipType.Containment)); - } - } - } - - private static void CreateContainmentEdge(Microsoft.Msagl.Drawing.Graph graph, Relationship relationship) - { - var edge = graph.AddEdge(relationship.SourceId, relationship.TargetId); - edge.LabelText = ""; - - edge.Attr.Color = Color.LightGray; - edge.UserData = relationship; - } - - private static void CreateEdgeForFlatStructure(Microsoft.Msagl.Drawing.Graph graph, Relationship relationship, bool reverseEdge, PresentationState state) - { - // MSAGL does not allow two same edges with different labels to the same subgraph. - - var sourceId = relationship.SourceId; - var targetId = relationship.TargetId; - if (reverseEdge) - { - (targetId, sourceId) = (sourceId, targetId); - } - - var edge = graph.AddEdge(sourceId, targetId); - - edge.LabelText = GetLabelText(relationship); - edge.Attr = CreateEdgeAttr(sourceId, targetId, relationship.Type, state); - - edge.UserData = relationship; - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/MsaglHierarchicalBuilder.cs b/CSharpCodeAnalyst/Features/Graph/MsaglHierarchicalBuilder.cs deleted file mode 100644 index 38bc5f7..0000000 --- a/CSharpCodeAnalyst/Features/Graph/MsaglHierarchicalBuilder.cs +++ /dev/null @@ -1,285 +0,0 @@ -using CodeGraph.Graph; -using CSharpCodeAnalyst.Features.Graph.Filtering; -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph; - -/// -/// Transformation of a CodGraph to Msagl graph structure. -/// Don't confuse the presentation state (expanded / collapsed) with the hide filter. -/// The hide filter removes code elements and relationship types completely from the graph. -/// -internal class MsaglHierarchicalBuilder : MsaglBuilderBase -{ - public override Microsoft.Msagl.Drawing.Graph CreateGraph(CodeGraph.Graph.CodeGraph codeGraph, PresentationState presentationState, - bool showInformationFlow, GraphHideFilter hideFilter) - { - return CreateHierarchicalGraph(codeGraph, presentationState, showInformationFlow, hideFilter); - } - - private Microsoft.Msagl.Drawing.Graph CreateHierarchicalGraph(CodeGraph.Graph.CodeGraph codeGraph, PresentationState presentationState, bool showInformationFlow, GraphHideFilter hideFilter) - { - var visibleGraph = GetVisibleGraph(codeGraph, presentationState, hideFilter); - var graph = new Microsoft.Msagl.Drawing.Graph("graph"); - var subGraphs = CreateSubGraphs(codeGraph, visibleGraph, presentationState); - - AddNodesToHierarchicalGraph(graph, visibleGraph, codeGraph, subGraphs, presentationState); - AddEdgesToHierarchicalGraph(graph, codeGraph, visibleGraph, showInformationFlow, presentationState, hideFilter); - - return graph; - } - - private static CodeGraph.Graph.CodeGraph GetVisibleGraph(CodeGraph.Graph.CodeGraph codeGraph, PresentationState state, GraphHideFilter hideFilter) - { - var visibleGraph = new CodeGraph.Graph.CodeGraph(); - var roots = codeGraph.Nodes.Values.Where(n => n.Parent is null); - foreach (var root in roots) - { - CollectVisibleNodes(root, state, visibleGraph, hideFilter); - } - - // Graph has no relationships yet. - return visibleGraph; - } - - private static void CollectVisibleNodes(CodeElement root, PresentationState state, CodeGraph.Graph.CodeGraph visibleGraph, GraphHideFilter hideFilter) - { - // Skip hidden elements - if (hideFilter.ShouldHideElement(root)) - { - return; - } - - visibleGraph.IntegrateCodeElementFromOriginal(root); - - if (state.IsCollapsed(root.Id)) - { - // Children are not visible - return; - } - - foreach (var child in root.Children) - { - CollectVisibleNodes(child, state, visibleGraph, hideFilter); - } - } - - protected override Node CreateNode(Microsoft.Msagl.Drawing.Graph graph, CodeElement codeElement, PresentationState presentationState) - { - var node = base.CreateNode(graph, codeElement, presentationState); - - if (codeElement.Children.Any() && presentationState.IsCollapsed(codeElement.Id)) - { - // This is a collapsed node. Show bold if it hides children and can be expanded. - node.Label.FontStyle = FontStyle.Bold; - } - - return node; - } - - private void AddNodesToHierarchicalGraph(Microsoft.Msagl.Drawing.Graph graph, CodeGraph.Graph.CodeGraph visibleGraph, CodeGraph.Graph.CodeGraph codeGraph, - Dictionary subGraphs, PresentationState presentationState) - { - // Add nodes and sub graphs. Each node that has children becomes a subgraph. - foreach (var visibleNode in visibleGraph.Nodes.Values) - { - if (subGraphs.TryGetValue(visibleNode.Id, out var subGraph)) - { - // Container nodes - AddSubgraphToParent(graph, visibleNode, subGraph, subGraphs); - } - else - { - // Non container nodes - - // We need to assign the node without visibility restrictions. - // The collapse/expand context menu handler needs the children. - AddNodeToParent(graph, codeGraph.Nodes[visibleNode.Id], subGraphs, presentationState); - } - } - } - - private static void AddSubgraphToParent(Microsoft.Msagl.Drawing.Graph graph, CodeElement visibleNode, Subgraph subGraph, - Dictionary subGraphs) - { - if (visibleNode.Parent == null) - { - graph.RootSubgraph.AddSubgraph(subGraph); - } - else - { - subGraphs[visibleNode.Parent.Id].AddSubgraph(subGraph); - } - } - - private void AddNodeToParent(Microsoft.Msagl.Drawing.Graph graph, CodeElement node, Dictionary subGraphs, PresentationState presentationState) - { - var newNode = CreateNode(graph, node, presentationState); - if (node.Parent != null) - { - subGraphs[node.Parent.Id].AddNode(newNode); - } - } - - private void AddEdgesToHierarchicalGraph(Microsoft.Msagl.Drawing.Graph graph, CodeGraph.Graph.CodeGraph codeGraph, CodeGraph.Graph.CodeGraph visibleGraph, bool showInformationFlow, PresentationState state, - GraphHideFilter hideFilter) - { - var relationships = GetCollapsedRelationships(codeGraph, visibleGraph, showInformationFlow, hideFilter); - foreach (var relationship in relationships) - { - CreateEdgeForHierarchicalStructure(graph, relationship, state); - } - } - - private static Dictionary<(string, string), List> GetCollapsedRelationships(CodeGraph.Graph.CodeGraph codeGraph, - CodeGraph.Graph.CodeGraph visibleGraph, bool showInformationFlow, GraphHideFilter hideFilter) - { - var allRelationships = codeGraph.GetAllRelationships(); - var relationships = new Dictionary<(string, string), List>(); - - foreach (var relationship in allRelationships) - { - // Skip hidden relationships - if (hideFilter.ShouldHideRelationship(relationship)) - { - continue; - } - - // Skip relationships where source or target are hidden - // (they won't have a visible parent in the visibleGraph) - var sourceElement = codeGraph.Nodes[relationship.SourceId]; - var targetElement = codeGraph.Nodes[relationship.TargetId]; - - if (!HasVisibleParentOrSelf(sourceElement, visibleGraph) || - !HasVisibleParentOrSelf(targetElement, visibleGraph)) - { - continue; - } - - // Move edges to expanded nodes. - var sourceId = GetHighestVisibleParentOrSelf(relationship.SourceId, codeGraph, visibleGraph); - var targetId = GetHighestVisibleParentOrSelf(relationship.TargetId, codeGraph, visibleGraph); - - - // Reverse edges like "overrides" to better visualize information flow - // instead of dependencies. - if (showInformationFlow && - ShouldReverseInFlowMode(visibleGraph, sourceId, relationship.Type)) - { - (targetId, sourceId) = (sourceId, targetId); - } - - // Skip self-references at collapsed level for relationships inside. - if (sourceId == targetId && relationship.SourceId != sourceId && relationship.TargetId != targetId) - { - continue; - } - - if (!relationships.TryGetValue((sourceId, targetId), out var list)) - { - list = []; - relationships[(sourceId, targetId)] = list; - } - - list.Add(relationship); - } - - return relationships; - } - - /// - /// Pre-creates all sub-graphs - /// - private static Dictionary CreateSubGraphs(CodeGraph.Graph.CodeGraph codeGraph, CodeGraph.Graph.CodeGraph visibleGraph, PresentationState state) - { - return visibleGraph.Nodes.Values - .Where(n => visibleGraph.Nodes[n.Id].Children.Any()) - .ToDictionary(n => n.Id, n => new Subgraph(n.Id) - { - LabelText = n.Name, - UserData = codeGraph.Nodes[n.Id], - Attr = CreateNodeAttr(n, state) - }); - } - - private static string GetHighestVisibleParentOrSelf(string id, CodeGraph.Graph.CodeGraph codeGraph, CodeGraph.Graph.CodeGraph visibleGraph) - { - // Assume the parent is always visible! - var current = codeGraph.Nodes[id]; - while (current != null && !visibleGraph.Nodes.Keys.Contains(current.Id)) - { - current = current.Parent; - } - - if (current is null) - { - throw new NullReferenceException("No visible parent found!"); - } - - return current.Id; - } - - private static bool HasVisibleParentOrSelf(CodeElement element, CodeGraph.Graph.CodeGraph visibleGraph) - { - var current = element; - while (current != null) - { - if (visibleGraph.Nodes.ContainsKey(current.Id)) - { - return true; - } - - current = current.Parent; - } - - return false; - } - - private static void CreateEdgeForHierarchicalStructure(Microsoft.Msagl.Drawing.Graph graph, - KeyValuePair<(string source, string target), List> mappedRelationships, PresentationState state) - { - // MSAGL does not allow two same edges with different labels to the same subgraph. - // So I collapse them to a single one that carries all the user data. - - string sourceId; - string targetId; - Edge edge; - - var relationships = mappedRelationships.Value; - if (mappedRelationships.Value.Count == 1 && mappedRelationships.Key.source == relationships[0].SourceId && - mappedRelationships.Key.target == relationships[0].TargetId) - { - // Single, unmapped relationship - var relationship = relationships[0]; - - sourceId = relationship.SourceId; - targetId = relationship.TargetId; - edge = graph.AddEdge(sourceId, targetId); - - edge.LabelText = GetLabelText(relationship); - - edge.Attr = CreateEdgeAttr(sourceId, targetId, relationship.Type, state); - - edge.UserData = new List { relationship }; - } - else - { - sourceId = mappedRelationships.Key.source; - targetId = mappedRelationships.Key.target; - - // More than one or mapped to collapsed container. - // Connect the highest visible not collapsed elements (or self) - edge = graph.AddEdge(sourceId, targetId); - - edge.UserData = relationships; - edge.LabelText = relationships.Count.ToString(); - - edge.Attr = CreateEdgeAttr(sourceId, targetId, RelationshipType.Bundled, state); - } - } - - private static bool IsMethod(CodeGraph.Graph.CodeGraph codeGraph, string id) - { - return codeGraph.Nodes[id].ElementType == CodeElementType.Method; - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/RelationshipContextCommand.cs b/CSharpCodeAnalyst/Features/Graph/RelationshipContextCommand.cs index 050aef8..c2b4fd1 100644 --- a/CSharpCodeAnalyst/Features/Graph/RelationshipContextCommand.cs +++ b/CSharpCodeAnalyst/Features/Graph/RelationshipContextCommand.cs @@ -7,6 +7,7 @@ public class RelationshipContextCommand : IRelationshipContextCommand { private readonly Action> _action; private readonly Func, bool>? _canExecute; + private readonly Func, bool>? _canEnable; private readonly RelationshipType? _type; public RelationshipContextCommand(string label, RelationshipType type, Action> action, ImageSource? icon = null) @@ -30,11 +31,12 @@ public RelationshipContextCommand(string subMenuGroup, string label, Relationshi /// Generic for all code elements /// public RelationshipContextCommand(string subMenuGroup, string label, Action> action, - Func, bool>? canExecute = null, ImageSource? icon = null) + Func, bool>? canExecute = null, ImageSource? icon = null, Func, bool>? canEnable = null) { _type = null; _action = action; _canExecute = canExecute; + _canEnable = canEnable; SubMenuGroup = subMenuGroup; Label = label; Icon = icon; @@ -70,6 +72,11 @@ public bool CanHandle(List relationships) return canHandle; } + public bool CanExecute(List relationships) + { + return _canEnable?.Invoke(relationships) ?? true; + } + public void Invoke(string sourceId, string targetId, List relationships) { diff --git a/CSharpCodeAnalyst/Features/Graph/RenderOptions/BottomToTopRenderOptions.cs b/CSharpCodeAnalyst/Features/Graph/RenderOptions/BottomToTopRenderOptions.cs deleted file mode 100644 index 814177b..0000000 --- a/CSharpCodeAnalyst/Features/Graph/RenderOptions/BottomToTopRenderOptions.cs +++ /dev/null @@ -1,17 +0,0 @@ -using CSharpCodeAnalyst.Resources; -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph.RenderOptions; - -internal class BottomToTopRenderOptions : RenderOption -{ - public BottomToTopRenderOptions() - { - Name = Strings.Bottom_To_Top_Label; - } - - public override void Apply(Microsoft.Msagl.Drawing.Graph graph) - { - graph.Attr.LayerDirection = LayerDirection.BT; - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/RenderOptions/DefaultRenderOptions.cs b/CSharpCodeAnalyst/Features/Graph/RenderOptions/DefaultRenderOptions.cs deleted file mode 100644 index 40c56ab..0000000 --- a/CSharpCodeAnalyst/Features/Graph/RenderOptions/DefaultRenderOptions.cs +++ /dev/null @@ -1,17 +0,0 @@ -using CSharpCodeAnalyst.Resources; -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph.RenderOptions; - -public class DefaultRenderOptions : RenderOption -{ - public DefaultRenderOptions() - { - Name = Strings.Default_Label; - } - - public override void Apply(Microsoft.Msagl.Drawing.Graph graph) - { - graph.Attr.LayerDirection = LayerDirection.TB; - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/RenderOptions/LayoutOption.cs b/CSharpCodeAnalyst/Features/Graph/RenderOptions/LayoutOption.cs new file mode 100644 index 0000000..e1b9861 --- /dev/null +++ b/CSharpCodeAnalyst/Features/Graph/RenderOptions/LayoutOption.cs @@ -0,0 +1,21 @@ +using CSharpCodeAnalyst.Resources; + +namespace CSharpCodeAnalyst.Features.Graph.RenderOptions; + +/// +/// A selectable graph layout. is the key sent to the web view +/// (app.js LAYOUTS map); the renderer (Cytoscape) stays the same, only the layout +/// extension that computes node positions changes. Mirrors . +/// +public class LayoutOption(string name, string label) +{ + public static readonly LayoutOption Default = new("fcose", Strings.Layout_Force_Label); + + /// The Cytoscape layout key pushed to JS (e.g. "fcose", "dagre-tb"). + public string Name { get; } = name; + + public override string ToString() + { + return label; + } +} diff --git a/CSharpCodeAnalyst/Features/Graph/RenderOptions/LeftToRightRenderOptions.cs b/CSharpCodeAnalyst/Features/Graph/RenderOptions/LeftToRightRenderOptions.cs deleted file mode 100644 index e8390c8..0000000 --- a/CSharpCodeAnalyst/Features/Graph/RenderOptions/LeftToRightRenderOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using CSharpCodeAnalyst.Resources; -using Microsoft.Msagl.Drawing; - -namespace CSharpCodeAnalyst.Features.Graph.RenderOptions; - -public class LeftToRightRenderOptions : RenderOption -{ - public LeftToRightRenderOptions() - { - Name = Strings.Left_To_Right_Label; - } - - public override void Apply(Microsoft.Msagl.Drawing.Graph graph) - { - // Do nothing - graph.Attr.LayerDirection = LayerDirection.LR; - } -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Graph/RenderOptions/RenderOption.cs b/CSharpCodeAnalyst/Features/Graph/RenderOptions/RenderOption.cs deleted file mode 100644 index 3c42464..0000000 --- a/CSharpCodeAnalyst/Features/Graph/RenderOptions/RenderOption.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace CSharpCodeAnalyst.Features.Graph.RenderOptions; - -public abstract class RenderOption -{ - public string Name { get; set; } = string.Empty; - - public override string ToString() - { - return Name; - } - - public abstract void Apply(Microsoft.Msagl.Drawing.Graph graph); -} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/Help/QuickInfoFactory.cs b/CSharpCodeAnalyst/Features/Help/QuickInfoFactory.cs index 5805587..1f9d688 100644 --- a/CSharpCodeAnalyst/Features/Help/QuickInfoFactory.cs +++ b/CSharpCodeAnalyst/Features/Help/QuickInfoFactory.cs @@ -1,50 +1,29 @@ using CodeGraph.Graph; using CSharpCodeAnalyst.Resources; using CSharpCodeAnalyst.Shared; -using Microsoft.Msagl.Drawing; namespace CSharpCodeAnalyst.Features.Help; -public interface IQuickInfoFactory -{ - List CrateQuickInfo(object? obj); -} - -internal class QuickInfoFactory(CodeGraph.Graph.CodeGraph graph) : IQuickInfoFactory +internal class QuickInfoFactory(CodeGraph.Graph.CodeGraph graph) { internal static readonly List DefaultInfo = [new("No object selected")]; internal static readonly List NoInfoProviderRegistered = [new("No info provider registered")]; - public List CrateQuickInfo(object? obj) + /// + /// Builds quick info straight from a code element (the web view has an element id). + /// + public QuickInfo CreateForCodeElement(CodeElement codeElement) { - if (obj is null) - { - return DefaultInfo; - } - - if (obj is IViewerNode viewerNode) - { - var node = viewerNode.Node; - if (node.UserData is CodeElement codeElement) - { - return [CreateNodeQuickInfo(codeElement)]; - } - } - else if (obj is IViewerEdge viewerEdge) - { - var edge = viewerEdge.Edge; - if (edge.UserData is Relationship relationship) - { - return CreateEdgeQuickInfos([relationship]); - } - - if (edge.UserData is List relationships) - { - return CreateEdgeQuickInfos(relationships); - } - } + return CreateNodeQuickInfo(codeElement); + } - return DefaultInfo; + /// + /// Builds quick info for one or more relationships (a single edge, or the list + /// of relationships behind a bundled edge). + /// + public List CreateForRelationships(List relationships) + { + return CreateEdgeQuickInfos(relationships); } private QuickInfo CreateNodeQuickInfo(CodeElement codeElement) diff --git a/CSharpCodeAnalyst/Features/Info/InfoPanelViewModel.cs b/CSharpCodeAnalyst/Features/Info/InfoPanelViewModel.cs index 8a8f34a..c7f77d2 100644 --- a/CSharpCodeAnalyst/Features/Info/InfoPanelViewModel.cs +++ b/CSharpCodeAnalyst/Features/Info/InfoPanelViewModel.cs @@ -45,22 +45,9 @@ private set private static void OpenSourceLocation(SourceLocation? location) { - if (location is null) + if (location is not null) { - return; - } - - try - { - // Create a new instance to find newly open studio instance. - var fileOpener = new FileOpener(); - fileOpener.TryOpenFile(location.File, location.Line, location.Column); - } - catch (Exception ex) - { - var message = string.Format(Strings.OperationFailed_Message, ex.Message); - MessageBox.Show(message, Strings.Error_Title, MessageBoxButton.OK, - MessageBoxImage.Error); + SourceLocationNavigator.Open(location); } } diff --git a/CSharpCodeAnalyst/Features/Tree/TreeControl.xaml b/CSharpCodeAnalyst/Features/Tree/TreeControl.xaml index 40f5532..fbe346d 100644 --- a/CSharpCodeAnalyst/Features/Tree/TreeControl.xaml +++ b/CSharpCodeAnalyst/Features/Tree/TreeControl.xaml @@ -143,6 +143,10 @@ + + diff --git a/CSharpCodeAnalyst/Features/Tree/TreeViewModel.cs b/CSharpCodeAnalyst/Features/Tree/TreeViewModel.cs index 9b628d8..16a0060 100644 --- a/CSharpCodeAnalyst/Features/Tree/TreeViewModel.cs +++ b/CSharpCodeAnalyst/Features/Tree/TreeViewModel.cs @@ -7,6 +7,7 @@ using CSharpCodeAnalyst.Features.Refactoring; using CSharpCodeAnalyst.Shared.Messages; using CSharpCodeAnalyst.Shared.Search; +using CSharpCodeAnalyst.Shared.Services; using CSharpCodeAnalyst.Shared.Wpf; namespace CSharpCodeAnalyst.Features.Tree; @@ -35,6 +36,7 @@ public TreeViewModel(MessageBus messaging, RefactoringService refactoringService PartitionTreeCommand = new WpfCommand(Partition, CanPartition); PartitionWithBaseTreeCommand = new WpfCommand(PartitionWithBase, CanPartition); CopyToClipboardCommand = new WpfCommand(OnCopyToClipboard); + JumpToCodeCommand = new WpfCommand(JumpToCode, CanJumpToCode); // Refactoring DeleteFromModelCommand = new WpfCommand(RefactoringDeleteCodeElement); @@ -79,6 +81,7 @@ public string SearchText public ICommand PartitionTreeCommand { get; private set; } public ICommand PartitionWithBaseTreeCommand { get; private set; } public ICommand CopyToClipboardCommand { get; private set; } + public ICommand JumpToCodeCommand { get; } public ICommand CreateCodeElementCommand { get; private set; } public ICommand SetMovementTargetCommand { get; private set; } @@ -152,6 +155,19 @@ private static void OnCopyToClipboard(TreeItemViewModel vm) Clipboard.SetText(text); } + private static bool CanJumpToCode(TreeItemViewModel? vm) + { + return SourceLocationNavigator.CanJump(vm?.CodeElement); + } + + private static void JumpToCode(TreeItemViewModel? vm) + { + if (vm?.CodeElement is { } element) + { + SourceLocationNavigator.JumpTo(element); + } + } + private void PartitionWithBase(TreeItemViewModel vm) { if (vm.CodeElement is null) diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/app.js b/CSharpCodeAnalyst/Features/WebGraph/Web/app.js new file mode 100644 index 0000000..a2dd071 --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/app.js @@ -0,0 +1,531 @@ +// Web Graph View - renders the code graph with Cytoscape.js. +// Data is pushed from C# via renderGraph(); user events go back via postToHost(). + +"use strict"; + +// ---- Diagnostics ------------------------------------------------------------ +// Some layout extensions (notably ELK) run asynchronously, so a failure surfaces +// as an unhandled promise rejection AFTER the synchronous run() returned — invisible +// without this. Tag such errors clearly so they are easy to spot in DevTools (F12). +window.addEventListener("unhandledrejection", evt => { + console.error("[WebGraph] unhandled promise rejection (async layout?):", evt.reason); +}); +window.addEventListener("error", evt => { + console.error("[WebGraph] error:", evt.message, evt.error); +}); + +// ---- Bridge: JS -> C# ------------------------------------------------------- +// window.chrome.webview is injected by WebView2. Guard it so the page also works +// when opened in a plain browser (e.g. for quick CSS tweaks). +function postToHost(message) { + if (window.chrome && window.chrome.webview) { + window.chrome.webview.postMessage(message); + } else { + console.log("[no host] " + JSON.stringify(message)); + } +} + +// ---- Layout ----------------------------------------------------------------- +// Cytoscape stays the renderer; each entry here is just a layout extension that +// computes node positions. The active key is chosen in the ribbon and pushed from +// C# via setLayout(); getLayout() resolves it to the config object below. +// +// fcose = fast Compound Spring Embedder. Unlike the built-in "cose" it understands +// nested (compound) nodes, so class containers don't blow up and overlap. +// dagre = Sugiyama-style layered (hierarchical) layout, good for directed graphs; +// rankDir picks the flow direction (top->bottom vs. left->right). Note: dagre has +// only limited compound support, so nesting is best preserved by fcose. +const LAYOUTS = { + "fcose": { + name: "fcose", + quality: "default", + randomize: true, + animate: false, + nodeDimensionsIncludeLabels: true, + nodeSeparation: 75, + packComponents: true, + padding: 30, + fit: true, + }, + "dagre-tb": { + name: "dagre", + rankDir: "TB", + nodeDimensionsIncludeLabels: true, + nodeSep: 50, + rankSep: 60, + edgeSep: 10, + animate: false, + padding: 30, + fit: true, + }, + "dagre-lr": { + name: "dagre", + rankDir: "LR", + nodeDimensionsIncludeLabels: true, + nodeSep: 50, + rankSep: 60, + edgeSep: 10, + animate: false, + padding: 30, + fit: true, + }, + // ELK layered: like dagre's hierarchical flow but genuinely compound-aware, so our + // nested namespace/class/method containers keep their nesting. ELK-specific options + // go under the `elk` key; 'elk.direction' DOWN mirrors dagre TB. + "elk-down": { + name: "elk", + nodeDimensionsIncludeLabels: true, + fit: true, + padding: 30, + elk: { + algorithm: "layered", + "elk.direction": "DOWN", + // Lay out the whole compound hierarchy as ONE layered run so the direction + // threads through nested nodes. Without it cytoscape-elk's top-level edges + // (whose endpoints are nested children) don't drive the layout and DOWN/RIGHT + // come out identical. + "elk.hierarchyHandling": "INCLUDE_CHILDREN", + "elk.spacing.nodeNode": 50, + "elk.layered.spacing.nodeNodeBetweenLayers": 60, + }, + }, + "elk-right": { + name: "elk", + nodeDimensionsIncludeLabels: true, + fit: true, + padding: 30, + elk: { + algorithm: "layered", + "elk.direction": "RIGHT", + "elk.hierarchyHandling": "INCLUDE_CHILDREN", + "elk.spacing.nodeNode": 50, + "elk.layered.spacing.nodeNodeBetweenLayers": 60, + }, + }, +}; + +// The currently selected layout key; C# overrides it via setLayout() at startup. +let currentLayoutName = "fcose"; + +// Resolves the active layout config, falling back to fcose if the key is unknown +// (e.g. an extension whose offline lib was not bundled). +function getLayout() { + return LAYOUTS[currentLayoutName] || LAYOUTS["fcose"]; +} + +// Starts the active layout, cancelling any in-flight run first. If the chosen layout +// extension is not registered (its offline lib was not bundled), Cytoscape throws when +// the layout name is unknown — we catch that and fall back to fcose so rendering never +// breaks. Returns the running layout (or null if even fcose somehow failed). +function runLayout() { + if (currentLayout) { + currentLayout.stop(); + } + + try { + currentLayout = cy.layout(getLayout()); + currentLayout.run(); + } catch (err) { + console.warn("Layout '" + currentLayoutName + "' failed, falling back to fcose:", err); + currentLayoutName = "fcose"; + currentLayout = cy.layout(LAYOUTS["fcose"]); + currentLayout.run(); + } + + return currentLayout; +} + +// ---- Styling ---------------------------------------------------------------- +// Fallback colors for standalone testing; in the app the exact color comes from C#. +const KIND_COLOR = { + Class: "#f5d76e", + Method: "#7fb3e8", + Interface: "#b5e7a0", + Namespace: "#e0e0e0", +}; + +const cytoscapeStyle = [ + { + selector: "node", + style: { + "label": "data(label)", + "font-size": 11, + "text-valign": "center", + "text-halign": "center", + "background-color": ele => ele.data("color") || KIND_COLOR[ele.data("kind")] || "#cccccc", + "border-width": 1, + "border-color": "#888888", + "shape": "round-rectangle", + // Explicit pixel size derived from the label. The deprecated "width: label" + // left nodes ~0-wide, so the layout had no size to separate them and stacked + // them on one spot (which made the connecting edges zero-length / invisible). + "width": ele => Math.max(50, (ele.data("label") || "").length * 7 + 16), + "height": 26, + }, + }, + { + // While a right-click (context menu) is in progress we hide Cytoscape's gray + // "active" press overlay — it lingers behind the opening menu and looks broken. + selector: ".suppress-overlay", + style: { "overlay-opacity": 0 }, + }, + { + // Compound parent (a node that contains children) renders as a container. + selector: ":parent", + style: { + "text-valign": "top", + "background-opacity": 0.25, + "border-color": "#666666", + "padding": "12px", + }, + }, + // External nodes are not styled here: C# already gives them their gray color via + // data("color"). The "external" class is still tagged on them for future styling. + { + // Collapsed container drawn as a leaf: bold + thicker border signals "expandable". + selector: "node[?collapsed]", + style: { "font-weight": "bold", "border-width": 2, "border-color": "#555555" }, + }, + // Persistent decorations from C# PresentationState. Both red like MSAGL; the flag is + // thicker and wins over search (it is defined last among the two equal-specificity rules). + { + selector: "node[?searchHighlighted]", + style: { "border-color": "#ff0000", "border-width": 2 }, + }, + { + selector: "node[?flagged]", + style: { "border-color": "#ff0000", "border-width": 3 }, + }, + { + selector: "node:selected", + style: { "border-width": 3, "border-color": "#ff7f0e" }, + }, + // Edges are plain black. A bundled edge (count > 1) shows the number of underlying + // relationships as a label, mirroring how the WPF/MSAGL view marks edge strength. + { + selector: "edge", + style: { + "width": 1.5, + // Per-edge tint from C# (e.g. Calls = blue); default black when none. + "line-color": ele => ele.data("color") || "#000000", + "target-arrow-color": ele => ele.data("color") || "#000000", + "target-arrow-shape": "triangle", + "curve-style": "bezier", + "label": ele => ele.data("count") > 1 ? ele.data("count") : "", + "font-size": 10, + "color": "#000000", + "text-background-color": "#ffffff", + "text-background-opacity": 1, + "text-background-padding": 2, + }, + }, + { + // Structure still recedes via line style (color stays black). + selector: "edge[kind = 'Inherits']", + style: { + "line-style": "dashed", + "target-arrow-shape": "triangle-backcurve", + }, + }, + { + selector: "edge[kind = 'Implements']", + style: { "line-style": "dotted" }, + }, + { + // Flat view only: containment shown as a quiet gray edge with no arrowhead. + selector: "edge[kind = 'Containment']", + style: { + "line-color": "#cfcfcf", + "width": 1, + "target-arrow-shape": "triangle-backcurve", + "target-arrow-color": "#cfcfcf", + }, + }, + { + // Flagged edge (PresentationState): red + thicker, like MSAGL. + selector: "edge[?flagged]", + style: { + "line-color": "#ff0000", + "target-arrow-color": "#ff0000", + "width": 3, + }, + }, + // Hover highlighting: emphasize the relevant set (no fading of the rest for now). + { + selector: "node.highlighted", + style: { "border-color": "#ff7f0e", "border-width": 3 }, + }, + { + selector: "edge.highlighted", + style: { + "line-color": "#ff7f0e", + "target-arrow-color": "#ff7f0e", + "width": 3, + "z-index": 20, + }, + }, +]; + +// Small example so the page also renders something when opened standalone in a +// browser. In the app this is immediately replaced by renderGraph(). +const exampleElements = [ + { data: { id: "BaseDevice", label: "BaseDevice", kind: "Class" } }, + { data: { id: "Printer", label: "Printer", kind: "Class" } }, + { data: { id: "BaseDevice.Init", label: "Init()", kind: "Method", parent: "BaseDevice" } }, + { data: { id: "Printer.Print", label: "Print()", kind: "Method", parent: "Printer" } }, + { data: { id: "e1", source: "Printer", target: "BaseDevice", kind: "Inherits" } }, + { data: { id: "e2", source: "Printer.Print", target: "BaseDevice.Init", kind: "Calls" } }, +]; + +// Tracks the in-flight layout so a new render can cancel it (avoids racing fcose runs). +let currentLayout = null; + +// ---- Cytoscape instance ----------------------------------------------------- +// In the app we start empty so the empty-state hint shows; the example graph is only +// for standalone preview in a plain browser (no WebView2 host). +const inHost = !!(window.chrome && window.chrome.webview); + +const cy = cytoscape({ + container: document.getElementById("cy"), + elements: inHost ? [] : exampleElements, + style: cytoscapeStyle, + layout: getLayout(), +}); + +// ---- Empty-state hint ------------------------------------------------------- +// Shown until the first non-empty graph is rendered, then hidden for the rest of the +// session (mirrors the WPF canvas hint, which also never reappears once a graph existed). +let hintDismissed = false; + +function dismissHintIfGraph(graph) { + if (hintDismissed || !graph.nodes || graph.nodes.length === 0) { + return; + } + + hintDismissed = true; + document.getElementById("hint")?.classList.add("hidden"); +} + +// ---- Bridge: C# -> JS ------------------------------------------------------- +// C# calls this via ExecuteScriptAsync with { nodes, edges }. +window.renderGraph = function (graph) { + dismissHintIfGraph(graph); + + const elements = []; + for (const n of graph.nodes) { + elements.push({ + // color is the exact per-type color computed by C# (ColorDefinitions); the + // node style reads data("color") and only falls back to KIND_COLOR when absent. + // flagged / searchHighlighted are PresentationState decorations (red borders). + data: { id: n.id, label: n.label, kind: n.kind, color: n.color, parent: n.parent || undefined, collapsed: n.collapsed, flagged: n.flagged, searchHighlighted: n.searchHighlighted }, + classes: n.external ? "external" : "", + }); + } + for (const e of graph.edges) { + // color is optional (null = default black); set per relationship type by C#. + elements.push({ data: { id: e.id, source: e.source, target: e.target, kind: e.kind, count: e.count, color: e.color, flagged: e.flagged } }); + } + + cy.elements().remove(); + cy.add(elements); + cy.resize(); + + // Cancel a still-running layout before starting a new one (with safe fallback). + runLayout(); +}; + +// Update flag / search decorations on the EXISTING elements (no re-layout). C# pushes this +// whenever the PresentationState decorations change; styling reacts to the data flags. +window.setDecorations = function (dec) { + const flaggedNodes = dec.flaggedNodes || []; + const searchNodes = dec.searchNodes || []; + const flaggedEdges = dec.flaggedEdges || []; + + cy.batch(() => { + cy.nodes().forEach(n => { + n.data("flagged", false); + n.data("searchHighlighted", false); + }); + cy.edges().forEach(e => e.data("flagged", false)); + + // getElementById on a missing id yields an empty collection -> .data() is a no-op. + flaggedNodes.forEach(id => cy.getElementById(id).data("flagged", true)); + searchNodes.forEach(id => cy.getElementById(id).data("searchHighlighted", true)); + flaggedEdges.forEach(id => cy.getElementById(id).data("flagged", true)); + }); +}; + +// Recompute size and re-frame without re-running the layout. C# calls this when the +// Web View tab becomes visible again, so positions the user dragged are preserved. +window.refitGraph = function () { + cy.resize(); + cy.fit(undefined, 30); +}; + +// Re-run the layout on the current elements (full reposition). The ribbon "Layout" +// button calls this; unlike renderGraph it keeps the element set (and thus the +// selection) and just recomputes positions. +window.relayoutGraph = function () { + cy.resize(); + runLayout(); +}; + +// Switch the layout algorithm and re-run it on the current elements. C# pushes the +// key (e.g. "dagre-tb") from the ribbon ComboBox and at startup. Unknown keys fall +// back to fcose (see getLayout), so a missing offline lib never breaks rendering. +window.setLayout = function (name) { + currentLayoutName = name; + relayoutGraph(); +}; + +// ---- Image export (C# reads the return value via ExecuteScriptAsync) --------- +// Whole graph on a white background. PNG is built in; SVG needs the cytoscape-svg extension. +window.exportPngBase64 = function () { + // Raw base64, no "data:image/png;base64," prefix. + return cy.png({ output: "base64", full: true, bg: "#ffffff" }); +}; + +window.exportSvg = function () { + if (typeof cy.svg !== "function") { + return ""; // extension missing -> C# reports it could not export + } + return cy.svg({ full: true, bg: "#ffffff" }); +}; + +// ---- Hover highlighting (local; mode comes from the ribbon via C#) ---------- +// Mirrors the MSAGL highlight strategies, computed on Cytoscape's own (already +// bundled / collapsed) topology. C# only tells us which mode is active. +// Note: we only emphasize the relevant set; fading the rest is deferred until we +// have a precise spec (fading compound nodes made inner-node labels unreadable). +let highlightMode = "EdgeHovered"; + +window.setHighlightMode = function (mode) { + highlightMode = mode; + clearHighlight(); +}; + +function clearHighlight() { + cy.elements().removeClass("highlighted"); +} + +function applyHighlight(target) { + let hl = cy.collection(); + + if (highlightMode === "EdgeHovered") { + if (target.isEdge()) { + hl = target.union(target.connectedNodes()); + } + } else if (highlightMode === "OutgoingEdgesChildrenAndSelf") { + if (target.isNode()) { + // The node plus its (visible) nested children, and their outgoing edges. + const sources = target.descendants().union(target); + const edges = sources.connectedEdges("edge").filter(e => sources.contains(e.source())); + hl = edges.union(edges.connectedNodes()); + } + } else if (highlightMode === "ShortestNonSelfCircuit") { + if (target.isNode()) { + hl = shortestNonSelfCircuit(target); + } + } + + clearHighlight(); + hl.addClass("highlighted"); +} + +// Shortest cycle through `node` back to itself: leave via one outgoing edge, then take +// the shortest directed path from that neighbor back to the node; pick the smallest over +// all outgoing edges. Mirrors the MSAGL HighlightShortestNonSelfCircuit strategy. +function shortestNonSelfCircuit(node) { + let best = cy.collection(); + let bestLength = Infinity; + + node.outgoers("edge").forEach(startEdge => { + const neighbor = startEdge.target(); + if (neighbor.same(node)) { + return; // ignore self edges; we want a real circuit + } + + // dijkstra with default weight 1 == BFS shortest path (in edge count). + const search = cy.elements().dijkstra({ root: neighbor, directed: true }); + const backDistance = search.distanceTo(node); + if (backDistance === Infinity) { + return; // no way back through this neighbor + } + + const totalLength = backDistance + 1; // + the start edge + if (totalLength < bestLength) { + bestLength = totalLength; + // pathTo returns the nodes and edges of the way back; add the start edge. + best = search.pathTo(node).union(startEdge); + } + }); + + return best; +} + +cy.on("mouseover", "node, edge", evt => applyHighlight(evt.target)); +cy.on("mouseout", "node, edge", clearHighlight); + +// ---- User interaction -> host ---------------------------------------------- +cy.on("tap", "node", evt => { + postToHost({ type: "nodeClicked", id: evt.target.id() }); +}); + +cy.on("tap", "edge", evt => { + // The edge id is enough: C# has the relationships behind it keyed by id. + postToHost({ type: "edgeClicked", id: evt.target.id() }); +}); + +cy.on("dbltap", "node", evt => { + postToHost({ type: "nodeDblClicked", id: evt.target.id() }); +}); + +// A tap on empty canvas (target is the core, not a node/edge) clears the Info panel. +cy.on("tap", evt => { + if (evt.target === cy) { + postToHost({ type: "backgroundClicked" }); + } +}); + +// ---- Context menu (right-click) -> host ------------------------------------- +// C# builds the actual WPF menu at the cursor from the existing command objects. + +// Suppress the gray "active" press overlay for the duration of a right-click only +// (left-click keeps its normal feedback). cxttapstart fires on right mouse-down, +// cxttapend on release; after release there is no active state anyway. +cy.on("cxttapstart", "node, edge", evt => evt.target.addClass("suppress-overlay")); +cy.on("cxttapend", "node, edge", evt => evt.target.removeClass("suppress-overlay")); + +cy.on("cxttap", "node", evt => { + postToHost({ type: "contextMenu", kind: "node", id: evt.target.id() }); +}); + +cy.on("cxttap", "edge", evt => { + postToHost({ type: "contextMenu", kind: "edge", id: evt.target.id() }); +}); + +cy.on("cxttap", evt => { + if (evt.target === cy) { + postToHost({ type: "contextMenu", kind: "background" }); + } +}); + +// ---- Selection -> host ------------------------------------------------------ +// Native Cytoscape multi-selection (click selects one, box-drag selects many). +// We report the full selected node set; C# keeps it as the canonical selection, +// which the context menu (and later the toolbar buttons) will consume. +let selectionTimer = null; + +function reportSelection() { + // Coalesce the burst of per-element events from a box selection into one message. + clearTimeout(selectionTimer); + selectionTimer = setTimeout(() => { + const ids = cy.$("node:selected").map(n => n.id()); + postToHost({ type: "selectionChanged", ids: ids }); + }, 0); +} + +cy.on("select unselect", "node", reportSelection); + +// Tell the host we are ready to receive renderGraph() calls. +postToHost({ type: "ready" }); diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/index.html b/CSharpCodeAnalyst/Features/WebGraph/Web/index.html new file mode 100644 index 0000000..9de0a41 --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/index.html @@ -0,0 +1,45 @@ + + + + + + Web Graph View + + + + + + + + + + + + + + + + +
+ + +
+

Code graph view

+

Empty until code elements are added — load a project, or add elements from the tree or search.

+
    +
  • Double-click a node — expand / collapse
  • +
  • Click a node or edge — show details in the Info tab
  • +
  • Right-click — context menu with commands
  • +
  • Drag the background to pan, mouse wheel to zoom
  • +
  • Shift + drag — select multiple nodes
  • +
+
+ + + + diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cose-base.js b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cose-base.js new file mode 100644 index 0000000..49ccc66 --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cose-base.js @@ -0,0 +1,3214 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("layout-base")); + else if(typeof define === 'function' && define.amd) + define(["layout-base"], factory); + else if(typeof exports === 'object') + exports["coseBase"] = factory(require("layout-base")); + else + root["coseBase"] = factory(root["layoutBase"]); +})(this, function(__WEBPACK_EXTERNAL_MODULE__551__) { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ 45: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var coseBase = {}; + +coseBase.layoutBase = __webpack_require__(551); +coseBase.CoSEConstants = __webpack_require__(806); +coseBase.CoSEEdge = __webpack_require__(767); +coseBase.CoSEGraph = __webpack_require__(880); +coseBase.CoSEGraphManager = __webpack_require__(578); +coseBase.CoSELayout = __webpack_require__(765); +coseBase.CoSENode = __webpack_require__(991); +coseBase.ConstraintHandler = __webpack_require__(902); + +module.exports = coseBase; + +/***/ }), + +/***/ 806: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var FDLayoutConstants = __webpack_require__(551).FDLayoutConstants; + +function CoSEConstants() {} + +//CoSEConstants inherits static props in FDLayoutConstants +for (var prop in FDLayoutConstants) { + CoSEConstants[prop] = FDLayoutConstants[prop]; +} + +CoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false; +CoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH; +CoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60; +CoSEConstants.TILE = true; +CoSEConstants.TILING_PADDING_VERTICAL = 10; +CoSEConstants.TILING_PADDING_HORIZONTAL = 10; +CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true; +CoSEConstants.ENFORCE_CONSTRAINTS = true; +CoSEConstants.APPLY_LAYOUT = true; +CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS = true; +CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true; // this should be set to false if there will be a constraint +// This constant is for differentiating whether actual layout algorithm that uses cose-base wants to apply only incremental layout or +// an incremental layout on top of a randomized layout. If it is only incremental layout, then this constant should be true. +CoSEConstants.PURE_INCREMENTAL = CoSEConstants.DEFAULT_INCREMENTAL; + +module.exports = CoSEConstants; + +/***/ }), + +/***/ 767: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var FDLayoutEdge = __webpack_require__(551).FDLayoutEdge; + +function CoSEEdge(source, target, vEdge) { + FDLayoutEdge.call(this, source, target, vEdge); +} + +CoSEEdge.prototype = Object.create(FDLayoutEdge.prototype); +for (var prop in FDLayoutEdge) { + CoSEEdge[prop] = FDLayoutEdge[prop]; +} + +module.exports = CoSEEdge; + +/***/ }), + +/***/ 880: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var LGraph = __webpack_require__(551).LGraph; + +function CoSEGraph(parent, graphMgr, vGraph) { + LGraph.call(this, parent, graphMgr, vGraph); +} + +CoSEGraph.prototype = Object.create(LGraph.prototype); +for (var prop in LGraph) { + CoSEGraph[prop] = LGraph[prop]; +} + +module.exports = CoSEGraph; + +/***/ }), + +/***/ 578: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var LGraphManager = __webpack_require__(551).LGraphManager; + +function CoSEGraphManager(layout) { + LGraphManager.call(this, layout); +} + +CoSEGraphManager.prototype = Object.create(LGraphManager.prototype); +for (var prop in LGraphManager) { + CoSEGraphManager[prop] = LGraphManager[prop]; +} + +module.exports = CoSEGraphManager; + +/***/ }), + +/***/ 765: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var FDLayout = __webpack_require__(551).FDLayout; +var CoSEGraphManager = __webpack_require__(578); +var CoSEGraph = __webpack_require__(880); +var CoSENode = __webpack_require__(991); +var CoSEEdge = __webpack_require__(767); +var CoSEConstants = __webpack_require__(806); +var ConstraintHandler = __webpack_require__(902); +var FDLayoutConstants = __webpack_require__(551).FDLayoutConstants; +var LayoutConstants = __webpack_require__(551).LayoutConstants; +var Point = __webpack_require__(551).Point; +var PointD = __webpack_require__(551).PointD; +var DimensionD = __webpack_require__(551).DimensionD; +var Layout = __webpack_require__(551).Layout; +var Integer = __webpack_require__(551).Integer; +var IGeometry = __webpack_require__(551).IGeometry; +var LGraph = __webpack_require__(551).LGraph; +var Transform = __webpack_require__(551).Transform; +var LinkedList = __webpack_require__(551).LinkedList; + +function CoSELayout() { + FDLayout.call(this); + + this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled + this.constraints = {}; // keep layout constraints +} + +CoSELayout.prototype = Object.create(FDLayout.prototype); + +for (var prop in FDLayout) { + CoSELayout[prop] = FDLayout[prop]; +} + +CoSELayout.prototype.newGraphManager = function () { + var gm = new CoSEGraphManager(this); + this.graphManager = gm; + return gm; +}; + +CoSELayout.prototype.newGraph = function (vGraph) { + return new CoSEGraph(null, this.graphManager, vGraph); +}; + +CoSELayout.prototype.newNode = function (vNode) { + return new CoSENode(this.graphManager, vNode); +}; + +CoSELayout.prototype.newEdge = function (vEdge) { + return new CoSEEdge(null, null, vEdge); +}; + +CoSELayout.prototype.initParameters = function () { + FDLayout.prototype.initParameters.call(this, arguments); + if (!this.isSubLayout) { + if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) { + this.idealEdgeLength = 10; + } else { + this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH; + } + + this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION; + this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH; + this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH; + this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR; + this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR; + + // variables for tree reduction support + this.prunedNodesAll = []; + this.growTreeIterations = 0; + this.afterGrowthIterations = 0; + this.isTreeGrowing = false; + this.isGrowthFinished = false; + } +}; + +// This method is used to set CoSE related parameters used by spring embedder. +CoSELayout.prototype.initSpringEmbedder = function () { + FDLayout.prototype.initSpringEmbedder.call(this); + + // variables for cooling + this.coolingCycle = 0; + this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD; + this.finalTemperature = 0.04; + this.coolingAdjuster = 1; +}; + +CoSELayout.prototype.layout = function () { + var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; + if (createBendsAsNeeded) { + this.createBendpoints(); + this.graphManager.resetAllEdges(); + } + + this.level = 0; + return this.classicLayout(); +}; + +CoSELayout.prototype.classicLayout = function () { + this.nodesWithGravity = this.calculateNodesToApplyGravitationTo(); + this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity); + this.calcNoOfChildrenForAllNodes(); + this.graphManager.calcLowestCommonAncestors(); + this.graphManager.calcInclusionTreeDepths(); + this.graphManager.getRoot().calcEstimatedSize(); + this.calcIdealEdgeLengths(); + + if (!this.incremental) { + var forest = this.getFlatForest(); + + // The graph associated with this layout is flat and a forest + if (forest.length > 0) { + this.positionNodesRadially(forest); + } + // The graph associated with this layout is not flat or a forest + else { + // Reduce the trees when incremental mode is not enabled and graph is not a forest + this.reduceTrees(); + // Update nodes that gravity will be applied + this.graphManager.resetAllNodesToApplyGravitation(); + var allNodes = new Set(this.getAllNodes()); + var intersection = this.nodesWithGravity.filter(function (x) { + return allNodes.has(x); + }); + this.graphManager.setAllNodesToApplyGravitation(intersection); + + this.positionNodesRandomly(); + } + } else { + if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) { + // Reduce the trees in incremental mode if only this constant is set to true + this.reduceTrees(); + // Update nodes that gravity will be applied + this.graphManager.resetAllNodesToApplyGravitation(); + var allNodes = new Set(this.getAllNodes()); + var intersection = this.nodesWithGravity.filter(function (x) { + return allNodes.has(x); + }); + this.graphManager.setAllNodesToApplyGravitation(intersection); + } + } + + if (Object.keys(this.constraints).length > 0) { + ConstraintHandler.handleConstraints(this); + this.initConstraintVariables(); + } + + this.initSpringEmbedder(); + if (CoSEConstants.APPLY_LAYOUT) { + this.runSpringEmbedder(); + } + + return true; +}; + +CoSELayout.prototype.tick = function () { + this.totalIterations++; + + if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) { + if (this.prunedNodesAll.length > 0) { + this.isTreeGrowing = true; + } else { + return true; + } + } + + if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) { + if (this.isConverged()) { + if (this.prunedNodesAll.length > 0) { + this.isTreeGrowing = true; + } else { + return true; + } + } + + this.coolingCycle++; + + if (this.layoutQuality == 0) { + // quality - "draft" + this.coolingAdjuster = this.coolingCycle; + } else if (this.layoutQuality == 1) { + // quality - "default" + this.coolingAdjuster = this.coolingCycle / 3; + } + + // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3 + this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature); + this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor)); + } + // Operations while tree is growing again + if (this.isTreeGrowing) { + if (this.growTreeIterations % 10 == 0) { + if (this.prunedNodesAll.length > 0) { + this.graphManager.updateBounds(); + this.updateGrid(); + this.growTree(this.prunedNodesAll); + // Update nodes that gravity will be applied + this.graphManager.resetAllNodesToApplyGravitation(); + var allNodes = new Set(this.getAllNodes()); + var intersection = this.nodesWithGravity.filter(function (x) { + return allNodes.has(x); + }); + this.graphManager.setAllNodesToApplyGravitation(intersection); + + this.graphManager.updateBounds(); + this.updateGrid(); + if (CoSEConstants.PURE_INCREMENTAL) this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2;else this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; + } else { + this.isTreeGrowing = false; + this.isGrowthFinished = true; + } + } + this.growTreeIterations++; + } + // Operations after growth is finished + if (this.isGrowthFinished) { + if (this.isConverged()) { + return true; + } + if (this.afterGrowthIterations % 10 == 0) { + this.graphManager.updateBounds(); + this.updateGrid(); + } + if (CoSEConstants.PURE_INCREMENTAL) this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2 * ((100 - this.afterGrowthIterations) / 100);else this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100); + this.afterGrowthIterations++; + } + + var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished; + var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished; + + this.totalDisplacement = 0; + this.graphManager.updateBounds(); + this.calcSpringForces(); + this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate); + this.calcGravitationalForces(); + this.moveNodes(); + this.animate(); + + return false; // Layout is not ended yet return false +}; + +CoSELayout.prototype.getPositionsData = function () { + var allNodes = this.graphManager.getAllNodes(); + var pData = {}; + for (var i = 0; i < allNodes.length; i++) { + var rect = allNodes[i].rect; + var id = allNodes[i].id; + pData[id] = { + id: id, + x: rect.getCenterX(), + y: rect.getCenterY(), + w: rect.width, + h: rect.height + }; + } + + return pData; +}; + +CoSELayout.prototype.runSpringEmbedder = function () { + this.initialAnimationPeriod = 25; + this.animationPeriod = this.initialAnimationPeriod; + var layoutEnded = false; + + // If aminate option is 'during' signal that layout is supposed to start iterating + if (FDLayoutConstants.ANIMATE === 'during') { + this.emit('layoutstarted'); + } else { + // If aminate option is 'during' tick() function will be called on index.js + while (!layoutEnded) { + layoutEnded = this.tick(); + } + + this.graphManager.updateBounds(); + } +}; + +// overrides moveNodes method in FDLayout +CoSELayout.prototype.moveNodes = function () { + var lNodes = this.getAllNodes(); + var node; + + // calculate displacement for each node + for (var i = 0; i < lNodes.length; i++) { + node = lNodes[i]; + node.calculateDisplacement(); + } + + if (Object.keys(this.constraints).length > 0) { + this.updateDisplacements(); + } + + // move each node + for (var i = 0; i < lNodes.length; i++) { + node = lNodes[i]; + node.move(); + } +}; + +// constraint related methods: initConstraintVariables and updateDisplacements + +// initialize constraint related variables +CoSELayout.prototype.initConstraintVariables = function () { + var self = this; + this.idToNodeMap = new Map(); + this.fixedNodeSet = new Set(); + + var allNodes = this.graphManager.getAllNodes(); + + // fill idToNodeMap + for (var i = 0; i < allNodes.length; i++) { + var node = allNodes[i]; + this.idToNodeMap.set(node.id, node); + } + + // calculate fixed node weight for given compound node + var calculateCompoundWeight = function calculateCompoundWeight(compoundNode) { + var nodes = compoundNode.getChild().getNodes(); + var node; + var fixedNodeWeight = 0; + for (var i = 0; i < nodes.length; i++) { + node = nodes[i]; + if (node.getChild() == null) { + if (self.fixedNodeSet.has(node.id)) { + fixedNodeWeight += 100; + } + } else { + fixedNodeWeight += calculateCompoundWeight(node); + } + } + return fixedNodeWeight; + }; + + if (this.constraints.fixedNodeConstraint) { + // fill fixedNodeSet + this.constraints.fixedNodeConstraint.forEach(function (nodeData) { + self.fixedNodeSet.add(nodeData.nodeId); + }); + + // assign fixed node weights to compounds if they contain fixed nodes + var allNodes = this.graphManager.getAllNodes(); + var node; + + for (var i = 0; i < allNodes.length; i++) { + node = allNodes[i]; + if (node.getChild() != null) { + var fixedNodeWeight = calculateCompoundWeight(node); + if (fixedNodeWeight > 0) { + node.fixedNodeWeight = fixedNodeWeight; + } + } + } + } + + if (this.constraints.relativePlacementConstraint) { + var nodeToDummyForVerticalAlignment = new Map(); + var nodeToDummyForHorizontalAlignment = new Map(); + this.dummyToNodeForVerticalAlignment = new Map(); + this.dummyToNodeForHorizontalAlignment = new Map(); + this.fixedNodesOnHorizontal = new Set(); + this.fixedNodesOnVertical = new Set(); + + // fill maps and sets + this.fixedNodeSet.forEach(function (nodeId) { + self.fixedNodesOnHorizontal.add(nodeId); + self.fixedNodesOnVertical.add(nodeId); + }); + + if (this.constraints.alignmentConstraint) { + if (this.constraints.alignmentConstraint.vertical) { + var verticalAlignment = this.constraints.alignmentConstraint.vertical; + for (var i = 0; i < verticalAlignment.length; i++) { + this.dummyToNodeForVerticalAlignment.set("dummy" + i, []); + verticalAlignment[i].forEach(function (nodeId) { + nodeToDummyForVerticalAlignment.set(nodeId, "dummy" + i); + self.dummyToNodeForVerticalAlignment.get("dummy" + i).push(nodeId); + if (self.fixedNodeSet.has(nodeId)) { + self.fixedNodesOnHorizontal.add("dummy" + i); + } + }); + } + } + if (this.constraints.alignmentConstraint.horizontal) { + var horizontalAlignment = this.constraints.alignmentConstraint.horizontal; + for (var i = 0; i < horizontalAlignment.length; i++) { + this.dummyToNodeForHorizontalAlignment.set("dummy" + i, []); + horizontalAlignment[i].forEach(function (nodeId) { + nodeToDummyForHorizontalAlignment.set(nodeId, "dummy" + i); + self.dummyToNodeForHorizontalAlignment.get("dummy" + i).push(nodeId); + if (self.fixedNodeSet.has(nodeId)) { + self.fixedNodesOnVertical.add("dummy" + i); + } + }); + } + } + } + + if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) { + + this.shuffle = function (array) { + var j, x, i; + for (i = array.length - 1; i >= 2 * array.length / 3; i--) { + j = Math.floor(Math.random() * (i + 1)); + x = array[i]; + array[i] = array[j]; + array[j] = x; + } + return array; + }; + + this.nodesInRelativeHorizontal = []; + this.nodesInRelativeVertical = []; + this.nodeToRelativeConstraintMapHorizontal = new Map(); + this.nodeToRelativeConstraintMapVertical = new Map(); + this.nodeToTempPositionMapHorizontal = new Map(); + this.nodeToTempPositionMapVertical = new Map(); + + // fill arrays and maps + this.constraints.relativePlacementConstraint.forEach(function (constraint) { + if (constraint.left) { + var nodeIdLeft = nodeToDummyForVerticalAlignment.has(constraint.left) ? nodeToDummyForVerticalAlignment.get(constraint.left) : constraint.left; + var nodeIdRight = nodeToDummyForVerticalAlignment.has(constraint.right) ? nodeToDummyForVerticalAlignment.get(constraint.right) : constraint.right; + + if (!self.nodesInRelativeHorizontal.includes(nodeIdLeft)) { + self.nodesInRelativeHorizontal.push(nodeIdLeft); + self.nodeToRelativeConstraintMapHorizontal.set(nodeIdLeft, []); + if (self.dummyToNodeForVerticalAlignment.has(nodeIdLeft)) { + self.nodeToTempPositionMapHorizontal.set(nodeIdLeft, self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeIdLeft)[0]).getCenterX()); + } else { + self.nodeToTempPositionMapHorizontal.set(nodeIdLeft, self.idToNodeMap.get(nodeIdLeft).getCenterX()); + } + } + if (!self.nodesInRelativeHorizontal.includes(nodeIdRight)) { + self.nodesInRelativeHorizontal.push(nodeIdRight); + self.nodeToRelativeConstraintMapHorizontal.set(nodeIdRight, []); + if (self.dummyToNodeForVerticalAlignment.has(nodeIdRight)) { + self.nodeToTempPositionMapHorizontal.set(nodeIdRight, self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeIdRight)[0]).getCenterX()); + } else { + self.nodeToTempPositionMapHorizontal.set(nodeIdRight, self.idToNodeMap.get(nodeIdRight).getCenterX()); + } + } + + self.nodeToRelativeConstraintMapHorizontal.get(nodeIdLeft).push({ right: nodeIdRight, gap: constraint.gap }); + self.nodeToRelativeConstraintMapHorizontal.get(nodeIdRight).push({ left: nodeIdLeft, gap: constraint.gap }); + } else { + var nodeIdTop = nodeToDummyForHorizontalAlignment.has(constraint.top) ? nodeToDummyForHorizontalAlignment.get(constraint.top) : constraint.top; + var nodeIdBottom = nodeToDummyForHorizontalAlignment.has(constraint.bottom) ? nodeToDummyForHorizontalAlignment.get(constraint.bottom) : constraint.bottom; + + if (!self.nodesInRelativeVertical.includes(nodeIdTop)) { + self.nodesInRelativeVertical.push(nodeIdTop); + self.nodeToRelativeConstraintMapVertical.set(nodeIdTop, []); + if (self.dummyToNodeForHorizontalAlignment.has(nodeIdTop)) { + self.nodeToTempPositionMapVertical.set(nodeIdTop, self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeIdTop)[0]).getCenterY()); + } else { + self.nodeToTempPositionMapVertical.set(nodeIdTop, self.idToNodeMap.get(nodeIdTop).getCenterY()); + } + } + if (!self.nodesInRelativeVertical.includes(nodeIdBottom)) { + self.nodesInRelativeVertical.push(nodeIdBottom); + self.nodeToRelativeConstraintMapVertical.set(nodeIdBottom, []); + if (self.dummyToNodeForHorizontalAlignment.has(nodeIdBottom)) { + self.nodeToTempPositionMapVertical.set(nodeIdBottom, self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeIdBottom)[0]).getCenterY()); + } else { + self.nodeToTempPositionMapVertical.set(nodeIdBottom, self.idToNodeMap.get(nodeIdBottom).getCenterY()); + } + } + self.nodeToRelativeConstraintMapVertical.get(nodeIdTop).push({ bottom: nodeIdBottom, gap: constraint.gap }); + self.nodeToRelativeConstraintMapVertical.get(nodeIdBottom).push({ top: nodeIdTop, gap: constraint.gap }); + } + }); + } else { + var subGraphOnHorizontal = new Map(); // subgraph from vertical RP constraints + var subGraphOnVertical = new Map(); // subgraph from vertical RP constraints + + // construct subgraphs from relative placement constraints + this.constraints.relativePlacementConstraint.forEach(function (constraint) { + if (constraint.left) { + var left = nodeToDummyForVerticalAlignment.has(constraint.left) ? nodeToDummyForVerticalAlignment.get(constraint.left) : constraint.left; + var right = nodeToDummyForVerticalAlignment.has(constraint.right) ? nodeToDummyForVerticalAlignment.get(constraint.right) : constraint.right; + if (subGraphOnHorizontal.has(left)) { + subGraphOnHorizontal.get(left).push(right); + } else { + subGraphOnHorizontal.set(left, [right]); + } + if (subGraphOnHorizontal.has(right)) { + subGraphOnHorizontal.get(right).push(left); + } else { + subGraphOnHorizontal.set(right, [left]); + } + } else { + var top = nodeToDummyForHorizontalAlignment.has(constraint.top) ? nodeToDummyForHorizontalAlignment.get(constraint.top) : constraint.top; + var bottom = nodeToDummyForHorizontalAlignment.has(constraint.bottom) ? nodeToDummyForHorizontalAlignment.get(constraint.bottom) : constraint.bottom; + if (subGraphOnVertical.has(top)) { + subGraphOnVertical.get(top).push(bottom); + } else { + subGraphOnVertical.set(top, [bottom]); + } + if (subGraphOnVertical.has(bottom)) { + subGraphOnVertical.get(bottom).push(top); + } else { + subGraphOnVertical.set(bottom, [top]); + } + } + }); + + // function to construct components from a given graph + // also returns an array that keeps whether each component contains fixed node + var constructComponents = function constructComponents(graph, fixedNodes) { + var components = []; + var isFixed = []; + var queue = new LinkedList(); + var visited = new Set(); + var count = 0; + + graph.forEach(function (value, key) { + if (!visited.has(key)) { + components[count] = []; + isFixed[count] = false; + var currentNode = key; + queue.push(currentNode); + visited.add(currentNode); + components[count].push(currentNode); + + while (queue.length != 0) { + currentNode = queue.shift(); + if (fixedNodes.has(currentNode)) { + isFixed[count] = true; + } + var neighbors = graph.get(currentNode); + neighbors.forEach(function (neighbor) { + if (!visited.has(neighbor)) { + queue.push(neighbor); + visited.add(neighbor); + components[count].push(neighbor); + } + }); + } + count++; + } + }); + + return { components: components, isFixed: isFixed }; + }; + + var resultOnHorizontal = constructComponents(subGraphOnHorizontal, self.fixedNodesOnHorizontal); + this.componentsOnHorizontal = resultOnHorizontal.components; + this.fixedComponentsOnHorizontal = resultOnHorizontal.isFixed; + var resultOnVertical = constructComponents(subGraphOnVertical, self.fixedNodesOnVertical); + this.componentsOnVertical = resultOnVertical.components; + this.fixedComponentsOnVertical = resultOnVertical.isFixed; + } + } +}; + +// updates node displacements based on constraints +CoSELayout.prototype.updateDisplacements = function () { + var self = this; + if (this.constraints.fixedNodeConstraint) { + this.constraints.fixedNodeConstraint.forEach(function (nodeData) { + var fixedNode = self.idToNodeMap.get(nodeData.nodeId); + fixedNode.displacementX = 0; + fixedNode.displacementY = 0; + }); + } + + if (this.constraints.alignmentConstraint) { + if (this.constraints.alignmentConstraint.vertical) { + var allVerticalAlignments = this.constraints.alignmentConstraint.vertical; + for (var i = 0; i < allVerticalAlignments.length; i++) { + var totalDisplacementX = 0; + for (var j = 0; j < allVerticalAlignments[i].length; j++) { + if (this.fixedNodeSet.has(allVerticalAlignments[i][j])) { + totalDisplacementX = 0; + break; + } + totalDisplacementX += this.idToNodeMap.get(allVerticalAlignments[i][j]).displacementX; + } + var averageDisplacementX = totalDisplacementX / allVerticalAlignments[i].length; + for (var j = 0; j < allVerticalAlignments[i].length; j++) { + this.idToNodeMap.get(allVerticalAlignments[i][j]).displacementX = averageDisplacementX; + } + } + } + if (this.constraints.alignmentConstraint.horizontal) { + var allHorizontalAlignments = this.constraints.alignmentConstraint.horizontal; + for (var i = 0; i < allHorizontalAlignments.length; i++) { + var totalDisplacementY = 0; + for (var j = 0; j < allHorizontalAlignments[i].length; j++) { + if (this.fixedNodeSet.has(allHorizontalAlignments[i][j])) { + totalDisplacementY = 0; + break; + } + totalDisplacementY += this.idToNodeMap.get(allHorizontalAlignments[i][j]).displacementY; + } + var averageDisplacementY = totalDisplacementY / allHorizontalAlignments[i].length; + for (var j = 0; j < allHorizontalAlignments[i].length; j++) { + this.idToNodeMap.get(allHorizontalAlignments[i][j]).displacementY = averageDisplacementY; + } + } + } + } + + if (this.constraints.relativePlacementConstraint) { + + if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) { + // shuffle array to randomize node processing order + if (this.totalIterations % 10 == 0) { + this.shuffle(this.nodesInRelativeHorizontal); + this.shuffle(this.nodesInRelativeVertical); + } + + this.nodesInRelativeHorizontal.forEach(function (nodeId) { + if (!self.fixedNodesOnHorizontal.has(nodeId)) { + var displacement = 0; + if (self.dummyToNodeForVerticalAlignment.has(nodeId)) { + displacement = self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeId)[0]).displacementX; + } else { + displacement = self.idToNodeMap.get(nodeId).displacementX; + } + self.nodeToRelativeConstraintMapHorizontal.get(nodeId).forEach(function (constraint) { + if (constraint.right) { + var diff = self.nodeToTempPositionMapHorizontal.get(constraint.right) - self.nodeToTempPositionMapHorizontal.get(nodeId) - displacement; + if (diff < constraint.gap) { + displacement -= constraint.gap - diff; + } + } else { + var diff = self.nodeToTempPositionMapHorizontal.get(nodeId) - self.nodeToTempPositionMapHorizontal.get(constraint.left) + displacement; + if (diff < constraint.gap) { + displacement += constraint.gap - diff; + } + } + }); + self.nodeToTempPositionMapHorizontal.set(nodeId, self.nodeToTempPositionMapHorizontal.get(nodeId) + displacement); + if (self.dummyToNodeForVerticalAlignment.has(nodeId)) { + self.dummyToNodeForVerticalAlignment.get(nodeId).forEach(function (nodeId) { + self.idToNodeMap.get(nodeId).displacementX = displacement; + }); + } else { + self.idToNodeMap.get(nodeId).displacementX = displacement; + } + } + }); + + this.nodesInRelativeVertical.forEach(function (nodeId) { + if (!self.fixedNodesOnHorizontal.has(nodeId)) { + var displacement = 0; + if (self.dummyToNodeForHorizontalAlignment.has(nodeId)) { + displacement = self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeId)[0]).displacementY; + } else { + displacement = self.idToNodeMap.get(nodeId).displacementY; + } + self.nodeToRelativeConstraintMapVertical.get(nodeId).forEach(function (constraint) { + if (constraint.bottom) { + var diff = self.nodeToTempPositionMapVertical.get(constraint.bottom) - self.nodeToTempPositionMapVertical.get(nodeId) - displacement; + if (diff < constraint.gap) { + displacement -= constraint.gap - diff; + } + } else { + var diff = self.nodeToTempPositionMapVertical.get(nodeId) - self.nodeToTempPositionMapVertical.get(constraint.top) + displacement; + if (diff < constraint.gap) { + displacement += constraint.gap - diff; + } + } + }); + self.nodeToTempPositionMapVertical.set(nodeId, self.nodeToTempPositionMapVertical.get(nodeId) + displacement); + if (self.dummyToNodeForHorizontalAlignment.has(nodeId)) { + self.dummyToNodeForHorizontalAlignment.get(nodeId).forEach(function (nodeId) { + self.idToNodeMap.get(nodeId).displacementY = displacement; + }); + } else { + self.idToNodeMap.get(nodeId).displacementY = displacement; + } + } + }); + } else { + for (var i = 0; i < this.componentsOnHorizontal.length; i++) { + var component = this.componentsOnHorizontal[i]; + if (this.fixedComponentsOnHorizontal[i]) { + for (var j = 0; j < component.length; j++) { + if (this.dummyToNodeForVerticalAlignment.has(component[j])) { + this.dummyToNodeForVerticalAlignment.get(component[j]).forEach(function (nodeId) { + self.idToNodeMap.get(nodeId).displacementX = 0; + }); + } else { + this.idToNodeMap.get(component[j]).displacementX = 0; + } + } + } else { + var sum = 0; + var count = 0; + for (var j = 0; j < component.length; j++) { + if (this.dummyToNodeForVerticalAlignment.has(component[j])) { + var actualNodes = this.dummyToNodeForVerticalAlignment.get(component[j]); + sum += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementX; + count += actualNodes.length; + } else { + sum += this.idToNodeMap.get(component[j]).displacementX; + count++; + } + } + var averageDisplacement = sum / count; + for (var j = 0; j < component.length; j++) { + if (this.dummyToNodeForVerticalAlignment.has(component[j])) { + this.dummyToNodeForVerticalAlignment.get(component[j]).forEach(function (nodeId) { + self.idToNodeMap.get(nodeId).displacementX = averageDisplacement; + }); + } else { + this.idToNodeMap.get(component[j]).displacementX = averageDisplacement; + } + } + } + } + + for (var i = 0; i < this.componentsOnVertical.length; i++) { + var component = this.componentsOnVertical[i]; + if (this.fixedComponentsOnVertical[i]) { + for (var j = 0; j < component.length; j++) { + if (this.dummyToNodeForHorizontalAlignment.has(component[j])) { + this.dummyToNodeForHorizontalAlignment.get(component[j]).forEach(function (nodeId) { + self.idToNodeMap.get(nodeId).displacementY = 0; + }); + } else { + this.idToNodeMap.get(component[j]).displacementY = 0; + } + } + } else { + var sum = 0; + var count = 0; + for (var j = 0; j < component.length; j++) { + if (this.dummyToNodeForHorizontalAlignment.has(component[j])) { + var actualNodes = this.dummyToNodeForHorizontalAlignment.get(component[j]); + sum += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementY; + count += actualNodes.length; + } else { + sum += this.idToNodeMap.get(component[j]).displacementY; + count++; + } + } + var averageDisplacement = sum / count; + for (var j = 0; j < component.length; j++) { + if (this.dummyToNodeForHorizontalAlignment.has(component[j])) { + this.dummyToNodeForHorizontalAlignment.get(component[j]).forEach(function (nodeId) { + self.idToNodeMap.get(nodeId).displacementY = averageDisplacement; + }); + } else { + this.idToNodeMap.get(component[j]).displacementY = averageDisplacement; + } + } + } + } + } + } +}; + +CoSELayout.prototype.calculateNodesToApplyGravitationTo = function () { + var nodeList = []; + var graph; + + var graphs = this.graphManager.getGraphs(); + var size = graphs.length; + var i; + for (i = 0; i < size; i++) { + graph = graphs[i]; + + graph.updateConnected(); + + if (!graph.isConnected) { + nodeList = nodeList.concat(graph.getNodes()); + } + } + + return nodeList; +}; + +CoSELayout.prototype.createBendpoints = function () { + var edges = []; + edges = edges.concat(this.graphManager.getAllEdges()); + var visited = new Set(); + var i; + for (i = 0; i < edges.length; i++) { + var edge = edges[i]; + + if (!visited.has(edge)) { + var source = edge.getSource(); + var target = edge.getTarget(); + + if (source == target) { + edge.getBendpoints().push(new PointD()); + edge.getBendpoints().push(new PointD()); + this.createDummyNodesForBendpoints(edge); + visited.add(edge); + } else { + var edgeList = []; + + edgeList = edgeList.concat(source.getEdgeListToNode(target)); + edgeList = edgeList.concat(target.getEdgeListToNode(source)); + + if (!visited.has(edgeList[0])) { + if (edgeList.length > 1) { + var k; + for (k = 0; k < edgeList.length; k++) { + var multiEdge = edgeList[k]; + multiEdge.getBendpoints().push(new PointD()); + this.createDummyNodesForBendpoints(multiEdge); + } + } + edgeList.forEach(function (edge) { + visited.add(edge); + }); + } + } + } + + if (visited.size == edges.length) { + break; + } + } +}; + +CoSELayout.prototype.positionNodesRadially = function (forest) { + // We tile the trees to a grid row by row; first tree starts at (0,0) + var currentStartingPoint = new Point(0, 0); + var numberOfColumns = Math.ceil(Math.sqrt(forest.length)); + var height = 0; + var currentY = 0; + var currentX = 0; + var point = new PointD(0, 0); + + for (var i = 0; i < forest.length; i++) { + if (i % numberOfColumns == 0) { + // Start of a new row, make the x coordinate 0, increment the + // y coordinate with the max height of the previous row + currentX = 0; + currentY = height; + + if (i != 0) { + currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION; + } + + height = 0; + } + + var tree = forest[i]; + + // Find the center of the tree + var centerNode = Layout.findCenterOfTree(tree); + + // Set the staring point of the next tree + currentStartingPoint.x = currentX; + currentStartingPoint.y = currentY; + + // Do a radial layout starting with the center + point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint); + + if (point.y > height) { + height = Math.floor(point.y); + } + + currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION); + } + + this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2)); +}; + +CoSELayout.radialLayout = function (tree, centerNode, startingPoint) { + var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION); + CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep); + var bounds = LGraph.calculateBounds(tree); + + var transform = new Transform(); + transform.setDeviceOrgX(bounds.getMinX()); + transform.setDeviceOrgY(bounds.getMinY()); + transform.setWorldOrgX(startingPoint.x); + transform.setWorldOrgY(startingPoint.y); + + for (var i = 0; i < tree.length; i++) { + var node = tree[i]; + node.transform(transform); + } + + var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY()); + + return transform.inverseTransformPoint(bottomRight); +}; + +CoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) { + // First, position this node by finding its angle. + var halfInterval = (endAngle - startAngle + 1) / 2; + + if (halfInterval < 0) { + halfInterval += 180; + } + + var nodeAngle = (halfInterval + startAngle) % 360; + var teta = nodeAngle * IGeometry.TWO_PI / 360; + + // Make polar to java cordinate conversion. + var cos_teta = Math.cos(teta); + var x_ = distance * Math.cos(teta); + var y_ = distance * Math.sin(teta); + + node.setCenter(x_, y_); + + // Traverse all neighbors of this node and recursively call this + // function. + var neighborEdges = []; + neighborEdges = neighborEdges.concat(node.getEdges()); + var childCount = neighborEdges.length; + + if (parentOfNode != null) { + childCount--; + } + + var branchCount = 0; + + var incEdgesCount = neighborEdges.length; + var startIndex; + + var edges = node.getEdgesBetween(parentOfNode); + + // If there are multiple edges, prune them until there remains only one + // edge. + while (edges.length > 1) { + //neighborEdges.remove(edges.remove(0)); + var temp = edges[0]; + edges.splice(0, 1); + var index = neighborEdges.indexOf(temp); + if (index >= 0) { + neighborEdges.splice(index, 1); + } + incEdgesCount--; + childCount--; + } + + if (parentOfNode != null) { + //assert edges.length == 1; + startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount; + } else { + startIndex = 0; + } + + var stepAngle = Math.abs(endAngle - startAngle) / childCount; + + for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) { + var currentNeighbor = neighborEdges[i].getOtherEnd(node); + + // Don't back traverse to root node in current tree. + if (currentNeighbor == parentOfNode) { + continue; + } + + var childStartAngle = (startAngle + branchCount * stepAngle) % 360; + var childEndAngle = (childStartAngle + stepAngle) % 360; + + CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation); + + branchCount++; + } +}; + +CoSELayout.maxDiagonalInTree = function (tree) { + var maxDiagonal = Integer.MIN_VALUE; + + for (var i = 0; i < tree.length; i++) { + var node = tree[i]; + var diagonal = node.getDiagonal(); + + if (diagonal > maxDiagonal) { + maxDiagonal = diagonal; + } + } + + return maxDiagonal; +}; + +CoSELayout.prototype.calcRepulsionRange = function () { + // formula is 2 x (level + 1) x idealEdgeLength + return 2 * (this.level + 1) * this.idealEdgeLength; +}; + +// Tiling methods + +// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's +CoSELayout.prototype.groupZeroDegreeMembers = function () { + var self = this; + // array of [parent_id x oneDegreeNode_id] + var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members + this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled + this.idToDummyNode = {}; // A map of id to dummy node + + var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled + var allNodes = this.graphManager.getAllNodes(); + + // Fill zero degree list + for (var i = 0; i < allNodes.length; i++) { + var node = allNodes[i]; + var parent = node.getParent(); + // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list + if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) { + zeroDegree.push(node); + } + } + + // Create a map of parent node and its zero degree members + for (var i = 0; i < zeroDegree.length; i++) { + var node = zeroDegree[i]; // Zero degree node itself + var p_id = node.getParent().id; // Parent id + + if (typeof tempMemberGroups[p_id] === "undefined") tempMemberGroups[p_id] = []; + + tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups + } + + // If there are at least two nodes at a level, create a dummy compound for them + Object.keys(tempMemberGroups).forEach(function (p_id) { + if (tempMemberGroups[p_id].length > 1) { + var dummyCompoundId = "DummyCompound_" + p_id; // The id of dummy compound which will be created soon + self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups + + var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound + + // Create a dummy compound with calculated id + var dummyCompound = new CoSENode(self.graphManager); + dummyCompound.id = dummyCompoundId; + dummyCompound.paddingLeft = parent.paddingLeft || 0; + dummyCompound.paddingRight = parent.paddingRight || 0; + dummyCompound.paddingBottom = parent.paddingBottom || 0; + dummyCompound.paddingTop = parent.paddingTop || 0; + + self.idToDummyNode[dummyCompoundId] = dummyCompound; + + var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound); + var parentGraph = parent.getChild(); + + // Add dummy compound to parent the graph + parentGraph.add(dummyCompound); + + // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent + for (var i = 0; i < tempMemberGroups[p_id].length; i++) { + var node = tempMemberGroups[p_id][i]; + + parentGraph.remove(node); + dummyParentGraph.add(node); + } + } + }); +}; + +CoSELayout.prototype.clearCompounds = function () { + var childGraphMap = {}; + var idToNode = {}; + + // Get compound ordering by finding the inner one first + this.performDFSOnCompounds(); + + for (var i = 0; i < this.compoundOrder.length; i++) { + + idToNode[this.compoundOrder[i].id] = this.compoundOrder[i]; + childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes()); + + // Remove children of compounds + this.graphManager.remove(this.compoundOrder[i].getChild()); + this.compoundOrder[i].child = null; + } + + this.graphManager.resetAllNodes(); + + // Tile the removed children + this.tileCompoundMembers(childGraphMap, idToNode); +}; + +CoSELayout.prototype.clearZeroDegreeMembers = function () { + var self = this; + var tiledZeroDegreePack = this.tiledZeroDegreePack = []; + + Object.keys(this.memberGroups).forEach(function (id) { + var compoundNode = self.idToDummyNode[id]; // Get the dummy compound + + tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight); + + // Set the width and height of the dummy compound as calculated + compoundNode.rect.width = tiledZeroDegreePack[id].width; + compoundNode.rect.height = tiledZeroDegreePack[id].height; + compoundNode.setCenter(tiledZeroDegreePack[id].centerX, tiledZeroDegreePack[id].centerY); + + // compound left and top margings for labels + // when node labels are included, these values may be set to different values below and are used in tilingPostLayout, + // otherwise they stay as zero + compoundNode.labelMarginLeft = 0; + compoundNode.labelMarginTop = 0; + + // Update compound bounds considering its label properties and set label margins for left and top + if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { + + var width = compoundNode.rect.width; + var height = compoundNode.rect.height; + + if (compoundNode.labelWidth) { + if (compoundNode.labelPosHorizontal == "left") { + compoundNode.rect.x -= compoundNode.labelWidth; + compoundNode.setWidth(width + compoundNode.labelWidth); + compoundNode.labelMarginLeft = compoundNode.labelWidth; + } else if (compoundNode.labelPosHorizontal == "center" && compoundNode.labelWidth > width) { + compoundNode.rect.x -= (compoundNode.labelWidth - width) / 2; + compoundNode.setWidth(compoundNode.labelWidth); + compoundNode.labelMarginLeft = (compoundNode.labelWidth - width) / 2; + } else if (compoundNode.labelPosHorizontal == "right") { + compoundNode.setWidth(width + compoundNode.labelWidth); + } + } + + if (compoundNode.labelHeight) { + if (compoundNode.labelPosVertical == "top") { + compoundNode.rect.y -= compoundNode.labelHeight; + compoundNode.setHeight(height + compoundNode.labelHeight); + compoundNode.labelMarginTop = compoundNode.labelHeight; + } else if (compoundNode.labelPosVertical == "center" && compoundNode.labelHeight > height) { + compoundNode.rect.y -= (compoundNode.labelHeight - height) / 2; + compoundNode.setHeight(compoundNode.labelHeight); + compoundNode.labelMarginTop = (compoundNode.labelHeight - height) / 2; + } else if (compoundNode.labelPosVertical == "bottom") { + compoundNode.setHeight(height + compoundNode.labelHeight); + } + } + } + }); +}; + +CoSELayout.prototype.repopulateCompounds = function () { + for (var i = this.compoundOrder.length - 1; i >= 0; i--) { + var lCompoundNode = this.compoundOrder[i]; + var id = lCompoundNode.id; + var horizontalMargin = lCompoundNode.paddingLeft; + var verticalMargin = lCompoundNode.paddingTop; + var labelMarginLeft = lCompoundNode.labelMarginLeft; + var labelMarginTop = lCompoundNode.labelMarginTop; + + this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop); + } +}; + +CoSELayout.prototype.repopulateZeroDegreeMembers = function () { + var self = this; + var tiledPack = this.tiledZeroDegreePack; + + Object.keys(tiledPack).forEach(function (id) { + var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id + var horizontalMargin = compoundNode.paddingLeft; + var verticalMargin = compoundNode.paddingTop; + var labelMarginLeft = compoundNode.labelMarginLeft; + var labelMarginTop = compoundNode.labelMarginTop; + + // Adjust the positions of nodes wrt its compound + self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop); + }); +}; + +CoSELayout.prototype.getToBeTiled = function (node) { + var id = node.id; + //firstly check the previous results + if (this.toBeTiled[id] != null) { + return this.toBeTiled[id]; + } + + //only compound nodes are to be tiled + var childGraph = node.getChild(); + if (childGraph == null) { + this.toBeTiled[id] = false; + return false; + } + + var children = childGraph.getNodes(); // Get the children nodes + + //a compound node is not to be tiled if all of its compound children are not to be tiled + for (var i = 0; i < children.length; i++) { + var theChild = children[i]; + + if (this.getNodeDegree(theChild) > 0) { + this.toBeTiled[id] = false; + return false; + } + + //pass the children not having the compound structure + if (theChild.getChild() == null) { + this.toBeTiled[theChild.id] = false; + continue; + } + + if (!this.getToBeTiled(theChild)) { + this.toBeTiled[id] = false; + return false; + } + } + this.toBeTiled[id] = true; + return true; +}; + +// Get degree of a node depending of its edges and independent of its children +CoSELayout.prototype.getNodeDegree = function (node) { + var id = node.id; + var edges = node.getEdges(); + var degree = 0; + + // For the edges connected + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + if (edge.getSource().id !== edge.getTarget().id) { + degree = degree + 1; + } + } + return degree; +}; + +// Get degree of a node with its children +CoSELayout.prototype.getNodeDegreeWithChildren = function (node) { + var degree = this.getNodeDegree(node); + if (node.getChild() == null) { + return degree; + } + var children = node.getChild().getNodes(); + for (var i = 0; i < children.length; i++) { + var child = children[i]; + degree += this.getNodeDegreeWithChildren(child); + } + return degree; +}; + +CoSELayout.prototype.performDFSOnCompounds = function () { + this.compoundOrder = []; + this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes()); +}; + +CoSELayout.prototype.fillCompexOrderByDFS = function (children) { + for (var i = 0; i < children.length; i++) { + var child = children[i]; + if (child.getChild() != null) { + this.fillCompexOrderByDFS(child.getChild().getNodes()); + } + if (this.getToBeTiled(child)) { + this.compoundOrder.push(child); + } + } +}; + +/** +* This method places each zero degree member wrt given (x,y) coordinates (top left). +*/ +CoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin, compoundLabelMarginLeft, compoundLabelMarginTop) { + x += compoundHorizontalMargin + compoundLabelMarginLeft; + y += compoundVerticalMargin + compoundLabelMarginTop; + + var left = x; + + for (var i = 0; i < organization.rows.length; i++) { + var row = organization.rows[i]; + x = left; + var maxHeight = 0; + + for (var j = 0; j < row.length; j++) { + var lnode = row[j]; + + lnode.rect.x = x; // + lnode.rect.width / 2; + lnode.rect.y = y; // + lnode.rect.height / 2; + + x += lnode.rect.width + organization.horizontalPadding; + + if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height; + } + + y += maxHeight + organization.verticalPadding; + } +}; + +CoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) { + var self = this; + this.tiledMemberPack = []; + + Object.keys(childGraphMap).forEach(function (id) { + // Get the compound node + var compoundNode = idToNode[id]; + + self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight); + + compoundNode.rect.width = self.tiledMemberPack[id].width; + compoundNode.rect.height = self.tiledMemberPack[id].height; + compoundNode.setCenter(self.tiledMemberPack[id].centerX, self.tiledMemberPack[id].centerY); + + // compound left and top margings for labels + // when node labels are included, these values may be set to different values below and are used in tilingPostLayout, + // otherwise they stay as zero + compoundNode.labelMarginLeft = 0; + compoundNode.labelMarginTop = 0; + + // Update compound bounds considering its label properties and set label margins for left and top + if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { + + var width = compoundNode.rect.width; + var height = compoundNode.rect.height; + + if (compoundNode.labelWidth) { + if (compoundNode.labelPosHorizontal == "left") { + compoundNode.rect.x -= compoundNode.labelWidth; + compoundNode.setWidth(width + compoundNode.labelWidth); + compoundNode.labelMarginLeft = compoundNode.labelWidth; + } else if (compoundNode.labelPosHorizontal == "center" && compoundNode.labelWidth > width) { + compoundNode.rect.x -= (compoundNode.labelWidth - width) / 2; + compoundNode.setWidth(compoundNode.labelWidth); + compoundNode.labelMarginLeft = (compoundNode.labelWidth - width) / 2; + } else if (compoundNode.labelPosHorizontal == "right") { + compoundNode.setWidth(width + compoundNode.labelWidth); + } + } + + if (compoundNode.labelHeight) { + if (compoundNode.labelPosVertical == "top") { + compoundNode.rect.y -= compoundNode.labelHeight; + compoundNode.setHeight(height + compoundNode.labelHeight); + compoundNode.labelMarginTop = compoundNode.labelHeight; + } else if (compoundNode.labelPosVertical == "center" && compoundNode.labelHeight > height) { + compoundNode.rect.y -= (compoundNode.labelHeight - height) / 2; + compoundNode.setHeight(compoundNode.labelHeight); + compoundNode.labelMarginTop = (compoundNode.labelHeight - height) / 2; + } else if (compoundNode.labelPosVertical == "bottom") { + compoundNode.setHeight(height + compoundNode.labelHeight); + } + } + } + }); +}; + +CoSELayout.prototype.tileNodes = function (nodes, minWidth) { + var horizontalOrg = this.tileNodesByFavoringDim(nodes, minWidth, true); + var verticalOrg = this.tileNodesByFavoringDim(nodes, minWidth, false); + + var horizontalRatio = this.getOrgRatio(horizontalOrg); + var verticalRatio = this.getOrgRatio(verticalOrg); + var bestOrg; + + // the best ratio is the one that is closer to 1 since the ratios are already normalized + // and the best organization is the one that has the best ratio + if (verticalRatio < horizontalRatio) { + bestOrg = verticalOrg; + } else { + bestOrg = horizontalOrg; + } + + return bestOrg; +}; + +// get the width/height ratio of the organization that is normalized so that it will not be less than 1 +CoSELayout.prototype.getOrgRatio = function (organization) { + // get dimensions and calculate the initial ratio + var width = organization.width; + var height = organization.height; + var ratio = width / height; + + // if the initial ratio is less then 1 then inverse it + if (ratio < 1) { + ratio = 1 / ratio; + } + + // return the normalized ratio + return ratio; +}; + +/* + * Calculates the ideal width for the rows. This method assumes that + * each node has the same sizes and calculates the ideal row width that + * approximates a square shaped complex accordingly. However, since nodes would + * have different sizes some rows would have different sizes and the resulting + * shape would not be an exact square. + */ +CoSELayout.prototype.calcIdealRowWidth = function (members, favorHorizontalDim) { + // To approximate a square shaped complex we need to make complex width equal to complex height. + // To achieve this we need to solve the following equation system for hc: + // (x + bx) * hc - bx = (y + by) * vc - by, hc * vc = n + // where x is the avarage width of the nodes, y is the avarage height of nodes + // bx and by are the buffer sizes in horizontal and vertical dimensions accordingly, + // hc and vc are the number of rows in horizontal and vertical dimensions + // n is number of members. + + var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL; + var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL; + + // number of members + var membersSize = members.length; + + // sum of the width of all members + var totalWidth = 0; + + // sum of the height of all members + var totalHeight = 0; + + var maxWidth = 0; + + // traverse all members to calculate total width and total height and get the maximum members width + members.forEach(function (node) { + totalWidth += node.getWidth(); + totalHeight += node.getHeight(); + + if (node.getWidth() > maxWidth) { + maxWidth = node.getWidth(); + } + }); + + // average width of the members + var averageWidth = totalWidth / membersSize; + + // average height of the members + var averageHeight = totalHeight / membersSize; + + // solving the initial equation system for the hc yields the following second degree equation: + // hc^2 * (x+bx) + hc * (by - bx) - n * (y + by) = 0 + + // the delta value to solve the equation above for hc + var delta = Math.pow(verticalPadding - horizontalPadding, 2) + 4 * (averageWidth + horizontalPadding) * (averageHeight + verticalPadding) * membersSize; + + // solve the equation using delta value to calculate the horizontal count + // that represents the number of nodes in an ideal row + var horizontalCountDouble = (horizontalPadding - verticalPadding + Math.sqrt(delta)) / (2 * (averageWidth + horizontalPadding)); + // round the calculated horizontal count up or down according to the favored dimension + var horizontalCount; + + if (favorHorizontalDim) { + horizontalCount = Math.ceil(horizontalCountDouble); + // if horizontalCount count is not a float value then both of rounding to floor and ceil + // will yield the same values. Instead of repeating the same calculation try going up + // while favoring horizontal dimension in such cases + if (horizontalCount == horizontalCountDouble) { + horizontalCount++; + } + } else { + horizontalCount = Math.floor(horizontalCountDouble); + } + + // ideal width to be calculated + var idealWidth = horizontalCount * (averageWidth + horizontalPadding) - horizontalPadding; + + // if max width is bigger than calculated ideal width reset ideal width to it + if (maxWidth > idealWidth) { + idealWidth = maxWidth; + } + + // add the left-right margins to the ideal row width + idealWidth += horizontalPadding * 2; + + // return the ideal row width1 + return idealWidth; +}; + +CoSELayout.prototype.tileNodesByFavoringDim = function (nodes, minWidth, favorHorizontalDim) { + var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL; + var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL; + var tilingCompareBy = CoSEConstants.TILING_COMPARE_BY; + var organization = { + rows: [], + rowWidth: [], + rowHeight: [], + width: 0, + height: minWidth, // assume minHeight equals to minWidth + verticalPadding: verticalPadding, + horizontalPadding: horizontalPadding, + centerX: 0, + centerY: 0 + }; + + if (tilingCompareBy) { + organization.idealRowWidth = this.calcIdealRowWidth(nodes, favorHorizontalDim); + } + + var getNodeArea = function getNodeArea(n) { + return n.rect.width * n.rect.height; + }; + + var areaCompareFcn = function areaCompareFcn(n1, n2) { + return getNodeArea(n2) - getNodeArea(n1); + }; + + // Sort the nodes in descending order of their areas + nodes.sort(function (n1, n2) { + var cmpBy = areaCompareFcn; + if (organization.idealRowWidth) { + cmpBy = tilingCompareBy; + return cmpBy(n1.id, n2.id); + } + return cmpBy(n1, n2); + }); + + // Create the organization -> calculate compound center + var sumCenterX = 0; + var sumCenterY = 0; + for (var i = 0; i < nodes.length; i++) { + var lNode = nodes[i]; + + sumCenterX += lNode.getCenterX(); + sumCenterY += lNode.getCenterY(); + } + + organization.centerX = sumCenterX / nodes.length; + organization.centerY = sumCenterY / nodes.length; + + // Create the organization -> tile members + for (var i = 0; i < nodes.length; i++) { + var lNode = nodes[i]; + + if (organization.rows.length == 0) { + this.insertNodeToRow(organization, lNode, 0, minWidth); + } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) { + var rowIndex = organization.rows.length - 1; + if (!organization.idealRowWidth) { + rowIndex = this.getShortestRowIndex(organization); + } + this.insertNodeToRow(organization, lNode, rowIndex, minWidth); + } else { + this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth); + } + + this.shiftToLastRow(organization); + } + + return organization; +}; + +CoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) { + var minCompoundSize = minWidth; + + // Add new row if needed + if (rowIndex == organization.rows.length) { + var secondDimension = []; + + organization.rows.push(secondDimension); + organization.rowWidth.push(minCompoundSize); + organization.rowHeight.push(0); + } + + // Update row width + var w = organization.rowWidth[rowIndex] + node.rect.width; + + if (organization.rows[rowIndex].length > 0) { + w += organization.horizontalPadding; + } + + organization.rowWidth[rowIndex] = w; + // Update compound width + if (organization.width < w) { + organization.width = w; + } + + // Update height + var h = node.rect.height; + if (rowIndex > 0) h += organization.verticalPadding; + + var extraHeight = 0; + if (h > organization.rowHeight[rowIndex]) { + extraHeight = organization.rowHeight[rowIndex]; + organization.rowHeight[rowIndex] = h; + extraHeight = organization.rowHeight[rowIndex] - extraHeight; + } + + organization.height += extraHeight; + + // Insert node + organization.rows[rowIndex].push(node); +}; + +//Scans the rows of an organization and returns the one with the min width +CoSELayout.prototype.getShortestRowIndex = function (organization) { + var r = -1; + var min = Number.MAX_VALUE; + + for (var i = 0; i < organization.rows.length; i++) { + if (organization.rowWidth[i] < min) { + r = i; + min = organization.rowWidth[i]; + } + } + return r; +}; + +//Scans the rows of an organization and returns the one with the max width +CoSELayout.prototype.getLongestRowIndex = function (organization) { + var r = -1; + var max = Number.MIN_VALUE; + + for (var i = 0; i < organization.rows.length; i++) { + + if (organization.rowWidth[i] > max) { + r = i; + max = organization.rowWidth[i]; + } + } + + return r; +}; + +/** +* This method checks whether adding extra width to the organization violates +* the aspect ratio(1) or not. +*/ +CoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) { + + // if there is an ideal row width specified use it instead of checking the aspect ratio + if (organization.idealRowWidth) { + var lastRowIndex = organization.rows.length - 1; + var lastRowWidth = organization.rowWidth[lastRowIndex]; + + // check and return if ideal row width will be exceed if the node is added to the row + return lastRowWidth + extraWidth + organization.horizontalPadding <= organization.idealRowWidth; + } + + var sri = this.getShortestRowIndex(organization); + + if (sri < 0) { + return true; + } + + var min = organization.rowWidth[sri]; + + if (min + organization.horizontalPadding + extraWidth <= organization.width) return true; + + var hDiff = 0; + + // Adding to an existing row + if (organization.rowHeight[sri] < extraHeight) { + if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri]; + } + + var add_to_row_ratio; + if (organization.width - min >= extraWidth + organization.horizontalPadding) { + add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding); + } else { + add_to_row_ratio = (organization.height + hDiff) / organization.width; + } + + // Adding a new row for this node + hDiff = extraHeight + organization.verticalPadding; + var add_new_row_ratio; + if (organization.width < extraWidth) { + add_new_row_ratio = (organization.height + hDiff) / extraWidth; + } else { + add_new_row_ratio = (organization.height + hDiff) / organization.width; + } + + if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio; + + if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio; + + return add_to_row_ratio < add_new_row_ratio; +}; + +//If moving the last node from the longest row and adding it to the last +//row makes the bounding box smaller, do it. +CoSELayout.prototype.shiftToLastRow = function (organization) { + var longest = this.getLongestRowIndex(organization); + var last = organization.rowWidth.length - 1; + var row = organization.rows[longest]; + var node = row[row.length - 1]; + + var diff = node.width + organization.horizontalPadding; + + // Check if there is enough space on the last row + if (organization.width - organization.rowWidth[last] > diff && longest != last) { + // Remove the last element of the longest row + row.splice(-1, 1); + + // Push it to the last row + organization.rows[last].push(node); + + organization.rowWidth[longest] = organization.rowWidth[longest] - diff; + organization.rowWidth[last] = organization.rowWidth[last] + diff; + organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)]; + + // Update heights of the organization + var maxHeight = Number.MIN_VALUE; + for (var i = 0; i < row.length; i++) { + if (row[i].height > maxHeight) maxHeight = row[i].height; + } + if (longest > 0) maxHeight += organization.verticalPadding; + + var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last]; + + organization.rowHeight[longest] = maxHeight; + if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding; + + var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last]; + organization.height += finalTotal - prevTotal; + + this.shiftToLastRow(organization); + } +}; + +CoSELayout.prototype.tilingPreLayout = function () { + if (CoSEConstants.TILE) { + // Find zero degree nodes and create a compound for each level + this.groupZeroDegreeMembers(); + // Tile and clear children of each compound + this.clearCompounds(); + // Separately tile and clear zero degree nodes for each level + this.clearZeroDegreeMembers(); + } +}; + +CoSELayout.prototype.tilingPostLayout = function () { + if (CoSEConstants.TILE) { + this.repopulateZeroDegreeMembers(); + this.repopulateCompounds(); + } +}; + +// ----------------------------------------------------------------------------- +// Section: Tree Reduction methods +// ----------------------------------------------------------------------------- +// Reduce trees +CoSELayout.prototype.reduceTrees = function () { + var prunedNodesAll = []; + var containsLeaf = true; + var node; + + while (containsLeaf) { + var allNodes = this.graphManager.getAllNodes(); + var prunedNodesInStepTemp = []; + containsLeaf = false; + + for (var i = 0; i < allNodes.length; i++) { + node = allNodes[i]; + if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) { + if (CoSEConstants.PURE_INCREMENTAL) { + var otherEnd = node.getEdges()[0].getOtherEnd(node); + var relativePosition = new DimensionD(node.getCenterX() - otherEnd.getCenterX(), node.getCenterY() - otherEnd.getCenterY()); + prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner(), relativePosition]); + } else { + prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]); + } + containsLeaf = true; + } + } + if (containsLeaf == true) { + var prunedNodesInStep = []; + for (var j = 0; j < prunedNodesInStepTemp.length; j++) { + if (prunedNodesInStepTemp[j][0].getEdges().length == 1) { + prunedNodesInStep.push(prunedNodesInStepTemp[j]); + prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]); + } + } + prunedNodesAll.push(prunedNodesInStep); + this.graphManager.resetAllNodes(); + this.graphManager.resetAllEdges(); + } + } + this.prunedNodesAll = prunedNodesAll; +}; + +// Grow tree one step +CoSELayout.prototype.growTree = function (prunedNodesAll) { + var lengthOfPrunedNodesInStep = prunedNodesAll.length; + var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1]; + + var nodeData; + for (var i = 0; i < prunedNodesInStep.length; i++) { + nodeData = prunedNodesInStep[i]; + + this.findPlaceforPrunedNode(nodeData); + + nodeData[2].add(nodeData[0]); + nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target); + } + + prunedNodesAll.splice(prunedNodesAll.length - 1, 1); + this.graphManager.resetAllNodes(); + this.graphManager.resetAllEdges(); +}; + +// Find an appropriate position to replace pruned node, this method can be improved +CoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) { + + var gridForPrunedNode; + var nodeToConnect; + var prunedNode = nodeData[0]; + if (prunedNode == nodeData[1].source) { + nodeToConnect = nodeData[1].target; + } else { + nodeToConnect = nodeData[1].source; + } + + if (CoSEConstants.PURE_INCREMENTAL) { + prunedNode.setCenter(nodeToConnect.getCenterX() + nodeData[3].getWidth(), nodeToConnect.getCenterY() + nodeData[3].getHeight()); + } else { + var startGridX = nodeToConnect.startX; + var finishGridX = nodeToConnect.finishX; + var startGridY = nodeToConnect.startY; + var finishGridY = nodeToConnect.finishY; + + var upNodeCount = 0; + var downNodeCount = 0; + var rightNodeCount = 0; + var leftNodeCount = 0; + var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount]; + + if (startGridY > 0) { + for (var i = startGridX; i <= finishGridX; i++) { + controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1; + } + } + if (finishGridX < this.grid.length - 1) { + for (var i = startGridY; i <= finishGridY; i++) { + controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1; + } + } + if (finishGridY < this.grid[0].length - 1) { + for (var i = startGridX; i <= finishGridX; i++) { + controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1; + } + } + if (startGridX > 0) { + for (var i = startGridY; i <= finishGridY; i++) { + controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1; + } + } + var min = Integer.MAX_VALUE; + var minCount; + var minIndex; + for (var j = 0; j < controlRegions.length; j++) { + if (controlRegions[j] < min) { + min = controlRegions[j]; + minCount = 1; + minIndex = j; + } else if (controlRegions[j] == min) { + minCount++; + } + } + + if (minCount == 3 && min == 0) { + if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) { + gridForPrunedNode = 1; + } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) { + gridForPrunedNode = 0; + } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) { + gridForPrunedNode = 3; + } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) { + gridForPrunedNode = 2; + } + } else if (minCount == 2 && min == 0) { + var random = Math.floor(Math.random() * 2); + if (controlRegions[0] == 0 && controlRegions[1] == 0) { + ; + if (random == 0) { + gridForPrunedNode = 0; + } else { + gridForPrunedNode = 1; + } + } else if (controlRegions[0] == 0 && controlRegions[2] == 0) { + if (random == 0) { + gridForPrunedNode = 0; + } else { + gridForPrunedNode = 2; + } + } else if (controlRegions[0] == 0 && controlRegions[3] == 0) { + if (random == 0) { + gridForPrunedNode = 0; + } else { + gridForPrunedNode = 3; + } + } else if (controlRegions[1] == 0 && controlRegions[2] == 0) { + if (random == 0) { + gridForPrunedNode = 1; + } else { + gridForPrunedNode = 2; + } + } else if (controlRegions[1] == 0 && controlRegions[3] == 0) { + if (random == 0) { + gridForPrunedNode = 1; + } else { + gridForPrunedNode = 3; + } + } else { + if (random == 0) { + gridForPrunedNode = 2; + } else { + gridForPrunedNode = 3; + } + } + } else if (minCount == 4 && min == 0) { + var random = Math.floor(Math.random() * 4); + gridForPrunedNode = random; + } else { + gridForPrunedNode = minIndex; + } + + if (gridForPrunedNode == 0) { + prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2); + } else if (gridForPrunedNode == 1) { + prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY()); + } else if (gridForPrunedNode == 2) { + prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2); + } else { + prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY()); + } + } +}; + +module.exports = CoSELayout; + +/***/ }), + +/***/ 991: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var FDLayoutNode = __webpack_require__(551).FDLayoutNode; +var IMath = __webpack_require__(551).IMath; + +function CoSENode(gm, loc, size, vNode) { + FDLayoutNode.call(this, gm, loc, size, vNode); +} + +CoSENode.prototype = Object.create(FDLayoutNode.prototype); +for (var prop in FDLayoutNode) { + CoSENode[prop] = FDLayoutNode[prop]; +} + +CoSENode.prototype.calculateDisplacement = function () { + var layout = this.graphManager.getLayout(); + // this check is for compound nodes that contain fixed nodes + if (this.getChild() != null && this.fixedNodeWeight) { + this.displacementX += layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.fixedNodeWeight; + this.displacementY += layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.fixedNodeWeight; + } else { + this.displacementX += layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren; + this.displacementY += layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren; + } + + if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) { + this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX); + } + + if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) { + this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY); + } + + // non-empty compound node, propogate movement to children as well + if (this.child && this.child.getNodes().length > 0) { + this.propogateDisplacementToChildren(this.displacementX, this.displacementY); + } +}; + +CoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) { + var nodes = this.getChild().getNodes(); + var node; + for (var i = 0; i < nodes.length; i++) { + node = nodes[i]; + if (node.getChild() == null) { + node.displacementX += dX; + node.displacementY += dY; + } else { + node.propogateDisplacementToChildren(dX, dY); + } + } +}; + +CoSENode.prototype.move = function () { + var layout = this.graphManager.getLayout(); + + // a simple node or an empty compound node, move it + if (this.child == null || this.child.getNodes().length == 0) { + this.moveBy(this.displacementX, this.displacementY); + + layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY); + } + + this.springForceX = 0; + this.springForceY = 0; + this.repulsionForceX = 0; + this.repulsionForceY = 0; + this.gravitationForceX = 0; + this.gravitationForceY = 0; + this.displacementX = 0; + this.displacementY = 0; +}; + +CoSENode.prototype.setPred1 = function (pred1) { + this.pred1 = pred1; +}; + +CoSENode.prototype.getPred1 = function () { + return pred1; +}; + +CoSENode.prototype.getPred2 = function () { + return pred2; +}; + +CoSENode.prototype.setNext = function (next) { + this.next = next; +}; + +CoSENode.prototype.getNext = function () { + return next; +}; + +CoSENode.prototype.setProcessed = function (processed) { + this.processed = processed; +}; + +CoSENode.prototype.isProcessed = function () { + return processed; +}; + +module.exports = CoSENode; + +/***/ }), + +/***/ 902: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var CoSEConstants = __webpack_require__(806); +var LinkedList = __webpack_require__(551).LinkedList; +var Matrix = __webpack_require__(551).Matrix; +var SVD = __webpack_require__(551).SVD; + +function ConstraintHandler() {} + +ConstraintHandler.handleConstraints = function (layout) { + // let layout = this.graphManager.getLayout(); + + // get constraints from layout + var constraints = {}; + constraints.fixedNodeConstraint = layout.constraints.fixedNodeConstraint; + constraints.alignmentConstraint = layout.constraints.alignmentConstraint; + constraints.relativePlacementConstraint = layout.constraints.relativePlacementConstraint; + + var idToNodeMap = new Map(); + var nodeIndexes = new Map(); + var xCoords = []; + var yCoords = []; + + var allNodes = layout.getAllNodes(); + var index = 0; + // fill index map and coordinates + for (var i = 0; i < allNodes.length; i++) { + var node = allNodes[i]; + if (node.getChild() == null) { + nodeIndexes.set(node.id, index++); + xCoords.push(node.getCenterX()); + yCoords.push(node.getCenterY()); + idToNodeMap.set(node.id, node); + } + } + + // if there exists relative placement constraint without gap value, set it to default + if (constraints.relativePlacementConstraint) { + constraints.relativePlacementConstraint.forEach(function (constraint) { + if (!constraint.gap && constraint.gap != 0) { + if (constraint.left) { + constraint.gap = CoSEConstants.DEFAULT_EDGE_LENGTH + idToNodeMap.get(constraint.left).getWidth() / 2 + idToNodeMap.get(constraint.right).getWidth() / 2; + } else { + constraint.gap = CoSEConstants.DEFAULT_EDGE_LENGTH + idToNodeMap.get(constraint.top).getHeight() / 2 + idToNodeMap.get(constraint.bottom).getHeight() / 2; + } + } + }); + } + + /* auxiliary functions */ + + // calculate difference between two position objects + var calculatePositionDiff = function calculatePositionDiff(pos1, pos2) { + return { x: pos1.x - pos2.x, y: pos1.y - pos2.y }; + }; + + // calculate average position of the nodes + var calculateAvgPosition = function calculateAvgPosition(nodeIdSet) { + var xPosSum = 0; + var yPosSum = 0; + nodeIdSet.forEach(function (nodeId) { + xPosSum += xCoords[nodeIndexes.get(nodeId)]; + yPosSum += yCoords[nodeIndexes.get(nodeId)]; + }); + + return { x: xPosSum / nodeIdSet.size, y: yPosSum / nodeIdSet.size }; + }; + + // find an appropriate positioning for the nodes in a given graph according to relative placement constraints + // this function also takes the fixed nodes and alignment constraints into account + // graph: dag to be evaluated, direction: "horizontal" or "vertical", + // fixedNodes: set of fixed nodes to consider during evaluation, dummyPositions: appropriate coordinates of the dummy nodes + var findAppropriatePositionForRelativePlacement = function findAppropriatePositionForRelativePlacement(graph, direction, fixedNodes, dummyPositions, componentSources) { + + // find union of two sets + function setUnion(setA, setB) { + var union = new Set(setA); + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = setB[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var elem = _step.value; + + union.add(elem); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return union; + } + + // find indegree count for each node + var inDegrees = new Map(); + + graph.forEach(function (value, key) { + inDegrees.set(key, 0); + }); + graph.forEach(function (value, key) { + value.forEach(function (adjacent) { + inDegrees.set(adjacent.id, inDegrees.get(adjacent.id) + 1); + }); + }); + + var positionMap = new Map(); // keeps the position for each node + var pastMap = new Map(); // keeps the predecessors(past) of a node + var queue = new LinkedList(); + inDegrees.forEach(function (value, key) { + if (value == 0) { + queue.push(key); + if (!fixedNodes) { + if (direction == "horizontal") { + positionMap.set(key, nodeIndexes.has(key) ? xCoords[nodeIndexes.get(key)] : dummyPositions.get(key)); + } else { + positionMap.set(key, nodeIndexes.has(key) ? yCoords[nodeIndexes.get(key)] : dummyPositions.get(key)); + } + } + } else { + positionMap.set(key, Number.NEGATIVE_INFINITY); + } + if (fixedNodes) { + pastMap.set(key, new Set([key])); + } + }); + + // align sources of each component in enforcement phase + if (fixedNodes) { + componentSources.forEach(function (component) { + var fixedIds = []; + component.forEach(function (nodeId) { + if (fixedNodes.has(nodeId)) { + fixedIds.push(nodeId); + } + }); + if (fixedIds.length > 0) { + var position = 0; + fixedIds.forEach(function (fixedId) { + if (direction == "horizontal") { + positionMap.set(fixedId, nodeIndexes.has(fixedId) ? xCoords[nodeIndexes.get(fixedId)] : dummyPositions.get(fixedId)); + position += positionMap.get(fixedId); + } else { + positionMap.set(fixedId, nodeIndexes.has(fixedId) ? yCoords[nodeIndexes.get(fixedId)] : dummyPositions.get(fixedId)); + position += positionMap.get(fixedId); + } + }); + position = position / fixedIds.length; + component.forEach(function (nodeId) { + if (!fixedNodes.has(nodeId)) { + positionMap.set(nodeId, position); + } + }); + } else { + var _position = 0; + component.forEach(function (nodeId) { + if (direction == "horizontal") { + _position += nodeIndexes.has(nodeId) ? xCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId); + } else { + _position += nodeIndexes.has(nodeId) ? yCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId); + } + }); + _position = _position / component.length; + component.forEach(function (nodeId) { + positionMap.set(nodeId, _position); + }); + } + }); + } + + // calculate positions of the nodes + + var _loop = function _loop() { + var currentNode = queue.shift(); + var neighbors = graph.get(currentNode); + neighbors.forEach(function (neighbor) { + if (positionMap.get(neighbor.id) < positionMap.get(currentNode) + neighbor.gap) { + if (fixedNodes && fixedNodes.has(neighbor.id)) { + var fixedPosition = void 0; + if (direction == "horizontal") { + fixedPosition = nodeIndexes.has(neighbor.id) ? xCoords[nodeIndexes.get(neighbor.id)] : dummyPositions.get(neighbor.id); + } else { + fixedPosition = nodeIndexes.has(neighbor.id) ? yCoords[nodeIndexes.get(neighbor.id)] : dummyPositions.get(neighbor.id); + } + positionMap.set(neighbor.id, fixedPosition); // TODO: may do unnecessary work + if (fixedPosition < positionMap.get(currentNode) + neighbor.gap) { + var diff = positionMap.get(currentNode) + neighbor.gap - fixedPosition; + pastMap.get(currentNode).forEach(function (nodeId) { + positionMap.set(nodeId, positionMap.get(nodeId) - diff); + }); + } + } else { + positionMap.set(neighbor.id, positionMap.get(currentNode) + neighbor.gap); + } + } + inDegrees.set(neighbor.id, inDegrees.get(neighbor.id) - 1); + if (inDegrees.get(neighbor.id) == 0) { + queue.push(neighbor.id); + } + if (fixedNodes) { + pastMap.set(neighbor.id, setUnion(pastMap.get(currentNode), pastMap.get(neighbor.id))); + } + }); + }; + + while (queue.length != 0) { + _loop(); + } + + // readjust position of the nodes after enforcement + if (fixedNodes) { + // find indegree count for each node + var sinkNodes = new Set(); + + graph.forEach(function (value, key) { + if (value.length == 0) { + sinkNodes.add(key); + } + }); + + var _components = []; + pastMap.forEach(function (value, key) { + if (sinkNodes.has(key)) { + var isFixedComponent = false; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = value[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var nodeId = _step2.value; + + if (fixedNodes.has(nodeId)) { + isFixedComponent = true; + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + if (!isFixedComponent) { + var isExist = false; + var existAt = void 0; + _components.forEach(function (component, index) { + if (component.has([].concat(_toConsumableArray(value))[0])) { + isExist = true; + existAt = index; + } + }); + if (!isExist) { + _components.push(new Set(value)); + } else { + value.forEach(function (ele) { + _components[existAt].add(ele); + }); + } + } + } + }); + + _components.forEach(function (component, index) { + var minBefore = Number.POSITIVE_INFINITY; + var minAfter = Number.POSITIVE_INFINITY; + var maxBefore = Number.NEGATIVE_INFINITY; + var maxAfter = Number.NEGATIVE_INFINITY; + + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = component[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var nodeId = _step3.value; + + var posBefore = void 0; + if (direction == "horizontal") { + posBefore = nodeIndexes.has(nodeId) ? xCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId); + } else { + posBefore = nodeIndexes.has(nodeId) ? yCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId); + } + var posAfter = positionMap.get(nodeId); + if (posBefore < minBefore) { + minBefore = posBefore; + } + if (posBefore > maxBefore) { + maxBefore = posBefore; + } + if (posAfter < minAfter) { + minAfter = posAfter; + } + if (posAfter > maxAfter) { + maxAfter = posAfter; + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + var diff = (minBefore + maxBefore) / 2 - (minAfter + maxAfter) / 2; + + var _iteratorNormalCompletion4 = true; + var _didIteratorError4 = false; + var _iteratorError4 = undefined; + + try { + for (var _iterator4 = component[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { + var _nodeId = _step4.value; + + positionMap.set(_nodeId, positionMap.get(_nodeId) + diff); + } + } catch (err) { + _didIteratorError4 = true; + _iteratorError4 = err; + } finally { + try { + if (!_iteratorNormalCompletion4 && _iterator4.return) { + _iterator4.return(); + } + } finally { + if (_didIteratorError4) { + throw _iteratorError4; + } + } + } + }); + } + + return positionMap; + }; + + // find transformation based on rel. placement constraints if there are both alignment and rel. placement constraints + // or if there are only rel. placement contraints where the largest component isn't sufficiently large + var applyReflectionForRelativePlacement = function applyReflectionForRelativePlacement(relativePlacementConstraints) { + // variables to count votes + var reflectOnY = 0, + notReflectOnY = 0; + var reflectOnX = 0, + notReflectOnX = 0; + + relativePlacementConstraints.forEach(function (constraint) { + if (constraint.left) { + xCoords[nodeIndexes.get(constraint.left)] - xCoords[nodeIndexes.get(constraint.right)] >= 0 ? reflectOnY++ : notReflectOnY++; + } else { + yCoords[nodeIndexes.get(constraint.top)] - yCoords[nodeIndexes.get(constraint.bottom)] >= 0 ? reflectOnX++ : notReflectOnX++; + } + }); + + if (reflectOnY > notReflectOnY && reflectOnX > notReflectOnX) { + for (var _i = 0; _i < nodeIndexes.size; _i++) { + xCoords[_i] = -1 * xCoords[_i]; + yCoords[_i] = -1 * yCoords[_i]; + } + } else if (reflectOnY > notReflectOnY) { + for (var _i2 = 0; _i2 < nodeIndexes.size; _i2++) { + xCoords[_i2] = -1 * xCoords[_i2]; + } + } else if (reflectOnX > notReflectOnX) { + for (var _i3 = 0; _i3 < nodeIndexes.size; _i3++) { + yCoords[_i3] = -1 * yCoords[_i3]; + } + } + }; + + // find weakly connected components in undirected graph + var findComponents = function findComponents(graph) { + // find weakly connected components in dag + var components = []; + var queue = new LinkedList(); + var visited = new Set(); + var count = 0; + + graph.forEach(function (value, key) { + if (!visited.has(key)) { + components[count] = []; + var _currentNode = key; + queue.push(_currentNode); + visited.add(_currentNode); + components[count].push(_currentNode); + + while (queue.length != 0) { + _currentNode = queue.shift(); + var neighbors = graph.get(_currentNode); + neighbors.forEach(function (neighbor) { + if (!visited.has(neighbor.id)) { + queue.push(neighbor.id); + visited.add(neighbor.id); + components[count].push(neighbor.id); + } + }); + } + count++; + } + }); + return components; + }; + + // return undirected version of given dag + var dagToUndirected = function dagToUndirected(dag) { + var undirected = new Map(); + + dag.forEach(function (value, key) { + undirected.set(key, []); + }); + + dag.forEach(function (value, key) { + value.forEach(function (adjacent) { + undirected.get(key).push(adjacent); + undirected.get(adjacent.id).push({ id: key, gap: adjacent.gap, direction: adjacent.direction }); + }); + }); + + return undirected; + }; + + // return reversed (directions inverted) version of given dag + var dagToReversed = function dagToReversed(dag) { + var reversed = new Map(); + + dag.forEach(function (value, key) { + reversed.set(key, []); + }); + + dag.forEach(function (value, key) { + value.forEach(function (adjacent) { + reversed.get(adjacent.id).push({ id: key, gap: adjacent.gap, direction: adjacent.direction }); + }); + }); + + return reversed; + }; + + /**** apply transformation to the initial draft layout to better align with constrained nodes ****/ + // solve the Orthogonal Procrustean Problem to rotate and/or reflect initial draft layout + // here we follow the solution in Chapter 20.2 of Borg, I. & Groenen, P. (2005) Modern Multidimensional Scaling: Theory and Applications + + /* construct source and target configurations */ + + var targetMatrix = []; // A - target configuration + var sourceMatrix = []; // B - source configuration + var standardTransformation = false; // false for no transformation, true for standart (Procrustes) transformation (rotation and/or reflection) + var reflectionType = false; // false/true for reflection check, 'reflectOnX', 'reflectOnY' or 'reflectOnBoth' for reflection type if necessary + var fixedNodes = new Set(); + var dag = new Map(); // adjacency list to keep directed acyclic graph (dag) that consists of relative placement constraints + var dagUndirected = new Map(); // undirected version of the dag + var components = []; // weakly connected components + + // fill fixedNodes collection to use later + if (constraints.fixedNodeConstraint) { + constraints.fixedNodeConstraint.forEach(function (nodeData) { + fixedNodes.add(nodeData.nodeId); + }); + } + + // construct dag from relative placement constraints + if (constraints.relativePlacementConstraint) { + // construct both directed and undirected version of the dag + constraints.relativePlacementConstraint.forEach(function (constraint) { + if (constraint.left) { + if (dag.has(constraint.left)) { + dag.get(constraint.left).push({ id: constraint.right, gap: constraint.gap, direction: "horizontal" }); + } else { + dag.set(constraint.left, [{ id: constraint.right, gap: constraint.gap, direction: "horizontal" }]); + } + if (!dag.has(constraint.right)) { + dag.set(constraint.right, []); + } + } else { + if (dag.has(constraint.top)) { + dag.get(constraint.top).push({ id: constraint.bottom, gap: constraint.gap, direction: "vertical" }); + } else { + dag.set(constraint.top, [{ id: constraint.bottom, gap: constraint.gap, direction: "vertical" }]); + } + if (!dag.has(constraint.bottom)) { + dag.set(constraint.bottom, []); + } + } + }); + + dagUndirected = dagToUndirected(dag); + components = findComponents(dagUndirected); + } + + if (CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING) { + // first check fixed node constraint + if (constraints.fixedNodeConstraint && constraints.fixedNodeConstraint.length > 1) { + constraints.fixedNodeConstraint.forEach(function (nodeData, i) { + targetMatrix[i] = [nodeData.position.x, nodeData.position.y]; + sourceMatrix[i] = [xCoords[nodeIndexes.get(nodeData.nodeId)], yCoords[nodeIndexes.get(nodeData.nodeId)]]; + }); + standardTransformation = true; + } else if (constraints.alignmentConstraint) { + (function () { + // then check alignment constraint + var count = 0; + if (constraints.alignmentConstraint.vertical) { + var verticalAlign = constraints.alignmentConstraint.vertical; + + var _loop2 = function _loop2(_i4) { + var alignmentSet = new Set(); + verticalAlign[_i4].forEach(function (nodeId) { + alignmentSet.add(nodeId); + }); + var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) { + return fixedNodes.has(x); + })); + var xPos = void 0; + if (intersection.size > 0) xPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else xPos = calculateAvgPosition(alignmentSet).x; + + verticalAlign[_i4].forEach(function (nodeId) { + targetMatrix[count] = [xPos, yCoords[nodeIndexes.get(nodeId)]]; + sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]]; + count++; + }); + }; + + for (var _i4 = 0; _i4 < verticalAlign.length; _i4++) { + _loop2(_i4); + } + standardTransformation = true; + } + if (constraints.alignmentConstraint.horizontal) { + var horizontalAlign = constraints.alignmentConstraint.horizontal; + + var _loop3 = function _loop3(_i5) { + var alignmentSet = new Set(); + horizontalAlign[_i5].forEach(function (nodeId) { + alignmentSet.add(nodeId); + }); + var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) { + return fixedNodes.has(x); + })); + var yPos = void 0; + if (intersection.size > 0) yPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else yPos = calculateAvgPosition(alignmentSet).y; + + horizontalAlign[_i5].forEach(function (nodeId) { + targetMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yPos]; + sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]]; + count++; + }); + }; + + for (var _i5 = 0; _i5 < horizontalAlign.length; _i5++) { + _loop3(_i5); + } + standardTransformation = true; + } + if (constraints.relativePlacementConstraint) { + reflectionType = true; + } + })(); + } else if (constraints.relativePlacementConstraint) { + // finally check relative placement constraint + // find largest component in dag + var largestComponentSize = 0; + var largestComponentIndex = 0; + for (var _i6 = 0; _i6 < components.length; _i6++) { + if (components[_i6].length > largestComponentSize) { + largestComponentSize = components[_i6].length; + largestComponentIndex = _i6; + } + } + // if largest component isn't dominant, then take the votes for reflection + if (largestComponentSize < dagUndirected.size / 2) { + applyReflectionForRelativePlacement(constraints.relativePlacementConstraint); + standardTransformation = false; + reflectionType = false; + } else { + // use largest component for transformation + // construct horizontal and vertical subgraphs in the largest component + var subGraphOnHorizontal = new Map(); + var subGraphOnVertical = new Map(); + var constraintsInlargestComponent = []; + + components[largestComponentIndex].forEach(function (nodeId) { + dag.get(nodeId).forEach(function (adjacent) { + if (adjacent.direction == "horizontal") { + if (subGraphOnHorizontal.has(nodeId)) { + subGraphOnHorizontal.get(nodeId).push(adjacent); + } else { + subGraphOnHorizontal.set(nodeId, [adjacent]); + } + if (!subGraphOnHorizontal.has(adjacent.id)) { + subGraphOnHorizontal.set(adjacent.id, []); + } + constraintsInlargestComponent.push({ left: nodeId, right: adjacent.id }); + } else { + if (subGraphOnVertical.has(nodeId)) { + subGraphOnVertical.get(nodeId).push(adjacent); + } else { + subGraphOnVertical.set(nodeId, [adjacent]); + } + if (!subGraphOnVertical.has(adjacent.id)) { + subGraphOnVertical.set(adjacent.id, []); + } + constraintsInlargestComponent.push({ top: nodeId, bottom: adjacent.id }); + } + }); + }); + + applyReflectionForRelativePlacement(constraintsInlargestComponent); + reflectionType = false; + + // calculate appropriate positioning for subgraphs + var positionMapHorizontal = findAppropriatePositionForRelativePlacement(subGraphOnHorizontal, "horizontal"); + var positionMapVertical = findAppropriatePositionForRelativePlacement(subGraphOnVertical, "vertical"); + + // construct source and target configuration + components[largestComponentIndex].forEach(function (nodeId, i) { + sourceMatrix[i] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]]; + targetMatrix[i] = []; + if (positionMapHorizontal.has(nodeId)) { + targetMatrix[i][0] = positionMapHorizontal.get(nodeId); + } else { + targetMatrix[i][0] = xCoords[nodeIndexes.get(nodeId)]; + } + if (positionMapVertical.has(nodeId)) { + targetMatrix[i][1] = positionMapVertical.get(nodeId); + } else { + targetMatrix[i][1] = yCoords[nodeIndexes.get(nodeId)]; + } + }); + + standardTransformation = true; + } + } + + // if transformation is required, then calculate and apply transformation matrix + if (standardTransformation) { + /* calculate transformation matrix */ + var transformationMatrix = void 0; + var targetMatrixTranspose = Matrix.transpose(targetMatrix); // A' + var sourceMatrixTranspose = Matrix.transpose(sourceMatrix); // B' + + // centralize transpose matrices + for (var _i7 = 0; _i7 < targetMatrixTranspose.length; _i7++) { + targetMatrixTranspose[_i7] = Matrix.multGamma(targetMatrixTranspose[_i7]); + sourceMatrixTranspose[_i7] = Matrix.multGamma(sourceMatrixTranspose[_i7]); + } + + // do actual calculation for transformation matrix + var tempMatrix = Matrix.multMat(targetMatrixTranspose, Matrix.transpose(sourceMatrixTranspose)); // tempMatrix = A'B + var SVDResult = SVD.svd(tempMatrix); // SVD(A'B) = USV', svd function returns U, S and V + transformationMatrix = Matrix.multMat(SVDResult.V, Matrix.transpose(SVDResult.U)); // transformationMatrix = T = VU' + + /* apply found transformation matrix to obtain final draft layout */ + for (var _i8 = 0; _i8 < nodeIndexes.size; _i8++) { + var temp1 = [xCoords[_i8], yCoords[_i8]]; + var temp2 = [transformationMatrix[0][0], transformationMatrix[1][0]]; + var temp3 = [transformationMatrix[0][1], transformationMatrix[1][1]]; + xCoords[_i8] = Matrix.dotProduct(temp1, temp2); + yCoords[_i8] = Matrix.dotProduct(temp1, temp3); + } + + // applied only both alignment and rel. placement constraints exist + if (reflectionType) { + applyReflectionForRelativePlacement(constraints.relativePlacementConstraint); + } + } + } + + if (CoSEConstants.ENFORCE_CONSTRAINTS) { + /**** enforce constraints on the transformed draft layout ****/ + + /* first enforce fixed node constraint */ + + if (constraints.fixedNodeConstraint && constraints.fixedNodeConstraint.length > 0) { + var translationAmount = { x: 0, y: 0 }; + constraints.fixedNodeConstraint.forEach(function (nodeData, i) { + var posInTheory = { x: xCoords[nodeIndexes.get(nodeData.nodeId)], y: yCoords[nodeIndexes.get(nodeData.nodeId)] }; + var posDesired = nodeData.position; + var posDiff = calculatePositionDiff(posDesired, posInTheory); + translationAmount.x += posDiff.x; + translationAmount.y += posDiff.y; + }); + translationAmount.x /= constraints.fixedNodeConstraint.length; + translationAmount.y /= constraints.fixedNodeConstraint.length; + + xCoords.forEach(function (value, i) { + xCoords[i] += translationAmount.x; + }); + + yCoords.forEach(function (value, i) { + yCoords[i] += translationAmount.y; + }); + + constraints.fixedNodeConstraint.forEach(function (nodeData) { + xCoords[nodeIndexes.get(nodeData.nodeId)] = nodeData.position.x; + yCoords[nodeIndexes.get(nodeData.nodeId)] = nodeData.position.y; + }); + } + + /* then enforce alignment constraint */ + + if (constraints.alignmentConstraint) { + if (constraints.alignmentConstraint.vertical) { + var xAlign = constraints.alignmentConstraint.vertical; + + var _loop4 = function _loop4(_i9) { + var alignmentSet = new Set(); + xAlign[_i9].forEach(function (nodeId) { + alignmentSet.add(nodeId); + }); + var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) { + return fixedNodes.has(x); + })); + var xPos = void 0; + if (intersection.size > 0) xPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else xPos = calculateAvgPosition(alignmentSet).x; + + alignmentSet.forEach(function (nodeId) { + if (!fixedNodes.has(nodeId)) xCoords[nodeIndexes.get(nodeId)] = xPos; + }); + }; + + for (var _i9 = 0; _i9 < xAlign.length; _i9++) { + _loop4(_i9); + } + } + if (constraints.alignmentConstraint.horizontal) { + var yAlign = constraints.alignmentConstraint.horizontal; + + var _loop5 = function _loop5(_i10) { + var alignmentSet = new Set(); + yAlign[_i10].forEach(function (nodeId) { + alignmentSet.add(nodeId); + }); + var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) { + return fixedNodes.has(x); + })); + var yPos = void 0; + if (intersection.size > 0) yPos = yCoords[nodeIndexes.get(intersection.values().next().value)];else yPos = calculateAvgPosition(alignmentSet).y; + + alignmentSet.forEach(function (nodeId) { + if (!fixedNodes.has(nodeId)) yCoords[nodeIndexes.get(nodeId)] = yPos; + }); + }; + + for (var _i10 = 0; _i10 < yAlign.length; _i10++) { + _loop5(_i10); + } + } + } + + /* finally enforce relative placement constraint */ + + if (constraints.relativePlacementConstraint) { + (function () { + var nodeToDummyForVerticalAlignment = new Map(); + var nodeToDummyForHorizontalAlignment = new Map(); + var dummyToNodeForVerticalAlignment = new Map(); + var dummyToNodeForHorizontalAlignment = new Map(); + var dummyPositionsForVerticalAlignment = new Map(); + var dummyPositionsForHorizontalAlignment = new Map(); + var fixedNodesOnHorizontal = new Set(); + var fixedNodesOnVertical = new Set(); + + // fill maps and sets + fixedNodes.forEach(function (nodeId) { + fixedNodesOnHorizontal.add(nodeId); + fixedNodesOnVertical.add(nodeId); + }); + + if (constraints.alignmentConstraint) { + if (constraints.alignmentConstraint.vertical) { + var verticalAlignment = constraints.alignmentConstraint.vertical; + + var _loop6 = function _loop6(_i11) { + dummyToNodeForVerticalAlignment.set("dummy" + _i11, []); + verticalAlignment[_i11].forEach(function (nodeId) { + nodeToDummyForVerticalAlignment.set(nodeId, "dummy" + _i11); + dummyToNodeForVerticalAlignment.get("dummy" + _i11).push(nodeId); + if (fixedNodes.has(nodeId)) { + fixedNodesOnHorizontal.add("dummy" + _i11); + } + }); + dummyPositionsForVerticalAlignment.set("dummy" + _i11, xCoords[nodeIndexes.get(verticalAlignment[_i11][0])]); + }; + + for (var _i11 = 0; _i11 < verticalAlignment.length; _i11++) { + _loop6(_i11); + } + } + if (constraints.alignmentConstraint.horizontal) { + var horizontalAlignment = constraints.alignmentConstraint.horizontal; + + var _loop7 = function _loop7(_i12) { + dummyToNodeForHorizontalAlignment.set("dummy" + _i12, []); + horizontalAlignment[_i12].forEach(function (nodeId) { + nodeToDummyForHorizontalAlignment.set(nodeId, "dummy" + _i12); + dummyToNodeForHorizontalAlignment.get("dummy" + _i12).push(nodeId); + if (fixedNodes.has(nodeId)) { + fixedNodesOnVertical.add("dummy" + _i12); + } + }); + dummyPositionsForHorizontalAlignment.set("dummy" + _i12, yCoords[nodeIndexes.get(horizontalAlignment[_i12][0])]); + }; + + for (var _i12 = 0; _i12 < horizontalAlignment.length; _i12++) { + _loop7(_i12); + } + } + } + + // construct horizontal and vertical dags (subgraphs) from overall dag + var dagOnHorizontal = new Map(); + var dagOnVertical = new Map(); + + var _loop8 = function _loop8(nodeId) { + dag.get(nodeId).forEach(function (adjacent) { + var sourceId = void 0; + var targetNode = void 0; + if (adjacent["direction"] == "horizontal") { + sourceId = nodeToDummyForVerticalAlignment.get(nodeId) ? nodeToDummyForVerticalAlignment.get(nodeId) : nodeId; + if (nodeToDummyForVerticalAlignment.get(adjacent.id)) { + targetNode = { id: nodeToDummyForVerticalAlignment.get(adjacent.id), gap: adjacent.gap, direction: adjacent.direction }; + } else { + targetNode = adjacent; + } + if (dagOnHorizontal.has(sourceId)) { + dagOnHorizontal.get(sourceId).push(targetNode); + } else { + dagOnHorizontal.set(sourceId, [targetNode]); + } + if (!dagOnHorizontal.has(targetNode.id)) { + dagOnHorizontal.set(targetNode.id, []); + } + } else { + sourceId = nodeToDummyForHorizontalAlignment.get(nodeId) ? nodeToDummyForHorizontalAlignment.get(nodeId) : nodeId; + if (nodeToDummyForHorizontalAlignment.get(adjacent.id)) { + targetNode = { id: nodeToDummyForHorizontalAlignment.get(adjacent.id), gap: adjacent.gap, direction: adjacent.direction }; + } else { + targetNode = adjacent; + } + if (dagOnVertical.has(sourceId)) { + dagOnVertical.get(sourceId).push(targetNode); + } else { + dagOnVertical.set(sourceId, [targetNode]); + } + if (!dagOnVertical.has(targetNode.id)) { + dagOnVertical.set(targetNode.id, []); + } + } + }); + }; + + var _iteratorNormalCompletion5 = true; + var _didIteratorError5 = false; + var _iteratorError5 = undefined; + + try { + for (var _iterator5 = dag.keys()[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { + var nodeId = _step5.value; + + _loop8(nodeId); + } + + // find source nodes of each component in horizontal and vertical dags + } catch (err) { + _didIteratorError5 = true; + _iteratorError5 = err; + } finally { + try { + if (!_iteratorNormalCompletion5 && _iterator5.return) { + _iterator5.return(); + } + } finally { + if (_didIteratorError5) { + throw _iteratorError5; + } + } + } + + var undirectedOnHorizontal = dagToUndirected(dagOnHorizontal); + var undirectedOnVertical = dagToUndirected(dagOnVertical); + var componentsOnHorizontal = findComponents(undirectedOnHorizontal); + var componentsOnVertical = findComponents(undirectedOnVertical); + var reversedDagOnHorizontal = dagToReversed(dagOnHorizontal); + var reversedDagOnVertical = dagToReversed(dagOnVertical); + var componentSourcesOnHorizontal = []; + var componentSourcesOnVertical = []; + + componentsOnHorizontal.forEach(function (component, index) { + componentSourcesOnHorizontal[index] = []; + component.forEach(function (nodeId) { + if (reversedDagOnHorizontal.get(nodeId).length == 0) { + componentSourcesOnHorizontal[index].push(nodeId); + } + }); + }); + + componentsOnVertical.forEach(function (component, index) { + componentSourcesOnVertical[index] = []; + component.forEach(function (nodeId) { + if (reversedDagOnVertical.get(nodeId).length == 0) { + componentSourcesOnVertical[index].push(nodeId); + } + }); + }); + + // calculate appropriate positioning for subgraphs + var positionMapHorizontal = findAppropriatePositionForRelativePlacement(dagOnHorizontal, "horizontal", fixedNodesOnHorizontal, dummyPositionsForVerticalAlignment, componentSourcesOnHorizontal); + var positionMapVertical = findAppropriatePositionForRelativePlacement(dagOnVertical, "vertical", fixedNodesOnVertical, dummyPositionsForHorizontalAlignment, componentSourcesOnVertical); + + // update positions of the nodes based on relative placement constraints + + var _loop9 = function _loop9(key) { + if (dummyToNodeForVerticalAlignment.get(key)) { + dummyToNodeForVerticalAlignment.get(key).forEach(function (nodeId) { + xCoords[nodeIndexes.get(nodeId)] = positionMapHorizontal.get(key); + }); + } else { + xCoords[nodeIndexes.get(key)] = positionMapHorizontal.get(key); + } + }; + + var _iteratorNormalCompletion6 = true; + var _didIteratorError6 = false; + var _iteratorError6 = undefined; + + try { + for (var _iterator6 = positionMapHorizontal.keys()[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { + var key = _step6.value; + + _loop9(key); + } + } catch (err) { + _didIteratorError6 = true; + _iteratorError6 = err; + } finally { + try { + if (!_iteratorNormalCompletion6 && _iterator6.return) { + _iterator6.return(); + } + } finally { + if (_didIteratorError6) { + throw _iteratorError6; + } + } + } + + var _loop10 = function _loop10(key) { + if (dummyToNodeForHorizontalAlignment.get(key)) { + dummyToNodeForHorizontalAlignment.get(key).forEach(function (nodeId) { + yCoords[nodeIndexes.get(nodeId)] = positionMapVertical.get(key); + }); + } else { + yCoords[nodeIndexes.get(key)] = positionMapVertical.get(key); + } + }; + + var _iteratorNormalCompletion7 = true; + var _didIteratorError7 = false; + var _iteratorError7 = undefined; + + try { + for (var _iterator7 = positionMapVertical.keys()[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { + var key = _step7.value; + + _loop10(key); + } + } catch (err) { + _didIteratorError7 = true; + _iteratorError7 = err; + } finally { + try { + if (!_iteratorNormalCompletion7 && _iterator7.return) { + _iterator7.return(); + } + } finally { + if (_didIteratorError7) { + throw _iteratorError7; + } + } + } + })(); + } + } + + // assign new coordinates to nodes after constraint handling + for (var _i13 = 0; _i13 < allNodes.length; _i13++) { + var _node = allNodes[_i13]; + if (_node.getChild() == null) { + _node.setCenter(xCoords[nodeIndexes.get(_node.id)], yCoords[nodeIndexes.get(_node.id)]); + } + } +}; + +module.exports = ConstraintHandler; + +/***/ }), + +/***/ 551: +/***/ ((module) => { + +module.exports = __WEBPACK_EXTERNAL_MODULE__551__; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(45); +/******/ +/******/ return __webpack_exports__; +/******/ })() +; +}); \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-dagre.js b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-dagre.js new file mode 100644 index 0000000..974c1a5 --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-dagre.js @@ -0,0 +1,535 @@ +/*! + * cytoscape-dagre 3.0.0 + * https://github.com/cytoscape/cytoscape.js-dagre + * License: MIT + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.cytoscapeDagre = factory()); +})(this, (function () { 'use strict'; + + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { + t && (r = t); + var n = 0, + F = function () {}; + return { + s: F, + n: function () { + return n >= r.length ? { + done: true + } : { + done: false, + value: r[n++] + }; + }, + e: function (r) { + throw r; + }, + f: F + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, + a = true, + u = false; + return { + s: function () { + t = t.call(r); + }, + n: function () { + var r = t.next(); + return a = r.done, r; + }, + e: function (r) { + u = true, o = r; + }, + f: function () { + try { + a || null == t.return || t.return(); + } finally { + if (u) throw o; + } + } + }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + + /** + * Dagre algorithmic options. The default value of dagre.js is used + * when the option is left undefined here. + */ + var defaults = { + /** + * the separation between adjacent nodes in the same rank + */ + nodeSep: undefined, + /** + * The separation between adjacent edges in the same rank + */ + edgeSep: undefined, + /** + * The separation between each rank in the layout + */ + rankSep: undefined, + /** + * Direction in which ranks flow: `'TB'` for top to bottom flow, `'LR'` for left to right, + */ + rankDir: undefined, + /** + * alignment for rank nodes. Can be `'UL'`, `'UR'`, `'DL'`, or `'DR'`, + * where `U` = up, `D` = down, `L` = left, and `R` = right + */ + align: undefined, + /** + * If set to `'greedy'`, uses a greedy heuristic for finding a feedback arc set for a graph. + * A feedback arc set is a set of edges that can be removed to make a graph acyclic. + */ + acyclicer: undefined, + /** + * Type of algorithm to assigns a rank to each node in the input graph. + * Possible values: + * * `'network-simplex'`, + * * `'tight-tree'` or + * * `'longest-path'` + */ + ranker: undefined, + /** + * Number of ranks to keep between the source and target of the edge + */ + minLen: function minLen(_edge) { + return 1; + }, + /** + * Higher weight edges are generally made shorter and straighter than lower weight edges} _edge + */ + edgeWeight: function edgeWeight(_edge) { + return 1; + }, + /* general layout options */ + /** + * whether to fit to viewport + */ + fit: true, + /** + * Fit padding + */ + padding: 30, + /** + * Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + */ + spacingFactor: undefined, + /** + * Whether labels should be included in determining the space used by a node + */ + nodeDimensionsIncludeLabels: false, + /** + * Enables bezier curves using dagre's edge control points + */ + useDagreEdgeControlPoints: false, + /** + * Automatically adds edge class '.useDagreEdgeControlPoints' to all edges and configure it with this.dagreEdgeStyle. + * If set to `false` and `useDagreEdgeControlPoints` is `true` then apply `this.dagreEdgeStyle` yourself. + */ + automaticDagreEdgeStyle: false, + /** + * Defines the style for rendering dagre edge control points stored by the layout algorithm + * if `useDagreEdgeControlPoints` is `true` and `automaticDagreEdgeStyle` is `true` + */ + dagreEdgeStyle: { + 'curve-style': 'unbundled-bezier', + 'control-point-weights': function controlPointWeights(ele) { + return ele.scratch('controlPointWeights'); + }, + 'control-point-distances': function controlPointDistances(ele) { + return ele.scratch('controlPointDistances'); + }, + 'edge-distances': 'intersection', + 'edge-ends-overlap': false + }, + /** + * Whether to transition the node positions + */ + animate: false, + /** + * Whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions + */ + animateFilter: function animateFilter(_node, _i) { + return true; + }, + /** + * Duration of animation in ms if enabled + */ + animationDuration: 500, + /** + * Easing of animation, if enabled + */ + animationEasing: undefined, + /** + * Constrain outermost layout bounds; `{ x1, y1, x2, y2 }` or `{ x1, y1, w, h }` + */ + boundingBox: undefined, + /** + * A function that applies a transform to the final node position + */ + transform: function transform(node, pos) { + return pos; + }, + /** + * On layoutready execute this function + */ + ready: function ready() {}, + /** + * A sorting function to order the nodes and edges; e.g. `function(a, b){ return a.data('weight') - b.data('weight')`. } + * Because cytoscape dagre creates a directed graph, and directed graphs use the node order as a tie breaker when + * defining the topology of a graph, this sort function can help ensure the correct order of the nodes/edges. + * This feature is most useful when adding and removing the same nodes and edges multiple times in a graph, + * but it can also help avoid sprurious edge crossings between ranks. + */ + sort: undefined, + /** + * on layoutstop, execute this function + */ + stop: function stop() {} + }; + + // Simple, internal Object.assign() polyfill for options objects etc. + + var assign = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + srcs.forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + return tgt; + }; + + var ge=Object.defineProperty;var hn=(e,n,t)=>n in e?ge(e,n,{enumerable:true,configurable:true,writable:true,value:t}):e[n]=t;var fn=(e,n)=>{for(var t in n)ge(e,t,{get:n[t],enumerable:true});};var pe=(e,n,t)=>hn(e,n+"",t);var z={};fn(z,{Graph:()=>p,alg:()=>R,json:()=>ye,version:()=>pn});var bn=Object.defineProperty,Le=(e,n)=>{for(var t in n)bn(e,t,{get:n[t],enumerable:true});},p=class{constructor(e){this._isDirected=true,this._isMultigraph=false,this._isCompound=false,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},e&&(this._isDirected="directed"in e?e.directed:true,this._isMultigraph="multigraph"in e?e.multigraph:false,this._isCompound="compound"in e?e.compound:false),this._isCompound&&(this._parent={},this._children={},this._children["\0"]={});}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return typeof e!="function"?this._defaultNodeLabelFn=()=>e:this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(e=>Object.keys(this._in[e]).length===0)}sinks(){return this.nodes().filter(e=>Object.keys(this._out[e]).length===0)}setNodes(e,n){return e.forEach(t=>{n!==void 0?this.setNode(t,n):this.setNode(t);}),this}setNode(e,n){return e in this._nodes?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]="\0",this._children[e]={},this._children["\0"][e]=true),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return e in this._nodes}removeNode(e){if(e in this._nodes){let n=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],this.children(e).forEach(t=>{this.setParent(t);}),delete this._children[e]),Object.keys(this._in[e]).forEach(n),delete this._in[e],delete this._preds[e],Object.keys(this._out[e]).forEach(n),delete this._out[e],delete this._sucs[e],--this._nodeCount;}return this}setParent(e,n){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(n===void 0)n="\0";else {n+="";for(let t=n;t!==void 0;t=this.parent(t))if(t===e)throw new Error("Setting "+n+" as parent of "+e+" would create a cycle");this.setNode(n);}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=true,this}parent(e){if(this._isCompound){let n=this._parent[e];if(n!=="\0")return n}}children(e="\0"){if(this._isCompound){let n=this._children[e];if(n)return Object.keys(n)}else {if(e==="\0")return this.nodes();if(this.hasNode(e))return []}return []}predecessors(e){let n=this._preds[e];if(n)return Object.keys(n)}successors(e){let n=this._sucs[e];if(n)return Object.keys(n)}neighbors(e){let n=this.predecessors(e);if(n){let t=new Set(n);for(let r of this.successors(e))t.add(r);return Array.from(t.values())}}isLeaf(e){let n;return this.isDirected()?n=this.successors(e):n=this.neighbors(e),n.length===0}filterNodes(e){let n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph()),Object.entries(this._nodes).forEach(([o,i])=>{e(o)&&n.setNode(o,i);}),Object.values(this._edgeObjs).forEach(o=>{n.hasNode(o.v)&&n.hasNode(o.w)&&n.setEdge(o,this.edge(o));});let t={},r=o=>{let i=this.parent(o);return !i||n.hasNode(i)?(t[o]=i!=null?i:void 0,i!=null?i:void 0):i in t?t[i]:r(i)};return this._isCompound&&n.nodes().forEach(o=>n.setParent(o,r(o))),n}setDefaultEdgeLabel(e){return typeof e!="function"?this._defaultEdgeLabelFn=()=>e:this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(e,n){return e.reduce((t,r)=>(n!==void 0?this.setEdge(t,r,n):this.setEdge(t,r),r)),this}setEdge(e,n,t,r){let o,i,s,a,d=false;typeof e=="object"&&e!==null&&"v"in e?(o=e.v,i=e.w,s=e.name,arguments.length===2&&(a=n,d=true)):(o=e,i=n,s=r,arguments.length>2&&(a=t,d=true)),o=""+o,i=""+i,s!==void 0&&(s=""+s);let l=C(this._isDirected,o,i,s);if(l in this._edgeLabels)return d&&(this._edgeLabels[l]=a),this;if(s!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(o),this.setNode(i),this._edgeLabels[l]=d?a:this._defaultEdgeLabelFn(o,i,s);let u=gn(this._isDirected,o,i,s);return o=u.v,i=u.w,Object.freeze(u),this._edgeObjs[l]=u,me(this._preds[i],o),me(this._sucs[o],i),this._in[i][l]=u,this._out[o][l]=u,this._edgeCount++,this}edge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t);return this._edgeLabels[r]}edgeAsObj(e,n,t){let r=arguments.length===1?this.edge(e):this.edge(e,n,t);return typeof r!="object"?{label:r}:r}hasEdge(e,n,t){return (arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t))in this._edgeLabels}removeEdge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t),o=this._edgeObjs[r];if(o){let i=o.v,s=o.w;delete this._edgeLabels[r],delete this._edgeObjs[r],Ee(this._preds[s],i),Ee(this._sucs[i],s),delete this._in[s][r],delete this._out[i][r],this._edgeCount--;}return this}inEdges(e,n){return this.isDirected()?this.filterEdges(this._in[e],e,n):this.nodeEdges(e,n)}outEdges(e,n){return this.isDirected()?this.filterEdges(this._out[e],e,n):this.nodeEdges(e,n)}nodeEdges(e,n){if(e in this._nodes)return this.filterEdges({...this._in[e],...this._out[e]},e,n)}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e];}filterEdges(e,n,t){if(!e)return;let r=Object.values(e);return t?r.filter(o=>o.v===n&&o.w===t||o.v===t&&o.w===n):r}};function me(e,n){e[n]?e[n]++:e[n]=1;}function Ee(e,n){e[n]!==void 0&&!--e[n]&&delete e[n];}function C(e,n,t,r){let o=""+n,i=""+t;if(!e&&o>i){let s=o;o=i,i=s;}return o+""+i+""+(r===void 0?"\0":r)}function gn(e,n,t,r){let o=""+n,i=""+t;if(!e&&o>i){let a=o;o=i,i=a;}let s={v:o,w:i};return r&&(s.name=r),s}function Y(e,n){return C(e,n.v,n.w,n.name)}var pn="4.0.1",ye={};Le(ye,{read:()=>yn,write:()=>mn});function mn(e){let n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:En(e),edges:Ln(e)},t=e.graph();return t!==void 0&&(n.value=structuredClone(t)),n}function En(e){return e.nodes().map(n=>{let t=e.node(n),r=e.parent(n),o={v:n};return t!==void 0&&(o.value=t),r!==void 0&&(o.parent=r),o})}function Ln(e){return e.edges().map(n=>{let t=e.edge(n),r={v:n.v,w:n.w};return n.name!==void 0&&(r.name=n.name),t!==void 0&&(r.value=t),r})}function yn(e){let n=new p(e.options);return e.value!==void 0&&n.setGraph(e.value),e.nodes.forEach(t=>{n.setNode(t.v,t.value),t.parent&&n.setParent(t.v,t.parent);}),e.edges.forEach(t=>{n.setEdge({v:t.v,w:t.w,name:t.name},t.value);}),n}var R={};Le(R,{CycleException:()=>D,bellmanFord:()=>we,components:()=>Gn,dijkstra:()=>F,dijkstraAll:()=>_n,findCycles:()=>xn,floydWarshall:()=>On,isAcyclic:()=>Cn,postorder:()=>Pn,preorder:()=>Mn,prim:()=>jn,shortestPaths:()=>Sn,tarjan:()=>Ge,topsort:()=>ke});var wn=()=>1;function we(e,n,t,r){return Nn(e,String(n),t||wn,r||function(o){return e.outEdges(o)})}function Nn(e,n,t,r){let o={},i,s=0,a=e.nodes(),d=function(c){let h=t(c);o[c.v].distance+he.key)}has(e){return e in this._keyIndices}priority(e){let n=this._keyIndices[e];if(n!==void 0)return this._arr[n].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(e,n){let t=this._keyIndices,r=String(e);if(!(r in t)){let o=this._arr,i=o.length;return t[r]=i,o.push({key:r,priority:n}),this._decrease(i),true}return false}removeMin(){this._swap(0,this._arr.length-1);let e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key}decrease(e,n){let t=this._keyIndices[e];if(t===void 0)throw new Error(`Key not found: ${e}`);let r=this._arr[t].priority;if(n>r)throw new Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${n}`);this._arr[t].priority=n,this._decrease(t);}_heapify(e){let n=this._arr,t=2*e,r=t+1,o=e;t>1,!(n[r].priority1;function F(e,n,t,r){let o=function(i){return e.outEdges(i)};return vn(e,String(n),t||kn,r||o)}function vn(e,n,t,r){let o={},i=new Ne,s,a,d=function(l){let u=l.v!==s?l.v:l.w,c=o[u],h=t(l),f=a.distance+h;if(h<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+l+" Weight: "+h);f0&&(s=i.removeMin(),a=o[s],a.distance!==Number.POSITIVE_INFINITY);)r(s).forEach(d);return o}function _n(e,n,t){return e.nodes().reduce(function(r,o){return r[o]=F(e,o,n,t),r},{})}function Ge(e){let n=0,t=[],r={},o=[];function i(s){let a=r[s]={onStack:true,lowlink:n,index:n++};if(t.push(s),e.successors(s).forEach(function(d){d in r?r[d].onStack&&(a.lowlink=Math.min(a.lowlink,r[d].index)):(i(d),a.lowlink=Math.min(a.lowlink,r[d].lowlink));}),a.lowlink===a.index){let d=[],l;do l=t.pop(),r[l].onStack=false,d.push(l);while(s!==l);o.push(d);}}return e.nodes().forEach(function(s){s in r||i(s);}),o}function xn(e){return Ge(e).filter(function(n){return n.length>1||n.length===1&&e.hasEdge(n[0],n[0])})}var Tn=()=>1;function On(e,n,t){return In(e,n||Tn,t||function(r){return e.outEdges(r)})}function In(e,n,t){let r={},o=e.nodes();return o.forEach(function(i){r[i]={},r[i][i]={distance:0,predecessor:""},o.forEach(function(s){i!==s&&(r[i][s]={distance:Number.POSITIVE_INFINITY,predecessor:""});}),t(i).forEach(function(s){let a=s.v===i?s.w:s.v,d=n(s);r[i][a]={distance:d,predecessor:i};});}),o.forEach(function(i){let s=r[i];o.forEach(function(a){let d=r[a];o.forEach(function(l){let u=d[i],c=s[l],h=d[l],f=u.distance+c.distance;f{var d;return (d=e.isDirected()?e.successors(a):e.neighbors(a))!=null?d:[]}),s={};return n.forEach(function(a){if(!e.hasNode(a))throw new Error("Graph does not have node: "+a);o=ve(e,a,t==="post",s,i,r,o);}),o}function ve(e,n,t,r,o,i,s){return n in r||(r[n]=true,t||(s=i(s,n)),o(n).forEach(function(a){s=ve(e,a,t,r,o,i,s);}),t&&(s=i(s,n))),s}function _e(e,n,t){return Rn(e,n,t,function(r,o){return r.push(o),r},[])}function Pn(e,n){return _e(e,n,"post")}function Mn(e,n){return _e(e,n,"pre")}function jn(e,n){let t=new p,r={},o=new Ne,i;function s(d){let l=d.v===i?d.w:d.v,u=o.priority(l);if(u!==void 0){let c=n(d);c0;){if(i=o.removeMin(),i in r)t.setEdge(i,r[i]);else {if(a)throw new Error("Input graph is not connected: "+e);a=true;}e.nodeEdges(i).forEach(s);}return t}function Sn(e,n,t,r){return Fn(e,n,t,r!=null?r:(o=>{let i=e.outEdges(o);return i!=null?i:[]}))}function Fn(e,n,t,r){if(t===void 0)return F(e,n,t,r);let o=false,i=e.nodes();for(let s=0;sn.setNode(t,e.node(t))),e.edges().forEach(t=>{let r=n.edge(t.v,t.w)||{weight:0,minlen:1},o=e.edge(t);n.setEdge(t.v,t.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)});}),n}function A(e){let n=new p({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(t=>{e.children(t).length||n.setNode(t,e.node(t));}),e.edges().forEach(t=>{n.setEdge(t,e.edge(t));}),n}function H(e,n){let t=e.x,r=e.y,o=n.x-t,i=n.y-r,s=e.width/2,a=e.height/2;if(!o&&!i)throw new Error("Not possible to find intersection inside of the rectangle");let d,l;return Math.abs(i)*s>Math.abs(o)*a?(i<0&&(a=-a),d=a*o/i,l=a):(o<0&&(s=-s),d=s,l=s*i/o),{x:t+d,y:r+l}}function N(e){let n=k(X(e)+1).map(()=>[]);return e.nodes().forEach(t=>{let r=e.node(t),o=r.rank;o!==void 0&&(n[o]||(n[o]=[]),n[o][r.order]=t);}),n}function Te(e){let n=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MAX_VALUE:o}),t=L(Math.min,n);e.nodes().forEach(r=>{let o=e.node(r);Object.hasOwn(o,"rank")&&(o.rank-=t);});}function Oe(e){let n=e.nodes().map(s=>e.node(s).rank).filter(s=>s!==void 0),t=L(Math.min,n),r=[];e.nodes().forEach(s=>{let a=e.node(s).rank-t;r[a]||(r[a]=[]),r[a].push(s);});let o=0,i=e.graph().nodeRankFactor;Array.from(r).forEach((s,a)=>{s===void 0&&a%i!==0?--o:s!==void 0&&o&&s.forEach(d=>e.node(d).rank+=o);});}function q(e,n,t,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),w(e,"border",o,n)}function Dn(e,n=Ie){let t=[];for(let r=0;rIe){let t=Dn(n);return e(...t.map(r=>e(...r)))}else return e(...n)}function X(e){let t=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MIN_VALUE:o});return L(Math.max,t)}function Ce(e,n){let t={lhs:[],rhs:[]};return e.forEach(r=>{n(r)?t.lhs.push(r):t.rhs.push(r);}),t}function P(e,n){let t=Date.now();try{return n()}finally{console.log(e+" time: "+(Date.now()-t)+"ms");}}function M(e,n){return n()}var An=0;function j(e){let n=++An;return e+(""+n)}function k(e,n,t=1){n==null&&(n=e,e=0);let r=i=>inr[n]:t=n,Object.entries(e).reduce((r,[o,i])=>(r[o]=t(i,o),r),{})}function Re(e,n){return e.reduce((t,r,o)=>(t[r]=n[o],t),{})}var _="\0";var U="3.0.0";var K=class{constructor(){pe(this,"_sentinel");let n={};n._next=n._prev=n,this._sentinel=n;}dequeue(){let n=this._sentinel,t=n._prev;if(t!==n)return Pe(t),t}enqueue(n){let t=this._sentinel;n._prev&&n._next&&Pe(n),n._next=t._next,t._next._prev=n,t._next=n,n._prev=t;}toString(){let n=[],t=this._sentinel,r=t._prev;for(;r!==t;)n.push(JSON.stringify(r,Vn)),r=r._prev;return "["+n.join(", ")+"]"}};function Pe(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev;}function Vn(e,n){if(e!=="_next"&&e!=="_prev")return n}var Me=K;var Wn=()=>1;function Q(e,n){if(e.nodeCount()<=1)return [];let t=Yn(e,n||Wn);return Bn(t.graph,t.buckets,t.zeroIdx).flatMap(o=>e.outEdges(o.v,o.w)||[])}function Bn(e,n,t){var a;let r=[],o=n[n.length-1],i=n[0],s;for(;e.nodeCount();){for(;s=i.dequeue();)$(e,n,t,s);for(;s=o.dequeue();)$(e,n,t,s);if(e.nodeCount()){for(let d=n.length-2;d>0;--d)if(s=(a=n[d])==null?void 0:a.dequeue(),s){r=r.concat($(e,n,t,s,true)||[]);break}}}return r}function $(e,n,t,r,o){let i=[],s=o?i:void 0;return (e.inEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=e.node(a.v);o&&i.push({v:a.v,w:a.w}),l.out-=d,J(n,t,l);}),(e.outEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=a.w,u=e.node(l);u.in-=d,J(n,t,u);}),e.removeNode(r.v),s}function Yn(e,n){let t=new p,r=0,o=0;e.nodes().forEach(a=>{t.setNode(a,{v:a,in:0,out:0});}),e.edges().forEach(a=>{let d=t.edge(a.v,a.w)||0,l=n(a),u=d+l;t.setEdge(a.v,a.w,u);let c=t.node(a.v),h=t.node(a.w);o=Math.max(o,c.out+=l),r=Math.max(r,h.in+=l);});let i=zn(o+r+3).map(()=>new Me),s=r+1;return t.nodes().forEach(a=>{J(i,s,t.node(a));}),{graph:t,buckets:i,zeroIdx:s}}function J(e,n,t){var r,o,i;t.out?t.in?(i=e[t.out-t.in+n])==null||i.enqueue(t):(o=e[e.length-1])==null||o.enqueue(t):(r=e[0])==null||r.enqueue(t);}function zn(e){let n=[];for(let t=0;t{let o=e.edge(r);e.removeEdge(r),o.forwardName=r.name,o.reversed=true,e.setEdge(r.w,r.v,o,j("rev"));});function t(r){return o=>r.edge(o).weight}}function Hn(e){let n=[],t={},r={};function o(i){Object.hasOwn(r,i)||(r[i]=true,t[i]=true,e.outEdges(i).forEach(s=>{Object.hasOwn(t,s.w)?n.push(s):o(s.w);}),delete t[i]);}return e.nodes().forEach(o),n}function Se(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.reversed){e.removeEdge(n);let r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r);}});}function Fe(e){e.graph().dummyChains=[],e.edges().forEach(n=>Xn(e,n));}function Xn(e,n){let t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,s=n.name,a=e.edge(n),d=a.labelRank;if(i===r+1)return;e.removeEdge(n);let l,u,c;for(c=0,++r;r{let t=e.node(n),r=t.edgeLabel,o;for(e.setEdge(t.edgeObj,r);t.dummy;)o=e.successors(n)[0],e.removeNode(n),r.points.push({x:t.x,y:t.y}),t.dummy==="edge-label"&&(r.x=t.x,r.y=t.y,r.width=t.width,r.height=t.height),n=o,t=e.node(n);});}function S(e){let n={};function t(r){let o=e.node(r);if(Object.hasOwn(n,r))return o.rank;n[r]=true;let i=e.outEdges(r),s=i?i.map(d=>d==null?Number.POSITIVE_INFINITY:t(d.w)-e.edge(d).minlen):[],a=L(Math.min,s);return a===Number.POSITIVE_INFINITY&&(a=0),o.rank=a}e.sources().forEach(t);}function v(e,n){return e.node(n.w).rank-e.node(n.v).rank-e.edge(n).minlen}var V=Kn;function Kn(e){let n=new p({directed:false}),t=e.nodes();if(t.length===0)throw new Error("Graph must have at least one node");let r=t[0],o=e.nodeCount();n.setNode(r,{});let i,s;for(;$n(n,e){let s=i.v,a=r===s?i.w:s;!e.hasNode(a)&&!v(n,i)&&(e.setNode(a,{}),e.setEdge(r,a,{}),t(a));});}return e.nodes().forEach(t),e.nodeCount()}function Jn(e,n){return n.edges().reduce((r,o)=>{let i=Number.POSITIVE_INFINITY;return e.hasNode(o.v)!==e.hasNode(o.w)&&(i=v(n,o)),in.node(r).rank+=t);}var{preorder:Zn,postorder:et}=R,Ve=x;x.initLowLimValues=ee;x.initCutValues=Z;x.calcCutValue=We;x.leaveEdge=Ye;x.enterEdge=ze;x.exchangeEdges=He;function x(e){e=xe(e),S(e);let n=V(e);ee(n),Z(n,e);let t,r;for(;t=Ye(n);)r=ze(n,e,t),He(n,e,t,r);}function Z(e,n){let t=et(e,e.nodes());t=t.slice(0,t.length-1),t.forEach(r=>nt(e,n,r));}function nt(e,n,t){let o=e.node(t).parent,i=e.edge(t,o);i.cutvalue=We(e,n,t);}function We(e,n,t){let o=e.node(t).parent,i=true,s=n.edge(t,o),a=0;s||(i=false,s=n.edge(o,t)),a=s.weight;let d=n.nodeEdges(t);return d&&d.forEach(l=>{let u=l.v===t,c=u?l.w:l.v;if(c!==o){let h=u===i,f=n.edge(l).weight;if(a+=h?f:-f,rt(e,t,c)){let b=e.edge(t,c).cutvalue;a+=h?-b:b;}}}),a}function ee(e,n){arguments.length<2&&(n=e.nodes()[0]),Be(e,{},1,n);}function Be(e,n,t,r,o){let i=t,s=e.node(r);n[r]=true;let a=e.neighbors(r);return a&&a.forEach(d=>{Object.hasOwn(n,d)||(t=Be(e,n,t,d,r));}),s.low=i,s.lim=t++,o?s.parent=o:delete s.parent,t}function Ye(e){return e.edges().find(n=>e.edge(n).cutvalue<0)}function ze(e,n,t){let r=t.v,o=t.w;n.hasEdge(r,o)||(r=t.w,o=t.v);let i=e.node(r),s=e.node(o),a=i,d=false;return i.lim>s.lim&&(a=s,d=true),n.edges().filter(u=>d===Ae(e,e.node(u.v),a)&&d!==Ae(e,e.node(u.w),a)).reduce((u,c)=>v(n,c)!e.node(o).parent);if(!t)return;let r=Zn(e,[t]);r=r.slice(1),r.forEach(o=>{let s=e.node(o).parent,a=n.edge(o,s),d=false;a||(a=n.edge(s,o),d=true),n.node(o).rank=n.node(s).rank+(d?a.minlen:-a.minlen);});}function rt(e,n,t){return e.hasEdge(n,t)}function Ae(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}var Xe=ot;function ot(e){let n=e.graph().ranker;if(typeof n=="function")return n(e);switch(n){case "network-simplex":qe(e);break;case "tight-tree":st(e);break;case "longest-path":it(e);break;case "none":break;default:qe(e);}}var it=S;function st(e){S(e),V(e);}function qe(e){Ve(e);}var Ue=at;function at(e){let n=lt(e);e.graph().dummyChains.forEach(t=>{let r=e.node(t),o=r.edgeObj,i=dt(e,n,o.v,o.w),s=i.path,a=i.lca,d=0,l=s[d],u=true;for(;t!==o.w;){if(r=e.node(t),u){for(;(l=s[d])!==a&&e.node(l).maxRanks||a>n[d].lim));let l=d,u=r;for(;(u=e.parent(u))!==l;)i.push(u);return {path:o.concat(i.reverse()),lca:l}}function lt(e){let n={},t=0;function r(o){let i=t;e.children(o).forEach(r),n[o]={low:i,lim:t++};}return e.children(_).forEach(r),n}function Ke(e){let n=w(e,"root",{},"_root"),t=ut(e),r=Object.values(t),o=L(Math.max,r)-1,i=2*o+1;e.graph().nestingRoot=n,e.edges().forEach(a=>e.edge(a).minlen*=i);let s=ct(e)+1;e.children(_).forEach(a=>$e(e,n,i,s,o,t,a)),e.graph().nodeRankFactor=i;}function $e(e,n,t,r,o,i,s){var c;let a=e.children(s);if(!a.length){s!==n&&e.setEdge(n,s,{weight:0,minlen:t});return}let d=q(e,"_bt"),l=q(e,"_bb"),u=e.node(s);e.setParent(d,s),u.borderTop=d,e.setParent(l,s),u.borderBottom=l,a.forEach(h=>{var y;$e(e,n,t,r,o,i,h);let f=e.node(h),g=f.borderTop?f.borderTop:h,b=f.borderBottom?f.borderBottom:h,m=f.borderTop?r:2*r,E=g!==b?1:o-((y=i[s])!=null?y:0)+1;e.setEdge(d,g,{weight:m,minlen:E,nestingEdge:true}),e.setEdge(b,l,{weight:m,minlen:E,nestingEdge:true});}),e.parent(s)||e.setEdge(n,d,{weight:0,minlen:o+((c=i[s])!=null?c:0)});}function ut(e){let n={};function t(r,o){let i=e.children(r);i&&i.length&&i.forEach(s=>t(s,o+1)),n[r]=o;}return e.children(_).forEach(r=>t(r,1)),n}function ct(e){return e.edges().reduce((n,t)=>n+e.edge(t).weight,0)}function Je(e){let n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,e.edges().forEach(t=>{e.edge(t).nestingEdge&&e.removeEdge(t);});}var Ze=ft;function ft(e){function n(t){let r=e.children(t),o=e.node(t);if(r.length&&r.forEach(n),Object.hasOwn(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(let i=o.minRank,s=o.maxRank+1;ien(e.node(n))),e.edges().forEach(n=>en(e.edge(n)));}function en(e){let n=e.width;e.width=e.height,e.height=n;}function bt(e){e.nodes().forEach(n=>ne(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(ne),Object.hasOwn(t,"y")&&ne(t);});}function ne(e){e.y=-e.y;}function gt(e){e.nodes().forEach(n=>te(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(te),Object.hasOwn(t,"x")&&te(t);});}function te(e){let n=e.x;e.x=e.y,e.y=n;}function re(e){let n={},t=e.nodes().filter(d=>!e.children(d).length),r=t.map(d=>e.node(d).rank),o=L(Math.max,r),i=k(o+1).map(()=>[]);function s(d){if(n[d])return;n[d]=true;let l=e.node(d);i[l.rank].push(d);let u=e.successors(d);u&&u.forEach(s);}return t.sort((d,l)=>e.node(d).rank-e.node(l).rank).forEach(s),i}function oe(e,n){let t=0;for(let r=1;ru)),o=n.flatMap(l=>{let u=e.outEdges(l);return u?u.map(c=>({pos:r[c.w],weight:e.edge(c).weight})).sort((c,h)=>c.pos-h.pos):[]}),i=1;for(;i{let u=l.pos+i;a[u]+=l.weight;let c=0;for(;u>0;)u%2&&(c+=a[u+1]),u=u-1>>1,a[u]+=l.weight;d+=l.weight*c;}),d}function ie(e,n=[]){return n.map(t=>{let r=e.inEdges(t);if(!r||!r.length)return {v:t};{let o=r.reduce((i,s)=>{let a=e.edge(s),d=e.node(s.v);return {sum:i.sum+a.weight*d.order,weight:i.weight+a.weight}},{sum:0,weight:0});return {v:t,barycenter:o.sum/o.weight,weight:o.weight}}})}function se(e,n){let t={};e.forEach((o,i)=>{let s={indegree:0,in:[],out:[],vs:[o.v],i};o.barycenter!==void 0&&(s.barycenter=o.barycenter,s.weight=o.weight),t[o.v]=s;}),n.edges().forEach(o=>{let i=t[o.v],s=t[o.w];i!==void 0&&s!==void 0&&(s.indegree++,i.out.push(s));});let r=Object.values(t).filter(o=>!o.indegree);return Et(r)}function Et(e){let n=[];function t(o){return i=>{i.merged||(i.barycenter===void 0||o.barycenter===void 0||i.barycenter>=o.barycenter)&&Lt(o,i);}}function r(o){return i=>{i.in.push(o),--i.indegree===0&&e.push(i);}}for(;e.length;){let o=e.pop();n.push(o),o.in.reverse().forEach(t(o)),o.out.forEach(r(o));}return n.filter(o=>!o.merged).map(o=>T(o,["vs","i","barycenter","weight"]))}function Lt(e,n){let t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight),n.weight&&(t+=n.barycenter*n.weight,r+=n.weight),e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=true;}function ae(e,n){let t=Ce(e,u=>Object.hasOwn(u,"barycenter")),r=t.lhs,o=t.rhs.sort((u,c)=>c.i-u.i),i=[],s=0,a=0,d=0;r.sort(yt(!!n)),d=on(i,o,d),r.forEach(u=>{d+=u.vs.length,i.push(u.vs),s+=u.barycenter*u.weight,a+=u.weight,d=on(i,o,d);});let l={vs:i.flat(1)};return a&&(l.barycenter=s/a,l.weight=a),l}function on(e,n,t){let r;for(;n.length&&(r=n[n.length-1]).i<=t;)n.pop(),e.push(r.vs),t++;return t}function yt(e){return (n,t)=>n.barycentert.barycenter?1:e?t.i-n.i:n.i-t.i}function W(e,n,t,r){let o=e.children(n),i=e.node(n),s=i?i.borderLeft:void 0,a=i?i.borderRight:void 0,d={};s&&(o=o.filter(h=>h!==s&&h!==a));let l=ie(e,o);l.forEach(h=>{if(e.children(h.v).length){let f=W(e,h.v,t,r);d[h.v]=f,Object.hasOwn(f,"barycenter")&&Nt(h,f);}});let u=se(l,t);wt(u,d);let c=ae(u,r);if(s&&a){c.vs=[s,c.vs,a].flat(1);let h=e.predecessors(s);if(h&&h.length){let f=e.node(h[0]),g=e.predecessors(a),b=e.node(g[0]);Object.hasOwn(c,"barycenter")||(c.barycenter=0,c.weight=0),c.barycenter=(c.barycenter*c.weight+f.order+b.order)/(c.weight+2),c.weight+=2;}}return c}function wt(e,n){e.forEach(t=>{t.vs=t.vs.flatMap(r=>n[r]?n[r].vs:r);});}function Nt(e,n){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+n.barycenter*n.weight)/(e.weight+n.weight),e.weight+=n.weight):(e.barycenter=n.barycenter,e.weight=n.weight);}function de(e,n,t,r){r||(r=e.nodes());let o=Gt(e),i=new p({compound:true}).setGraph({root:o}).setDefaultNodeLabel(s=>e.node(s));return r.forEach(s=>{let a=e.node(s),d=e.parent(s);if(a.rank===n||a.minRank<=n&&n<=a.maxRank){i.setNode(s),i.setParent(s,d||o);let l=e[t](s);l&&l.forEach(u=>{let c=u.v===s?u.w:u.v,h=i.edge(c,s),f=h!==void 0?h.weight:0;i.setEdge(c,s,{weight:e.edge(u).weight+f});}),Object.hasOwn(a,"minRank")&&i.setNode(s,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]});}}),i}function Gt(e){let n;for(;e.hasNode(n=j("_root")););return n}function le(e,n,t){let r={},o;t.forEach(i=>{let s=e.parent(i),a,d;for(;s;){if(a=e.parent(s),a?(d=r[a],r[a]=s):(d=o,o=s),d&&d!==s){n.setEdge(d,s);return}s=a;}});}function B(e,n={}){if(typeof n.customOrder=="function"){n.customOrder(e,B);return}let t=X(e),r=sn(e,k(1,t+1),"inEdges"),o=sn(e,k(t-1,-1,-1),"outEdges"),i=re(e);if(an(e,i),n.disableOptimalOrderHeuristic)return;let s=Number.POSITIVE_INFINITY,a,d=n.constraints||[];for(let l=0,u=0;u<4;++l,++u){kt(l%2?r:o,l%4>=2,d),i=N(e);let c=oe(e,i);c{r.has(i)||r.set(i,[]),r.get(i).push(s);};for(let i of e.nodes()){let s=e.node(i);if(typeof s.rank=="number"&&o(s.rank,i),typeof s.minRank=="number"&&typeof s.maxRank=="number")for(let a=s.minRank;a<=s.maxRank;a++)a!==s.rank&&o(a,i);}return n.map(function(i){return de(e,i,t,r.get(i)||[])})}function kt(e,n,t){let r=new p;e.forEach(function(o){t.forEach(a=>r.setEdge(a.left,a.right));let i=o.graph().root,s=W(o,i,r,n);s.vs.forEach((a,d)=>o.node(a).order=d),le(o,r,s.vs);});}function an(e,n){Object.values(n).forEach(t=>t.forEach((r,o)=>e.node(r).order=o));}function vt(e,n){let t={};function r(o,i){let s=0,a=0,d=o.length,l=i[i.length-1];return i.forEach((u,c)=>{let h=xt(e,u),f=h?e.node(h).order:d;(h||u===l)&&(i.slice(a,c+1).forEach(g=>{let b=e.predecessors(g);b&&b.forEach(m=>{let E=e.node(m),y=E.order;(y{let c=i[u];if(c!==void 0&&e.node(c).dummy){let h=e.predecessors(c);h&&h.forEach(f=>{if(f===void 0)return;let g=e.node(f);g.dummy&&(g.orderl)&&dn(t,f,c);});}});}function o(i,s){let a=-1,d=-1,l=0;return s.forEach((u,c)=>{if(e.node(u).dummy==="border"){let h=e.predecessors(u);if(h&&h.length){let f=h[0];if(f===void 0)return;d=e.node(f).order,r(s,l,c,a,d),l=c,a=d;}}r(s,l,s.length,d,i.length);}),s}return n.length&&n.reduce(o),t}function xt(e,n){if(e.node(n).dummy){let t=e.predecessors(n);if(t)return t.find(r=>e.node(r).dummy)}}function dn(e,n,t){if(n>t){let o=n;n=t,t=o;}let r=e[n];r||(e[n]=r={}),r[t]=true;}function Tt(e,n,t){if(n>t){let o=n;n=t,t=o;}let r=e[n];return r!==void 0&&Object.hasOwn(r,t)}function Ot(e,n,t,r){let o={},i={},s={};return n.forEach(a=>{a.forEach((d,l)=>{o[d]=d,i[d]=d,s[d]=l;});}),n.forEach(a=>{let d=-1;a.forEach(l=>{let u=r(l);if(u&&u.length){let c=u.sort((f,g)=>{let b=s[f],m=s[g];return (b!==void 0?b:0)-(m!==void 0?m:0)}),h=(c.length-1)/2;for(let f=Math.floor(h),g=Math.ceil(h);f<=g;++f){let b=c[f];if(b===void 0)continue;let m=s[b];if(m!==void 0&&i[l]===l&&d{var I;let E=(I=i[m.v])!=null?I:0,y=s.edge(m);return Math.max(b,E+(y!==void 0?y:0))},0):i[f]=0;}function u(f){let g=s.outEdges(f),b=Number.POSITIVE_INFINITY;g&&(b=g.reduce((E,y)=>{let I=i[y.w],be=s.edge(y);return Math.min(E,(I!==void 0?I:0)-(be!==void 0?be:0))},Number.POSITIVE_INFINITY));let m=e.node(f);b!==Number.POSITIVE_INFINITY&&m.borderType!==a&&(i[f]=Math.max(i[f]!==void 0?i[f]:0,b));}function c(f){return s.predecessors(f)||[]}function h(f){return s.successors(f)||[]}return d(l,c),d(u,h),Object.keys(r).forEach(f=>{var b;let g=t[f];g!==void 0&&(i[f]=(b=i[g])!=null?b:0);}),i}function Ct(e,n,t,r){let o=new p,i=e.graph(),s=jt(i.nodesep,i.edgesep,r);return n.forEach(a=>{let d;a.forEach(l=>{let u=t[l];if(u!==void 0){if(o.setNode(u),d!==void 0){let c=t[d];if(c!==void 0){let h=o.edge(c,u);o.setEdge(c,u,Math.max(s(e,l,d),h||0));}}d=l;}});}),o}function Rt(e,n){return Object.values(n).reduce((t,r)=>{let o=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;Object.entries(r).forEach(([a,d])=>{let l=St(e,a)/2;o=Math.max(d+l,o),i=Math.min(d-l,i);});let s=o-i;return s{["l","r"].forEach(s=>{let a=i+s,d=e[a];if(!d||d===n)return;let l=Object.values(d),u=r-L(Math.min,l);s!=="l"&&(u=o-L(Math.max,l)),u&&(e[a]=O(d,c=>c+u));});});}function Mt(e,n=void 0){let t=e.ul;return t?O(t,(r,o)=>{var s,a;if(n){let d=n.toLowerCase(),l=e[d];if(l&&l[o]!==void 0)return l[o]}let i=Object.values(e).map(d=>{let l=d[o];return l!==void 0?l:0}).sort((d,l)=>d-l);return (((s=i[1])!=null?s:0)+((a=i[2])!=null?a:0))/2}):{}}function ln(e){let n=N(e),t=Object.assign(vt(e,n),_t(e,n)),r={},o;["u","d"].forEach(s=>{o=s==="u"?n:Object.values(n).reverse(),["l","r"].forEach(a=>{a==="r"&&(o=o.map(c=>Object.values(c).reverse()));let l=Ot(e,o,t,c=>(s==="u"?e.predecessors(c):e.successors(c))||[]),u=It(e,o,l.root,l.align,a==="r");a==="r"&&(u=O(u,c=>-c)),r[s+a]=u;});});let i=Rt(e,r);return Pt(r,i),Mt(r,e.graph().align)}function jt(e,n,t){return (r,o,i)=>{let s=r.node(o),a=r.node(i),d=0,l;if(d+=s.width/2,Object.hasOwn(s,"labelpos"))switch(s.labelpos.toLowerCase()){case "l":l=-s.width/2;break;case "r":l=s.width/2;break}if(l&&(d+=t?l:-l),l=void 0,d+=(s.dummy?n:e)/2,d+=(a.dummy?n:e)/2,d+=a.width/2,Object.hasOwn(a,"labelpos"))switch(a.labelpos.toLowerCase()){case "l":l=a.width/2;break;case "r":l=-a.width/2;break}return l&&(d+=t?l:-l),d}}function St(e,n){return e.node(n).width}function un(e){e=A(e),Ft(e),Object.entries(ln(e)).forEach(([n,t])=>e.node(n).x=t);}function Ft(e){let n=N(e),t=e.graph(),r=t.ranksep,o=t.rankalign,i=0;n.forEach(s=>{let a=s.reduce((d,l)=>{var c;let u=(c=e.node(l).height)!=null?c:0;return d>u?d:u},0);s.forEach(d=>{let l=e.node(d);o==="top"?l.y=i+l.height/2:o==="bottom"?l.y=i+a-l.height/2:l.y=i+a/2;}),i+=a+r;});}function he(e,n={}){let t=n.debugTiming?P:M;return t("layout",()=>{let r=t(" buildLayoutGraph",()=>Xt(e));return t(" runLayout",()=>Dt(r,t,n)),t(" updateInputGraph",()=>At(e,r)),r})}function Dt(e,n,t){n(" makeSpaceForEdgeLabels",()=>Ut(e)),n(" removeSelfEdges",()=>rr(e)),n(" acyclic",()=>je(e)),n(" nestingGraph.run",()=>Ke(e)),n(" rank",()=>Xe(A(e))),n(" injectEdgeLabelProxies",()=>Kt(e)),n(" removeEmptyRanks",()=>Oe(e)),n(" nestingGraph.cleanup",()=>Je(e)),n(" normalizeRanks",()=>Te(e)),n(" assignRankMinMax",()=>$t(e)),n(" removeEdgeLabelProxies",()=>Jt(e)),n(" normalize.run",()=>Fe(e)),n(" parentDummyChains",()=>Ue(e)),n(" addBorderSegments",()=>Ze(e)),n(" order",()=>B(e,t)),n(" insertSelfEdges",()=>or(e)),n(" adjustCoordinateSystem",()=>nn(e)),n(" position",()=>un(e)),n(" positionSelfEdges",()=>ir(e)),n(" removeBorderNodes",()=>tr(e)),n(" normalize.undo",()=>De(e)),n(" fixupEdgeLabelCoords",()=>er(e)),n(" undoCoordinateSystem",()=>tn(e)),n(" translateGraph",()=>Qt(e)),n(" assignNodeIntersects",()=>Zt(e)),n(" reversePoints",()=>nr(e)),n(" acyclic.undo",()=>Se(e));}function At(e,n){e.nodes().forEach(t=>{let r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,r.order=o.order,r.rank=o.rank,n.children(t).length&&(r.width=o.width,r.height=o.height));}),e.edges().forEach(t=>{let r=e.edge(t),o=n.edge(t);r.points=o.points,Object.hasOwn(o,"x")&&(r.x=o.x,r.y=o.y);}),e.graph().width=n.graph().width,e.graph().height=n.graph().height;}var Vt=["nodesep","edgesep","ranksep","marginx","marginy"],Wt={ranksep:50,edgesep:20,nodesep:50,rankdir:"TB",rankalign:"center"},Bt=["acyclicer","ranker","rankdir","align","rankalign"],Yt=["width","height","rank"],cn={width:0,height:0},zt=["minlen","weight","width","height","labeloffset"],Ht={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},qt=["labelpos"];function Xt(e){let n=new p({multigraph:true,compound:true}),t=ce(e.graph());return n.setGraph(Object.assign({},Wt,ue(t,Vt),T(t,Bt))),e.nodes().forEach(r=>{let o=ce(e.node(r)),i=ue(o,Yt);Object.keys(cn).forEach(a=>{i[a]===void 0&&(i[a]=cn[a]);}),n.setNode(r,i);let s=e.parent(r);s!==void 0&&n.setParent(r,s);}),e.edges().forEach(r=>{let o=ce(e.edge(r));n.setEdge(r,Object.assign({},Ht,ue(o,zt),T(o,qt)));}),n}function Ut(e){let n=e.graph();n.ranksep/=2,e.edges().forEach(t=>{let r=e.edge(t);r.minlen*=2,r.labelpos.toLowerCase()!=="c"&&(n.rankdir==="TB"||n.rankdir==="BT"?r.width+=r.labeloffset:r.height+=r.labeloffset);});}function Kt(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.width&&t.height){let r=e.node(n.v),i={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};w(e,"edge-proxy",i,"_ep");}});}function $t(e){let n=0;e.nodes().forEach(t=>{let r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=Math.max(n,r.maxRank));}),e.graph().maxRank=n;}function Jt(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy==="edge-proxy"){let r=t;e.edge(r.e).labelRank=t.rank,e.removeNode(n);}});}function Qt(e){let n=Number.POSITIVE_INFINITY,t=0,r=Number.POSITIVE_INFINITY,o=0,i=e.graph(),s=i.marginx||0,a=i.marginy||0;function d(l){let u=l.x,c=l.y,h=l.width,f=l.height;n=Math.min(n,u-h/2),t=Math.max(t,u+h/2),r=Math.min(r,c-f/2),o=Math.max(o,c+f/2);}e.nodes().forEach(l=>d(e.node(l))),e.edges().forEach(l=>{let u=e.edge(l);Object.hasOwn(u,"x")&&d(u);}),n-=s,r-=a,e.nodes().forEach(l=>{let u=e.node(l);u.x-=n,u.y-=r;}),e.edges().forEach(l=>{let u=e.edge(l);u.points.forEach(c=>{c.x-=n,c.y-=r;}),Object.hasOwn(u,"x")&&(u.x-=n),Object.hasOwn(u,"y")&&(u.y-=r);}),i.width=t-n+s,i.height=o-r+a;}function Zt(e){e.edges().forEach(n=>{let t=e.edge(n),r=e.node(n.v),o=e.node(n.w),i,s;t.points?(i=t.points[0],s=t.points[t.points.length-1]):(t.points=[],i=o,s=r),t.points.unshift(H(r,i)),t.points.push(H(o,s));});}function er(e){e.edges().forEach(n=>{let t=e.edge(n);if(Object.hasOwn(t,"x"))switch((t.labelpos==="l"||t.labelpos==="r")&&(t.width-=t.labeloffset),t.labelpos){case "l":t.x-=t.width/2+t.labeloffset;break;case "r":t.x+=t.width/2+t.labeloffset;break}});}function nr(e){e.edges().forEach(n=>{let t=e.edge(n);t.reversed&&t.points.reverse();});}function tr(e){e.nodes().forEach(n=>{if(e.children(n).length){let t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(t.borderLeft[t.borderLeft.length-1]),s=e.node(t.borderRight[t.borderRight.length-1]);t.width=Math.abs(s.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2;}}),e.nodes().forEach(n=>{e.node(n).dummy==="border"&&e.removeNode(n);});}function rr(e){e.edges().forEach(n=>{if(n.v===n.w){let t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n);}});}function or(e){N(e).forEach(t=>{let r=0;t.forEach((o,i)=>{let s=e.node(o);s.order=i+r,(s.selfEdges||[]).forEach(a=>{w(e,"selfedge",{width:a.label.width,height:a.label.height,rank:s.rank,order:i+ ++r,e:a.e,label:a.label},"_se");}),delete s.selfEdges;});});}function ir(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy==="selfedge"){let r=t,o=e.node(r.e.v),i=o.x+o.width/2,s=o.y,a=t.x-i,d=o.height/2;e.setEdge(r.e,r.label),e.removeNode(n),r.label.points=[{x:i+2*a/3,y:s-d},{x:i+5*a/6,y:s-d},{x:i+a,y:s},{x:i+5*a/6,y:s+d},{x:i+2*a/3,y:s+d}],r.label.x=t.x,r.label.y=t.y;}});}function ue(e,n){return O(T(e,n),Number)}function ce(e){let n={};return e&&Object.entries(e).forEach(([t,r])=>{typeof t=="string"&&(t=t.toLowerCase()),n[t]=r;}),n}function fe(e){let n=N(e),t=new p({compound:true,multigraph:true}).setGraph({});return e.nodes().forEach(r=>{t.setNode(r,{label:r}),t.setParent(r,"layer"+e.node(r).rank);}),e.edges().forEach(r=>t.setEdge(r.v,r.w,{},r.name)),n.forEach((r,o)=>{let i="layer"+o;t.setNode(i,{rank:"same"}),r.reduce((s,a)=>(t.setEdge(s,a,{style:"invis"}),a));}),t}var sr={graphlib:z,version:U,layout:he,debug:fe,util:{time:P,notime:M}},To=sr;/*! For license information please see dagre.esm.js.LEGAL.txt */ + + var isFunction = function isFunction(o) { + return typeof o === 'function'; + }; + var EPSILON = 0.001; // what does it mean to be too close to 0? + + // constructor + // options : object containing layout options + function DagreLayout(options) { + this.options = assign({}, defaults, options); + } + function subtract(a, b) { + return { + x: noZero(a.x - b.x), + y: noZero(a.y - b.y) + }; + } + function product(a, b) { + return noZero(a.x * b.x) + noZero(a.y * b.y); + } + function norm(v) { + var len = Math.hypot(v.x, v.y) || 1; + return { + x: v.x / len, + y: v.y / len, + len: len + }; + } + function perp(v) { + return { + x: -v.y, + y: v.x + }; + } + + /* provides the context for mapping from dagre's x, y coordinate system + * for control points to cytoscapes coordinate system for control points + * which is relative to the straight vector from source to target node + */ + function buildEdgeFrame(src, tgt) { + var d = subtract(tgt, src); + var _norm = norm(d), + x = _norm.x, + y = _norm.y, + len = _norm.len; + var dir = { + x: x, + y: y + }; + var normal = perp(dir); + return { + src: src, + tgt: tgt, + dir: dir, + normal: normal, + len: len + }; + } + function noZero(x) { + if (Math.abs(x) < EPSILON) { + return x < 0 ? -EPSILON : EPSILON; + } + return x; + } + function toEdgeCoordinates(P, frame) { + var vector = subtract(P, frame.src); + var weight = noZero(product(vector, frame.dir) / frame.len); + var distance = noZero(product(vector, frame.normal)); + return { + weight: weight, + distance: distance + }; + } + function normalizeWeight(coords) { + var min = Infinity; + var max = -Infinity; + var _iterator = _createForOfIteratorHelper(coords), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var p = _step.value; + if (p.weight < min) { + min = p.weight; + } + if (p.weight > max) { + max = p.weight; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + var range = max - min || 1; + return coords.map(function (p) { + return { + distance: p.distance, + weight: (p.weight - min) / range + }; + }); + } + + /* First introduce new control points to bridge between the dagre list of + * points and the centres of cytoscape nodes. + * Then we sanitize any empty or non-existing or degenerate control points + * And finally we map the Dagre coordinates to the Cytoscape coordinated which + * are relative to the original direction vector from source to target. + * These final coordinates are stored pairwise in two arrays cpw and cpd + * which are picked up by the Bezier construction code in cytoscape. + */ + function dagreEdgeToCytoscapeEdge(dEdge, cEdge) { + var fromNode = cEdge.source().position(); + var toNode = cEdge.target().position(); + var frame = buildEdgeFrame(fromNode, toNode); + var coords = normalizeWeight(dEdge.points.map(function (p) { + return toEdgeCoordinates(p, frame); + })); + var controlPointWeights = coords.slice(1, -1).map(function (c) { + return c.weight; + }); + var controlPointDistances = coords.slice(1, -1).map(function (c) { + return c.distance; + }); + var result = { + controlPointWeights: controlPointWeights, + controlPointDistances: controlPointDistances + }; + return result; + } + + // runs the layout + DagreLayout.prototype.run = function () { + var options = this.options; + var layout = this; + var cy = options.cy; // cy is automatically populated for us in the constructor + var eles = options.eles; + var getVal = function getVal(ele, val) { + return isFunction(val) ? val.apply(ele, [ele]) : val; + }; + var bb = options.boundingBox || { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }; + if (bb.x2 === undefined) { + bb.x2 = bb.x1 + bb.w; + } + if (bb.w === undefined) { + bb.w = bb.x2 - bb.x1; + } + if (bb.y2 === undefined) { + bb.y2 = bb.y1 + bb.h; + } + if (bb.h === undefined) { + bb.h = bb.y2 - bb.y1; + } + var g = new To.graphlib.Graph({ + multigraph: true, + compound: true + }); + var gObj = {}; + var setGObj = function setGObj(name, val) { + if (val != null) { + gObj[name] = val; + } + }; + setGObj('nodesep', options.nodeSep); + setGObj('edgesep', options.edgeSep); + setGObj('ranksep', options.rankSep); + setGObj('rankdir', options.rankDir); + setGObj('align', options.align); + setGObj('ranker', options.ranker); + setGObj('acyclicer', options.acyclicer); + g.setGraph(gObj); + g.setDefaultEdgeLabel(function () { + return {}; + }); + g.setDefaultNodeLabel(function () { + return {}; + }); + + // add nodes to dagre + var nodes = eles.nodes(); + if (isFunction(options.sort)) { + nodes = nodes.sort(options.sort); + } + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var nbb = node.layoutDimensions(options); + g.setNode(node.id(), { + width: nbb.w, + height: nbb.h, + shape: 'ellipse', + name: node.id() + }); + } + + // set compound parents + for (var _i = 0; _i < nodes.length; _i++) { + var _node = nodes[_i]; + if (_node.isChild()) { + g.setParent(_node.id(), _node.parent().id()); + } + } + + // add edges to dagre + var edges = eles.edges().stdFilter(function (edge) { + return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes + }); + if (isFunction(options.sort)) { + edges = edges.sort(options.sort); + } + for (var _i2 = 0; _i2 < edges.length; _i2++) { + var edge = edges[_i2]; + g.setEdge(edge.source().id(), edge.target().id(), { + minlen: getVal(edge, options.minLen), + weight: getVal(edge, options.edgeWeight), + name: edge.id() + }, edge.id()); + } + To.layout(g); + var gNodeIds = g.nodes(); + for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) { + var id = gNodeIds[_i3]; + var n = g.node(id); + cy.getElementById(id).scratch().dagre = n; + } + var dagreBB; + if (options.boundingBox) { + dagreBB = { + x1: Infinity, + x2: -Infinity, + y1: Infinity, + y2: -Infinity + }; + nodes.forEach(function (node) { + var dModel = node.scratch().dagre; + dagreBB.x1 = Math.min(dagreBB.x1, dModel.x); + dagreBB.x2 = Math.max(dagreBB.x2, dModel.x); + dagreBB.y1 = Math.min(dagreBB.y1, dModel.y); + dagreBB.y2 = Math.max(dagreBB.y2, dModel.y); + }); + dagreBB.w = dagreBB.x2 - dagreBB.x1; + dagreBB.h = dagreBB.y2 - dagreBB.y1; + } else { + dagreBB = bb; + } + var constrainPos = function constrainPos(p) { + if (options.boundingBox) { + var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w; + var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h; + return { + x: bb.x1 + xPct * bb.w, + y: bb.y1 + yPct * bb.h + }; + } else { + return p; + } + }; + nodes.layoutPositions(layout, options, function (ele) { + ele = _typeof(ele) === "object" ? ele : this; + var dModel = ele.scratch().dagre; + return constrainPos({ + x: dModel.x, + y: dModel.y + }); + }); + if (options.useDagreEdgeControlPoints) { + if (options.automaticDagreEdgeStyle) { + cy.edges().addClass('useDagreEdgeControlPoints'); + cy.style().selector('edge.useDagreEdgeControlPoints').style(options.dagreEdgeStyle).update(); + } + g.edges().forEach(function (id) { + var cyEdge = cy.getElementById(id.name); + var dEdge = g.edge(id); + if (dEdge && dEdge.points) { + cyEdge.scratch(dagreEdgeToCytoscapeEdge(dEdge, cyEdge)); + } + }); + } + return this; // chaining + }; + + // registers the extension on a cytoscape lib ref + var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + cytoscape('layout', 'dagre', DagreLayout); // register with cytoscape.js + }; + if (typeof window !== 'undefined' && typeof window.cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(window.cytoscape); + } + + return register; + +})); +//# sourceMappingURL=cytoscape-dagre.js.map diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-elk.js b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-elk.js new file mode 100644 index 0000000..c003983 --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-elk.js @@ -0,0 +1,356 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("elkjs/lib/elk.bundled.js")); + else if(typeof define === 'function' && define.amd) + define(["elkjs"], factory); + else if(typeof exports === 'object') + exports["cytoscapeElk"] = factory(require("elkjs/lib/elk.bundled.js")); + else + root["cytoscapeElk"] = factory(root["ELK"]); +})(this, function(__WEBPACK_EXTERNAL_MODULE__632__) { +return /******/ (function() { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ 632: +/***/ (function(module) { + +module.exports = __WEBPACK_EXTERNAL_MODULE__632__; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ !function() { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function() { return module['default']; } : +/******/ function() { return module; }; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ !function() { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = function(exports, definition) { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ !function() { +/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } +/******/ }(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +!function() { + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": function() { return /* binding */ src; } +}); + +// EXTERNAL MODULE: external {"commonjs":"elkjs/lib/elk.bundled.js","commonjs2":"elkjs/lib/elk.bundled.js","amd":"elkjs","root":"ELK"} +var elk_bundled_js_amd_elkjs_root_ELK_ = __webpack_require__(632); +var elk_bundled_js_amd_elkjs_root_ELK_default = /*#__PURE__*/__webpack_require__.n(elk_bundled_js_amd_elkjs_root_ELK_); +;// CONCATENATED MODULE: ./src/assign.js +// Simple, internal Object.assign() polyfill for options objects etc. +function assign_assign(tgt) { + for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + return tgt; +} + +/* harmony default export */ var src_assign = (Object.assign != null ? Object.assign.bind(Object) : assign_assign); +;// CONCATENATED MODULE: ./src/defaults.js +var defaults = { + nodeDimensionsIncludeLabels: false, + // Boolean which changes whether label dimensions are included when calculating node dimensions + fit: true, + // Whether to fit + padding: 20, + // Padding on fit + animate: false, + // Whether to transition the node positions + animateFilter: function animateFilter() { + return true; + }, + // Whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions + animationDuration: 500, + // Duration of animation in ms if enabled + animationEasing: undefined, + // Easing of animation if enabled + transform: function transform(node, pos) { + return pos; + }, + // A function that applies a transform to the final node position + ready: undefined, + // Callback on layoutready + stop: undefined, + // Callback on layoutstop + nodeLayoutOptions: undefined, + // Special options for only the nodes + elk: { + // Options to pass directly to ELK `layoutOptions`. The subsequent identifier has to be used as property key in quotes. + // E.g. for 'org.eclipse.elk.direction' use: + // 'elk.direction' + // Primary/mandatory, the elk algorithm to use + // one of 'box', 'disco', 'force', 'layered', 'mrtree', 'radial', 'random', 'stress' + // (see https://www.eclipse.org/elk/reference/algorithms.html) + algorithm: undefined + }, + priority: function priority() { + return null; + } // Edges with a non-nil value are skipped when geedy edge cycle breaking is enabled + +}; +/* harmony default export */ var src_defaults = (defaults); +;// CONCATENATED MODULE: ./src/layout.js +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + + + + +var elkOverrides = {}; + +var getPos = function getPos(ele, options) { + var dims = ele.layoutDimensions(options); + var parent = ele.parent(); + var k = ele.scratch('elk'); + var p = { + x: k.x, + y: k.y + }; + + while (parent.nonempty()) { + var kp = parent.scratch('elk'); + p.x += kp.x; + p.y += kp.y; + parent = parent.parent(); + } // elk considers a node position to be its top-left corner, while cy is the centre + + + p.x += dims.w / 2; + p.y += dims.h / 2; + return p; +}; + +var makeNode = function makeNode(node, options) { + var k = { + _cyEle: node, + id: node.id() + }; // Apply nodeLayoutOptions per user-specified function + // e.g. nodeLayoutOptions => n.scratch('layoutOptions') + + if (options.nodeLayoutOptions) { + k.layoutOptions = options.nodeLayoutOptions(node); + } + + if (!node.isParent()) { + var dims = node.layoutDimensions(options); + var p = node.position(); // the elk position is the top-left corner, cy is the centre + + k.x = p.x - dims.w / 2; + k.y = p.y - dims.h / 2; + k.width = dims.w; + k.height = dims.h; + } + + node.scratch('elk', k); + return k; +}; + +var makeEdge = function makeEdge(edge +/*, options*/ +) { + var k = { + _cyEle: edge, + id: edge.id(), + source: edge.data('source'), + target: edge.data('target') + }; + edge.scratch('elk', k); + return k; +}; + +var makeGraph = function makeGraph(nodes, edges, options) { + var elkNodes = []; + var elkEdges = []; + var elkEleLookup = {}; + var graph = { + id: 'root', + children: [], + edges: [] + }; // map all nodes + + for (var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + var k = makeNode(n, options); + elkNodes.push(k); + elkEleLookup[n.id()] = k; + } // map all edges + + + for (var _i = 0; _i < edges.length; _i++) { + var e = edges[_i]; + + var _k = makeEdge(e, options); + + elkEdges.push(_k); + elkEleLookup[e.id()] = _k; + } // make hierarchy + + + for (var _i2 = 0; _i2 < elkNodes.length; _i2++) { + var _k2 = elkNodes[_i2]; + var _n = _k2._cyEle; + + if (!_n.isChild()) { + graph.children.push(_k2); + } else { + var parent = _n.parent(); + + var parentK = elkEleLookup[parent.id()]; + var children = parentK.children = parentK.children || []; + children.push(_k2); + } + } + + for (var _i3 = 0; _i3 < elkEdges.length; _i3++) { + var _k3 = elkEdges[_i3]; // put all edges in the top level for now + // TODO does this cause issues in certain edgecases? + + /*let e = k._cyEle; + let parentSrc = e.source().parent(); + let parentTgt = e.target().parent(); + if ( false && parentSrc.nonempty() && parentTgt.nonempty() && parentSrc.same( parentTgt ) ){ + let kp = elkEleLookup[ parentSrc.id() ]; + kp.edges = kp.edges || []; + kp.edges.push( k ); + } else {*/ + + graph.edges.push(_k3); //} + } + + return graph; +}; + +var Layout = /*#__PURE__*/function () { + function Layout(options) { + _classCallCheck(this, Layout); + + var elkOptions = options.elk; + var cy = options.cy; + this.options = src_assign({}, src_defaults, options); + this.options.elk = src_assign({ + aspectRatio: cy.width() / cy.height() + }, src_defaults.elk, elkOptions, elkOverrides); + } + + _createClass(Layout, [{ + key: "run", + value: function run() { + var layout = this; + var options = this.options; + var eles = options.eles; + var nodes = eles.nodes(); + var edges = eles.edges(); + var elk = new (elk_bundled_js_amd_elkjs_root_ELK_default())(); + var graph = makeGraph(nodes, edges, options); + graph['layoutOptions'] = options.elk; + elk.layout(graph).then(function () { + nodes.filter(function (n) { + return !n.isParent(); + }).layoutPositions(layout, options, function (n) { + return getPos(n, options); + }); + }); + return this; + } + }, { + key: "stop", + value: function stop() { + return this; // chaining + } + }, { + key: "destroy", + value: function destroy() { + return this; // chaining + } + }]); + + return Layout; +}(); + +/* harmony default export */ var layout = (Layout); +;// CONCATENATED MODULE: ./src/index.js + // registers the extension on a cytoscape lib ref + +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + + cytoscape('layout', 'elk', layout); // register with cytoscape.js +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + // eslint-disable-next-line no-undef + register(cytoscape); +} + +/* harmony default export */ var src = (register); +}(); +__webpack_exports__ = __webpack_exports__["default"]; +/******/ return __webpack_exports__; +/******/ })() +; +}); \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-fcose.js b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-fcose.js new file mode 100644 index 0000000..9ad4f6e --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-fcose.js @@ -0,0 +1,1549 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("cose-base")); + else if(typeof define === 'function' && define.amd) + define(["cose-base"], factory); + else if(typeof exports === 'object') + exports["cytoscapeFcose"] = factory(require("cose-base")); + else + root["cytoscapeFcose"] = factory(root["coseBase"]); +})(this, function(__WEBPACK_EXTERNAL_MODULE__140__) { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ 658: +/***/ ((module) => { + + + +// Simple, internal Object.assign() polyfill for options objects etc. + +module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + + return tgt; +}; + +/***/ }), + +/***/ 548: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +/* + * Auxiliary functions + */ + +var LinkedList = __webpack_require__(140).layoutBase.LinkedList; + +var auxiliary = {}; + +// get the top most nodes +auxiliary.getTopMostNodes = function (nodes) { + var nodesMap = {}; + for (var i = 0; i < nodes.length; i++) { + nodesMap[nodes[i].id()] = true; + } + var roots = nodes.filter(function (ele, i) { + if (typeof ele === "number") { + ele = i; + } + var parent = ele.parent()[0]; + while (parent != null) { + if (nodesMap[parent.id()]) { + return false; + } + parent = parent.parent()[0]; + } + return true; + }); + + return roots; +}; + +// find disconnected components and create dummy nodes that connect them +auxiliary.connectComponents = function (cy, eles, topMostNodes, dummyNodes) { + var queue = new LinkedList(); + var visited = new Set(); + var visitedTopMostNodes = []; + var currentNeighbor = void 0; + var minDegreeNode = void 0; + var minDegree = void 0; + + var isConnected = false; + var count = 1; + var nodesConnectedToDummy = []; + var components = []; + + var _loop = function _loop() { + var cmpt = cy.collection(); + components.push(cmpt); + + var currentNode = topMostNodes[0]; + var childrenOfCurrentNode = cy.collection(); + childrenOfCurrentNode.merge(currentNode).merge(currentNode.descendants().intersection(eles)); + visitedTopMostNodes.push(currentNode); + + childrenOfCurrentNode.forEach(function (node) { + queue.push(node); + visited.add(node); + cmpt.merge(node); + }); + + var _loop2 = function _loop2() { + currentNode = queue.shift(); + + // Traverse all neighbors of this node + var neighborNodes = cy.collection(); + currentNode.neighborhood().nodes().forEach(function (node) { + if (eles.intersection(currentNode.edgesWith(node)).length > 0) { + neighborNodes.merge(node); + } + }); + + for (var i = 0; i < neighborNodes.length; i++) { + var neighborNode = neighborNodes[i]; + currentNeighbor = topMostNodes.intersection(neighborNode.union(neighborNode.ancestors())); + if (currentNeighbor != null && !visited.has(currentNeighbor[0])) { + var childrenOfNeighbor = currentNeighbor.union(currentNeighbor.descendants()); + + childrenOfNeighbor.forEach(function (node) { + queue.push(node); + visited.add(node); + cmpt.merge(node); + if (topMostNodes.has(node)) { + visitedTopMostNodes.push(node); + } + }); + } + } + }; + + while (queue.length != 0) { + _loop2(); + } + + cmpt.forEach(function (node) { + eles.intersection(node.connectedEdges()).forEach(function (e) { + // connectedEdges() usually cached + if (cmpt.has(e.source()) && cmpt.has(e.target())) { + // has() is cheap + cmpt.merge(e); + } + }); + }); + + if (visitedTopMostNodes.length == topMostNodes.length) { + isConnected = true; + } + + if (!isConnected || isConnected && count > 1) { + minDegreeNode = visitedTopMostNodes[0]; + minDegree = minDegreeNode.connectedEdges().length; + visitedTopMostNodes.forEach(function (node) { + if (node.connectedEdges().length < minDegree) { + minDegree = node.connectedEdges().length; + minDegreeNode = node; + } + }); + nodesConnectedToDummy.push(minDegreeNode.id()); + // TO DO: Check efficiency of this part + var temp = cy.collection(); + temp.merge(visitedTopMostNodes[0]); + visitedTopMostNodes.forEach(function (node) { + temp.merge(node); + }); + visitedTopMostNodes = []; + topMostNodes = topMostNodes.difference(temp); + count++; + } + }; + + do { + _loop(); + } while (!isConnected); + + if (dummyNodes) { + if (nodesConnectedToDummy.length > 0) { + dummyNodes.set('dummy' + (dummyNodes.size + 1), nodesConnectedToDummy); + } + } + return components; +}; + +// relocates componentResult to originalCenter if there is no fixedNodeConstraint +auxiliary.relocateComponent = function (originalCenter, componentResult, options) { + if (!options.fixedNodeConstraint) { + var minXCoord = Number.POSITIVE_INFINITY; + var maxXCoord = Number.NEGATIVE_INFINITY; + var minYCoord = Number.POSITIVE_INFINITY; + var maxYCoord = Number.NEGATIVE_INFINITY; + if (options.quality == "draft") { + // calculate current bounding box + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = componentResult.nodeIndexes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _ref = _step.value; + + var _ref2 = _slicedToArray(_ref, 2); + + var key = _ref2[0]; + var value = _ref2[1]; + + var cyNode = options.cy.getElementById(key); + if (cyNode) { + var nodeBB = cyNode.boundingBox(); + var leftX = componentResult.xCoords[value] - nodeBB.w / 2; + var rightX = componentResult.xCoords[value] + nodeBB.w / 2; + var topY = componentResult.yCoords[value] - nodeBB.h / 2; + var bottomY = componentResult.yCoords[value] + nodeBB.h / 2; + + if (leftX < minXCoord) minXCoord = leftX; + if (rightX > maxXCoord) maxXCoord = rightX; + if (topY < minYCoord) minYCoord = topY; + if (bottomY > maxYCoord) maxYCoord = bottomY; + } + } + // find difference between current and original center + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var diffOnX = originalCenter.x - (maxXCoord + minXCoord) / 2; + var diffOnY = originalCenter.y - (maxYCoord + minYCoord) / 2; + // move component to original center + componentResult.xCoords = componentResult.xCoords.map(function (x) { + return x + diffOnX; + }); + componentResult.yCoords = componentResult.yCoords.map(function (y) { + return y + diffOnY; + }); + } else { + // calculate current bounding box + Object.keys(componentResult).forEach(function (item) { + var node = componentResult[item]; + var leftX = node.getRect().x; + var rightX = node.getRect().x + node.getRect().width; + var topY = node.getRect().y; + var bottomY = node.getRect().y + node.getRect().height; + + if (leftX < minXCoord) minXCoord = leftX; + if (rightX > maxXCoord) maxXCoord = rightX; + if (topY < minYCoord) minYCoord = topY; + if (bottomY > maxYCoord) maxYCoord = bottomY; + }); + // find difference between current and original center + var _diffOnX = originalCenter.x - (maxXCoord + minXCoord) / 2; + var _diffOnY = originalCenter.y - (maxYCoord + minYCoord) / 2; + // move component to original center + Object.keys(componentResult).forEach(function (item) { + var node = componentResult[item]; + node.setCenter(node.getCenterX() + _diffOnX, node.getCenterY() + _diffOnY); + }); + } + } +}; + +auxiliary.calcBoundingBox = function (parentNode, xCoords, yCoords, nodeIndexes) { + // calculate bounds + var left = Number.MAX_SAFE_INTEGER; + var right = Number.MIN_SAFE_INTEGER; + var top = Number.MAX_SAFE_INTEGER; + var bottom = Number.MIN_SAFE_INTEGER; + var nodeLeft = void 0; + var nodeRight = void 0; + var nodeTop = void 0; + var nodeBottom = void 0; + + var nodes = parentNode.descendants().not(":parent"); + var s = nodes.length; + for (var i = 0; i < s; i++) { + var node = nodes[i]; + + nodeLeft = xCoords[nodeIndexes.get(node.id())] - node.width() / 2; + nodeRight = xCoords[nodeIndexes.get(node.id())] + node.width() / 2; + nodeTop = yCoords[nodeIndexes.get(node.id())] - node.height() / 2; + nodeBottom = yCoords[nodeIndexes.get(node.id())] + node.height() / 2; + + if (left > nodeLeft) { + left = nodeLeft; + } + + if (right < nodeRight) { + right = nodeRight; + } + + if (top > nodeTop) { + top = nodeTop; + } + + if (bottom < nodeBottom) { + bottom = nodeBottom; + } + } + + var boundingBox = {}; + boundingBox.topLeftX = left; + boundingBox.topLeftY = top; + boundingBox.width = right - left; + boundingBox.height = bottom - top; + return boundingBox; +}; + +// This function finds and returns parent nodes whose all children are hidden +auxiliary.calcParentsWithoutChildren = function (cy, eles) { + var parentsWithoutChildren = cy.collection(); + eles.nodes(':parent').forEach(function (parent) { + var check = false; + parent.children().forEach(function (child) { + if (child.css('display') != 'none') { + check = true; + } + }); + if (!check) { + parentsWithoutChildren.merge(parent); + } + }); + + return parentsWithoutChildren; +}; + +module.exports = auxiliary; + +/***/ }), + +/***/ 816: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +/** + The implementation of the postprocessing part that applies CoSE layout over the spectral layout +*/ + +var aux = __webpack_require__(548); +var CoSELayout = __webpack_require__(140).CoSELayout; +var CoSENode = __webpack_require__(140).CoSENode; +var PointD = __webpack_require__(140).layoutBase.PointD; +var DimensionD = __webpack_require__(140).layoutBase.DimensionD; +var LayoutConstants = __webpack_require__(140).layoutBase.LayoutConstants; +var FDLayoutConstants = __webpack_require__(140).layoutBase.FDLayoutConstants; +var CoSEConstants = __webpack_require__(140).CoSEConstants; + +// main function that cose layout is processed +var coseLayout = function coseLayout(options, spectralResult) { + + var cy = options.cy; + var eles = options.eles; + var nodes = eles.nodes(); + var edges = eles.edges(); + + var nodeIndexes = void 0; + var xCoords = void 0; + var yCoords = void 0; + var idToLNode = {}; + + if (options.randomize) { + nodeIndexes = spectralResult["nodeIndexes"]; + xCoords = spectralResult["xCoords"]; + yCoords = spectralResult["yCoords"]; + } + + var isFn = function isFn(fn) { + return typeof fn === 'function'; + }; + + var optFn = function optFn(opt, ele) { + if (isFn(opt)) { + return opt(ele); + } else { + return opt; + } + }; + + /**** Postprocessing functions ****/ + + var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles); + + // transfer cytoscape nodes to cose nodes + var processChildrenList = function processChildrenList(parent, children, layout, options) { + var size = children.length; + for (var i = 0; i < size; i++) { + var theChild = children[i]; + var children_of_children = null; + if (theChild.intersection(parentsWithoutChildren).length == 0) { + children_of_children = theChild.children(); + } + var theNode = void 0; + + var dimensions = theChild.layoutDimensions({ + nodeDimensionsIncludeLabels: options.nodeDimensionsIncludeLabels + }); + + if (theChild.outerWidth() != null && theChild.outerHeight() != null) { + if (options.randomize) { + if (!theChild.isParent()) { + theNode = parent.add(new CoSENode(layout.graphManager, new PointD(xCoords[nodeIndexes.get(theChild.id())] - dimensions.w / 2, yCoords[nodeIndexes.get(theChild.id())] - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h)))); + } else { + var parentInfo = aux.calcBoundingBox(theChild, xCoords, yCoords, nodeIndexes); + if (theChild.intersection(parentsWithoutChildren).length == 0) { + theNode = parent.add(new CoSENode(layout.graphManager, new PointD(parentInfo.topLeftX, parentInfo.topLeftY), new DimensionD(parentInfo.width, parentInfo.height))); + } else { + // for the parentsWithoutChildren + theNode = parent.add(new CoSENode(layout.graphManager, new PointD(parentInfo.topLeftX, parentInfo.topLeftY), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h)))); + } + } + } else { + theNode = parent.add(new CoSENode(layout.graphManager, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h)))); + } + } else { + theNode = parent.add(new CoSENode(this.graphManager)); + } + // Attach id to the layout node and repulsion value + theNode.id = theChild.data("id"); + theNode.nodeRepulsion = optFn(options.nodeRepulsion, theChild); + // Attach the paddings of cy node to layout node + theNode.paddingLeft = parseInt(theChild.css('padding')); + theNode.paddingTop = parseInt(theChild.css('padding')); + theNode.paddingRight = parseInt(theChild.css('padding')); + theNode.paddingBottom = parseInt(theChild.css('padding')); + + //Attach the label properties to both compound and simple nodes if labels will be included in node dimensions + //These properties will be used while updating bounds of compounds during iterations or tiling + //and will be used for simple nodes while transferring final positions to cytoscape + if (options.nodeDimensionsIncludeLabels) { + theNode.labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).w; + theNode.labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).h; + theNode.labelPosVertical = theChild.css("text-valign"); + theNode.labelPosHorizontal = theChild.css("text-halign"); + } + + // Map the layout node + idToLNode[theChild.data("id")] = theNode; + + if (isNaN(theNode.rect.x)) { + theNode.rect.x = 0; + } + + if (isNaN(theNode.rect.y)) { + theNode.rect.y = 0; + } + + if (children_of_children != null && children_of_children.length > 0) { + var theNewGraph = void 0; + theNewGraph = layout.getGraphManager().add(layout.newGraph(), theNode); + processChildrenList(theNewGraph, children_of_children, layout, options); + } + } + }; + + // transfer cytoscape edges to cose edges + var processEdges = function processEdges(layout, gm, edges) { + var idealLengthTotal = 0; + var edgeCount = 0; + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + var sourceNode = idToLNode[edge.data("source")]; + var targetNode = idToLNode[edge.data("target")]; + if (sourceNode && targetNode && sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) { + var e1 = gm.add(layout.newEdge(), sourceNode, targetNode); + e1.id = edge.id(); + e1.idealLength = optFn(options.idealEdgeLength, edge); + e1.edgeElasticity = optFn(options.edgeElasticity, edge); + idealLengthTotal += e1.idealLength; + edgeCount++; + } + } + // we need to update the ideal edge length constant with the avg. ideal length value after processing edges + // in case there is no edge, use other options + if (options.idealEdgeLength != null) { + if (edgeCount > 0) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = idealLengthTotal / edgeCount;else if (!isFn(options.idealEdgeLength)) // in case there is no edge, but option gives a value to use + CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options.idealEdgeLength;else // in case there is no edge and we cannot get a value from option (because it's a function) + CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50; + // we need to update these constant values based on the ideal edge length constant + CoSEConstants.MIN_REPULSION_DIST = FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0; + CoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH; + } + }; + + // transfer cytoscape constraints to cose layout + var processConstraints = function processConstraints(layout, options) { + // get nodes to be fixed + if (options.fixedNodeConstraint) { + layout.constraints["fixedNodeConstraint"] = options.fixedNodeConstraint; + } + // get nodes to be aligned + if (options.alignmentConstraint) { + layout.constraints["alignmentConstraint"] = options.alignmentConstraint; + } + // get nodes to be relatively placed + if (options.relativePlacementConstraint) { + layout.constraints["relativePlacementConstraint"] = options.relativePlacementConstraint; + } + }; + + /**** Apply postprocessing ****/ + if (options.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options.nestingFactor; + if (options.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options.gravity; + if (options.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options.numIter; + if (options.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options.gravityRange; + if (options.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options.gravityCompound; + if (options.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options.gravityRangeCompound; + if (options.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options.initialEnergyOnIncremental; + + if (options.tilingCompareBy != null) CoSEConstants.TILING_COMPARE_BY = options.tilingCompareBy; + + if (options.quality == 'proof') LayoutConstants.QUALITY = 2;else LayoutConstants.QUALITY = 0; + + CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options.nodeDimensionsIncludeLabels; + CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options.randomize; + CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options.animate; + CoSEConstants.TILE = options.tile; + CoSEConstants.TILING_PADDING_VERTICAL = typeof options.tilingPaddingVertical === 'function' ? options.tilingPaddingVertical.call() : options.tilingPaddingVertical; + CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options.tilingPaddingHorizontal === 'function' ? options.tilingPaddingHorizontal.call() : options.tilingPaddingHorizontal; + + CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = true; + CoSEConstants.PURE_INCREMENTAL = !options.randomize; + LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = options.uniformNodeDimensions; + + // This part is for debug/demo purpose + if (options.step == "transformed") { + CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true; + CoSEConstants.ENFORCE_CONSTRAINTS = false; + CoSEConstants.APPLY_LAYOUT = false; + } + if (options.step == "enforced") { + CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false; + CoSEConstants.ENFORCE_CONSTRAINTS = true; + CoSEConstants.APPLY_LAYOUT = false; + } + if (options.step == "cose") { + CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false; + CoSEConstants.ENFORCE_CONSTRAINTS = false; + CoSEConstants.APPLY_LAYOUT = true; + } + if (options.step == "all") { + if (options.randomize) CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;else CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false; + CoSEConstants.ENFORCE_CONSTRAINTS = true; + CoSEConstants.APPLY_LAYOUT = true; + } + + if (options.fixedNodeConstraint || options.alignmentConstraint || options.relativePlacementConstraint) { + CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; + } else { + CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true; + } + + var coseLayout = new CoSELayout(); + var gm = coseLayout.newGraphManager(); + + processChildrenList(gm.addRoot(), aux.getTopMostNodes(nodes), coseLayout, options); + processEdges(coseLayout, gm, edges); + processConstraints(coseLayout, options); + + coseLayout.runLayout(); + + return idToLNode; +}; + +module.exports = { coseLayout: coseLayout }; + +/***/ }), + +/***/ 212: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + The implementation of the fcose layout algorithm +*/ + +var assign = __webpack_require__(658); +var aux = __webpack_require__(548); + +var _require = __webpack_require__(657), + spectralLayout = _require.spectralLayout; + +var _require2 = __webpack_require__(816), + coseLayout = _require2.coseLayout; + +var defaults = Object.freeze({ + + // 'draft', 'default' or 'proof' + // - 'draft' only applies spectral layout + // - 'default' improves the quality with subsequent CoSE layout (fast cooling rate) + // - 'proof' improves the quality with subsequent CoSE layout (slow cooling rate) + quality: "default", + // Use random node positions at beginning of layout + // if this is set to false, then quality option must be "proof" + randomize: true, + // Whether or not to animate the layout + animate: true, + // Duration of animation in ms, if enabled + animationDuration: 1000, + // Easing of animation, if enabled + animationEasing: undefined, + // Fit the viewport to the repositioned nodes + fit: true, + // Padding around layout + padding: 30, + // Whether to include labels in node dimensions. Valid in "proof" quality + nodeDimensionsIncludeLabels: false, + // Whether or not simple nodes (non-compound nodes) are of uniform dimensions + uniformNodeDimensions: false, + // Whether to pack disconnected components - valid only if randomize: true + packComponents: true, + // Layout step - all, transformed, enforced, cose - for debug purpose only + step: "all", + + /* spectral layout options */ + + // False for random, true for greedy + samplingType: true, + // Sample size to construct distance matrix + sampleSize: 25, + // Separation amount between nodes + nodeSeparation: 75, + // Power iteration tolerance + piTol: 0.0000001, + + /* CoSE layout options */ + + // Node repulsion (non overlapping) multiplier + nodeRepulsion: function nodeRepulsion(node) { + return 4500; + }, + // Ideal edge (non nested) length + idealEdgeLength: function idealEdgeLength(edge) { + return 50; + }, + // Divisor to compute edge forces + edgeElasticity: function edgeElasticity(edge) { + return 0.45; + }, + // Nesting factor (multiplier) to compute ideal edge length for nested edges + nestingFactor: 0.1, + // Gravity force (constant) + gravity: 0.25, + // Maximum number of iterations to perform + numIter: 2500, + // For enabling tiling + tile: true, + // The function that specifies the criteria for comparing nodes while sorting them during tiling operation. + // Takes the node id as a parameter and the default tiling operation is perfomed when this option is not set. + tilingCompareBy: undefined, + // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function) + tilingPaddingVertical: 10, + // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function) + tilingPaddingHorizontal: 10, + // Gravity range (constant) for compounds + gravityRangeCompound: 1.5, + // Gravity force (constant) for compounds + gravityCompound: 1.0, + // Gravity range (constant) + gravityRange: 3.8, + // Initial cooling factor for incremental layout + initialEnergyOnIncremental: 0.3, + + /* constraint options */ + + // Fix required nodes to predefined positions + // [{nodeId: 'n1', position: {x: 100, y: 200}, {...}] + fixedNodeConstraint: undefined, + // Align required nodes in vertical/horizontal direction + // {vertical: [['n1', 'n2')], ['n3', 'n4']], horizontal: ['n2', 'n4']} + alignmentConstraint: undefined, + // Place two nodes relatively in vertical/horizontal direction + // [{top: 'n1', bottom: 'n2', gap: 100}, {left: 'n3', right: 'n4', gap: 75}] + relativePlacementConstraint: undefined, + + /* layout event callbacks */ + ready: function ready() {}, // on layoutready + stop: function stop() {} // on layoutstop +}); + +var Layout = function () { + function Layout(options) { + _classCallCheck(this, Layout); + + this.options = assign({}, defaults, options); + } + + _createClass(Layout, [{ + key: 'run', + value: function run() { + var layout = this; + var options = this.options; + var cy = options.cy; + var eles = options.eles; + + var spectralResult = []; + var xCoords = void 0; + var yCoords = void 0; + var coseResult = []; + var components = void 0; + var componentCenters = []; + + // basic validity check for constraint inputs + if (options.fixedNodeConstraint && (!Array.isArray(options.fixedNodeConstraint) || options.fixedNodeConstraint.length == 0)) { + options.fixedNodeConstraint = undefined; + } + + if (options.alignmentConstraint) { + if (options.alignmentConstraint.vertical && (!Array.isArray(options.alignmentConstraint.vertical) || options.alignmentConstraint.vertical.length == 0)) { + options.alignmentConstraint.vertical = undefined; + } + if (options.alignmentConstraint.horizontal && (!Array.isArray(options.alignmentConstraint.horizontal) || options.alignmentConstraint.horizontal.length == 0)) { + options.alignmentConstraint.horizontal = undefined; + } + } + + if (options.relativePlacementConstraint && (!Array.isArray(options.relativePlacementConstraint) || options.relativePlacementConstraint.length == 0)) { + options.relativePlacementConstraint = undefined; + } + + // if any constraint exists, set some options + var constraintExist = options.fixedNodeConstraint || options.alignmentConstraint || options.relativePlacementConstraint; + if (constraintExist) { + // constraints work with these options + options.tile = false; + options.packComponents = false; + } + + // decide component packing is enabled or not + var layUtil = void 0; + var packingEnabled = false; + if (cy.layoutUtilities && options.packComponents) { + layUtil = cy.layoutUtilities("get"); + if (!layUtil) layUtil = cy.layoutUtilities(); + packingEnabled = true; + } + + if (eles.nodes().length > 0) { + // if packing is not enabled, perform layout on the whole graph + if (!packingEnabled) { + // store component center + var boundingBox = options.eles.boundingBox(); + componentCenters.push({ x: boundingBox.x1 + boundingBox.w / 2, y: boundingBox.y1 + boundingBox.h / 2 }); + // apply spectral layout + if (options.randomize) { + var result = spectralLayout(options); + spectralResult.push(result); + } + // apply cose layout as postprocessing + if (options.quality == "default" || options.quality == "proof") { + coseResult.push(coseLayout(options, spectralResult[0])); + aux.relocateComponent(componentCenters[0], coseResult[0], options); // relocate center to original position + } else { + aux.relocateComponent(componentCenters[0], spectralResult[0], options); // relocate center to original position + } + } else { + // packing is enabled + var topMostNodes = aux.getTopMostNodes(options.eles.nodes()); + components = aux.connectComponents(cy, options.eles, topMostNodes); + // store component centers + components.forEach(function (component) { + var boundingBox = component.boundingBox(); + componentCenters.push({ x: boundingBox.x1 + boundingBox.w / 2, y: boundingBox.y1 + boundingBox.h / 2 }); + }); + + //send each component to spectral layout if randomized + if (options.randomize) { + components.forEach(function (component) { + options.eles = component; + spectralResult.push(spectralLayout(options)); + }); + } + + if (options.quality == "default" || options.quality == "proof") { + var toBeTiledNodes = cy.collection(); + if (options.tile) { + // behave nodes to be tiled as one component + var nodeIndexes = new Map(); + var _xCoords = []; + var _yCoords = []; + var count = 0; + var tempSpectralResult = { nodeIndexes: nodeIndexes, xCoords: _xCoords, yCoords: _yCoords }; + var indexesToBeDeleted = []; + components.forEach(function (component, index) { + if (component.edges().length == 0) { + component.nodes().forEach(function (node, i) { + toBeTiledNodes.merge(component.nodes()[i]); + if (!node.isParent()) { + tempSpectralResult.nodeIndexes.set(component.nodes()[i].id(), count++); + tempSpectralResult.xCoords.push(component.nodes()[0].position().x); + tempSpectralResult.yCoords.push(component.nodes()[0].position().y); + } + }); + indexesToBeDeleted.push(index); + } + }); + if (toBeTiledNodes.length > 1) { + var _boundingBox = toBeTiledNodes.boundingBox(); + componentCenters.push({ x: _boundingBox.x1 + _boundingBox.w / 2, y: _boundingBox.y1 + _boundingBox.h / 2 }); + components.push(toBeTiledNodes); + spectralResult.push(tempSpectralResult); + for (var i = indexesToBeDeleted.length - 1; i >= 0; i--) { + components.splice(indexesToBeDeleted[i], 1); + spectralResult.splice(indexesToBeDeleted[i], 1); + componentCenters.splice(indexesToBeDeleted[i], 1); + }; + } + } + components.forEach(function (component, index) { + // send each component to cose layout + options.eles = component; + coseResult.push(coseLayout(options, spectralResult[index])); + aux.relocateComponent(componentCenters[index], coseResult[index], options); // relocate center to original position + }); + } else { + components.forEach(function (component, index) { + aux.relocateComponent(componentCenters[index], spectralResult[index], options); // relocate center to original position + }); + } + + // packing + var componentsEvaluated = new Set(); + if (components.length > 1) { + var subgraphs = []; + var hiddenEles = eles.filter(function (ele) { + return ele.css('display') == 'none'; + }); + components.forEach(function (component, index) { + var nodeIndexes = void 0; + if (options.quality == "draft") { + nodeIndexes = spectralResult[index].nodeIndexes; + } + + if (component.nodes().not(hiddenEles).length > 0) { + var subgraph = {}; + subgraph.edges = []; + subgraph.nodes = []; + var nodeIndex = void 0; + component.nodes().not(hiddenEles).forEach(function (node) { + if (options.quality == "draft") { + if (!node.isParent()) { + nodeIndex = nodeIndexes.get(node.id()); + subgraph.nodes.push({ x: spectralResult[index].xCoords[nodeIndex] - node.boundingbox().w / 2, y: spectralResult[index].yCoords[nodeIndex] - node.boundingbox().h / 2, width: node.boundingbox().w, height: node.boundingbox().h }); + } else { + var parentInfo = aux.calcBoundingBox(node, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes); + subgraph.nodes.push({ x: parentInfo.topLeftX, y: parentInfo.topLeftY, width: parentInfo.width, height: parentInfo.height }); + } + } else { + if (coseResult[index][node.id()]) { + subgraph.nodes.push({ x: coseResult[index][node.id()].getLeft(), y: coseResult[index][node.id()].getTop(), width: coseResult[index][node.id()].getWidth(), height: coseResult[index][node.id()].getHeight() }); + } + } + }); + component.edges().forEach(function (edge) { + var source = edge.source(); + var target = edge.target(); + if (source.css("display") != "none" && target.css("display") != "none") { + if (options.quality == "draft") { + var sourceNodeIndex = nodeIndexes.get(source.id()); + var targetNodeIndex = nodeIndexes.get(target.id()); + var sourceCenter = []; + var targetCenter = []; + if (source.isParent()) { + var parentInfo = aux.calcBoundingBox(source, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes); + sourceCenter.push(parentInfo.topLeftX + parentInfo.width / 2); + sourceCenter.push(parentInfo.topLeftY + parentInfo.height / 2); + } else { + sourceCenter.push(spectralResult[index].xCoords[sourceNodeIndex]); + sourceCenter.push(spectralResult[index].yCoords[sourceNodeIndex]); + } + if (target.isParent()) { + var _parentInfo = aux.calcBoundingBox(target, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes); + targetCenter.push(_parentInfo.topLeftX + _parentInfo.width / 2); + targetCenter.push(_parentInfo.topLeftY + _parentInfo.height / 2); + } else { + targetCenter.push(spectralResult[index].xCoords[targetNodeIndex]); + targetCenter.push(spectralResult[index].yCoords[targetNodeIndex]); + } + subgraph.edges.push({ startX: sourceCenter[0], startY: sourceCenter[1], endX: targetCenter[0], endY: targetCenter[1] }); + } else { + if (coseResult[index][source.id()] && coseResult[index][target.id()]) { + subgraph.edges.push({ startX: coseResult[index][source.id()].getCenterX(), startY: coseResult[index][source.id()].getCenterY(), endX: coseResult[index][target.id()].getCenterX(), endY: coseResult[index][target.id()].getCenterY() }); + } + } + } + }); + if (subgraph.nodes.length > 0) { + subgraphs.push(subgraph); + componentsEvaluated.add(index); + } + } + }); + var shiftResult = layUtil.packComponents(subgraphs, options.randomize).shifts; + if (options.quality == "draft") { + spectralResult.forEach(function (result, index) { + var newXCoords = result.xCoords.map(function (x) { + return x + shiftResult[index].dx; + }); + var newYCoords = result.yCoords.map(function (y) { + return y + shiftResult[index].dy; + }); + result.xCoords = newXCoords; + result.yCoords = newYCoords; + }); + } else { + var _count = 0; + componentsEvaluated.forEach(function (index) { + Object.keys(coseResult[index]).forEach(function (item) { + var nodeRectangle = coseResult[index][item]; + nodeRectangle.setCenter(nodeRectangle.getCenterX() + shiftResult[_count].dx, nodeRectangle.getCenterY() + shiftResult[_count].dy); + }); + _count++; + }); + } + } + } + } + + // get each element's calculated position + var getPositions = function getPositions(ele, i) { + if (options.quality == "default" || options.quality == "proof") { + if (typeof ele === "number") { + ele = i; + } + var pos = void 0; + var node = void 0; + var theId = ele.data('id'); + coseResult.forEach(function (result) { + if (theId in result) { + pos = { x: result[theId].getRect().getCenterX(), y: result[theId].getRect().getCenterY() }; + node = result[theId]; + } + }); + if (options.nodeDimensionsIncludeLabels) { + if (node.labelWidth) { + if (node.labelPosHorizontal == "left") { + pos.x += node.labelWidth / 2; + } else if (node.labelPosHorizontal == "right") { + pos.x -= node.labelWidth / 2; + } + } + if (node.labelHeight) { + if (node.labelPosVertical == "top") { + pos.y += node.labelHeight / 2; + } else if (node.labelPosVertical == "bottom") { + pos.y -= node.labelHeight / 2; + } + } + } + if (pos == undefined) pos = { x: ele.position("x"), y: ele.position("y") }; + return { + x: pos.x, + y: pos.y + }; + } else { + var _pos = void 0; + spectralResult.forEach(function (result) { + var index = result.nodeIndexes.get(ele.id()); + if (index != undefined) { + _pos = { x: result.xCoords[index], y: result.yCoords[index] }; + } + }); + if (_pos == undefined) _pos = { x: ele.position("x"), y: ele.position("y") }; + return { + x: _pos.x, + y: _pos.y + }; + } + }; + + // quality = "draft" and randomize = false are contradictive so in that case positions don't change + if (options.quality == "default" || options.quality == "proof" || options.randomize) { + // transfer calculated positions to nodes (positions of only simple nodes are evaluated, compounds are positioned automatically) + var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles); + var _hiddenEles = eles.filter(function (ele) { + return ele.css('display') == 'none'; + }); + options.eles = eles.not(_hiddenEles); + + eles.nodes().not(":parent").not(_hiddenEles).layoutPositions(layout, options, getPositions); + + if (parentsWithoutChildren.length > 0) { + parentsWithoutChildren.forEach(function (ele) { + ele.position(getPositions(ele)); + }); + } + } else { + console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'."); + } + } + }]); + + return Layout; +}(); + +module.exports = Layout; + +/***/ }), + +/***/ 657: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +/** + The implementation of the spectral layout that is the first part of the fcose layout algorithm +*/ + +var aux = __webpack_require__(548); +var Matrix = __webpack_require__(140).layoutBase.Matrix; +var SVD = __webpack_require__(140).layoutBase.SVD; + +// main function that spectral layout is processed +var spectralLayout = function spectralLayout(options) { + + var cy = options.cy; + var eles = options.eles; + var nodes = eles.nodes(); + var parentNodes = eles.nodes(":parent"); + + var dummyNodes = new Map(); // map to keep dummy nodes and their neighbors + var nodeIndexes = new Map(); // map to keep indexes to nodes + var parentChildMap = new Map(); // mapping btw. compound and its representative node + var allNodesNeighborhood = []; // array to keep neighborhood of all nodes + var xCoords = []; + var yCoords = []; + + var samplesColumn = []; // sampled vertices + var minDistancesColumn = []; + var C = []; // column sampling matrix + var PHI = []; // intersection of column and row sampling matrices + var INV = []; // inverse of PHI + + var firstSample = void 0; // the first sampled node + var nodeSize = void 0; + + var infinity = 100000000; + var small = 0.000000001; + + var piTol = options.piTol; + var samplingType = options.samplingType; // false for random, true for greedy + var nodeSeparation = options.nodeSeparation; + var sampleSize = void 0; + + /**** Spectral-preprocessing functions ****/ + + /**** Spectral layout functions ****/ + + // determine which columns to be sampled + var randomSampleCR = function randomSampleCR() { + var sample = 0; + var count = 0; + var flag = false; + + while (count < sampleSize) { + sample = Math.floor(Math.random() * nodeSize); + + flag = false; + for (var i = 0; i < count; i++) { + if (samplesColumn[i] == sample) { + flag = true; + break; + } + } + + if (!flag) { + samplesColumn[count] = sample; + count++; + } else { + continue; + } + } + }; + + // takes the index of the node(pivot) to initiate BFS as a parameter + var BFS = function BFS(pivot, index, samplingMethod) { + var path = []; // the front of the path + var front = 0; // the back of the path + var back = 0; + var current = 0; + var temp = void 0; + var distance = []; + + var max_dist = 0; // the furthest node to be returned + var max_ind = 1; + + for (var i = 0; i < nodeSize; i++) { + distance[i] = infinity; + } + + path[back] = pivot; + distance[pivot] = 0; + + while (back >= front) { + current = path[front++]; + var neighbors = allNodesNeighborhood[current]; + for (var _i = 0; _i < neighbors.length; _i++) { + temp = nodeIndexes.get(neighbors[_i]); + if (distance[temp] == infinity) { + distance[temp] = distance[current] + 1; + path[++back] = temp; + } + } + C[current][index] = distance[current] * nodeSeparation; + } + + if (samplingMethod) { + for (var _i2 = 0; _i2 < nodeSize; _i2++) { + if (C[_i2][index] < minDistancesColumn[_i2]) minDistancesColumn[_i2] = C[_i2][index]; + } + + for (var _i3 = 0; _i3 < nodeSize; _i3++) { + if (minDistancesColumn[_i3] > max_dist) { + max_dist = minDistancesColumn[_i3]; + max_ind = _i3; + } + } + } + return max_ind; + }; + + // apply BFS to all nodes or selected samples + var allBFS = function allBFS(samplingMethod) { + + var sample = void 0; + + if (!samplingMethod) { + randomSampleCR(); + + // call BFS + for (var i = 0; i < sampleSize; i++) { + BFS(samplesColumn[i], i, samplingMethod, false); + } + } else { + sample = Math.floor(Math.random() * nodeSize); + firstSample = sample; + + for (var _i4 = 0; _i4 < nodeSize; _i4++) { + minDistancesColumn[_i4] = infinity; + } + + for (var _i5 = 0; _i5 < sampleSize; _i5++) { + samplesColumn[_i5] = sample; + sample = BFS(sample, _i5, samplingMethod); + } + } + + // form the squared distances for C + for (var _i6 = 0; _i6 < nodeSize; _i6++) { + for (var j = 0; j < sampleSize; j++) { + C[_i6][j] *= C[_i6][j]; + } + } + + // form PHI + for (var _i7 = 0; _i7 < sampleSize; _i7++) { + PHI[_i7] = []; + } + + for (var _i8 = 0; _i8 < sampleSize; _i8++) { + for (var _j = 0; _j < sampleSize; _j++) { + PHI[_i8][_j] = C[samplesColumn[_j]][_i8]; + } + } + }; + + // perform the SVD algorithm and apply a regularization step + var sample = function sample() { + + var SVDResult = SVD.svd(PHI); + + var a_q = SVDResult.S; + var a_u = SVDResult.U; + var a_v = SVDResult.V; + + var max_s = a_q[0] * a_q[0] * a_q[0]; + + var a_Sig = []; + + // regularization + for (var i = 0; i < sampleSize; i++) { + a_Sig[i] = []; + for (var j = 0; j < sampleSize; j++) { + a_Sig[i][j] = 0; + if (i == j) { + a_Sig[i][j] = a_q[i] / (a_q[i] * a_q[i] + max_s / (a_q[i] * a_q[i])); + } + } + } + + INV = Matrix.multMat(Matrix.multMat(a_v, a_Sig), Matrix.transpose(a_u)); + }; + + // calculate final coordinates + var powerIteration = function powerIteration() { + // two largest eigenvalues + var theta1 = void 0; + var theta2 = void 0; + + // initial guesses for eigenvectors + var Y1 = []; + var Y2 = []; + + var V1 = []; + var V2 = []; + + for (var i = 0; i < nodeSize; i++) { + Y1[i] = Math.random(); + Y2[i] = Math.random(); + } + + Y1 = Matrix.normalize(Y1); + Y2 = Matrix.normalize(Y2); + + var count = 0; + // to keep track of the improvement ratio in power iteration + var current = small; + var previous = small; + + var temp = void 0; + + while (true) { + count++; + + for (var _i9 = 0; _i9 < nodeSize; _i9++) { + V1[_i9] = Y1[_i9]; + } + + Y1 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V1), C, INV)); + theta1 = Matrix.dotProduct(V1, Y1); + Y1 = Matrix.normalize(Y1); + + current = Matrix.dotProduct(V1, Y1); + + temp = Math.abs(current / previous); + + if (temp <= 1 + piTol && temp >= 1) { + break; + } + + previous = current; + } + + for (var _i10 = 0; _i10 < nodeSize; _i10++) { + V1[_i10] = Y1[_i10]; + } + + count = 0; + previous = small; + while (true) { + count++; + + for (var _i11 = 0; _i11 < nodeSize; _i11++) { + V2[_i11] = Y2[_i11]; + } + + V2 = Matrix.minusOp(V2, Matrix.multCons(V1, Matrix.dotProduct(V1, V2))); + Y2 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V2), C, INV)); + theta2 = Matrix.dotProduct(V2, Y2); + Y2 = Matrix.normalize(Y2); + + current = Matrix.dotProduct(V2, Y2); + + temp = Math.abs(current / previous); + + if (temp <= 1 + piTol && temp >= 1) { + break; + } + + previous = current; + } + + for (var _i12 = 0; _i12 < nodeSize; _i12++) { + V2[_i12] = Y2[_i12]; + } + + // theta1 now contains dominant eigenvalue + // theta2 now contains the second-largest eigenvalue + // V1 now contains theta1's eigenvector + // V2 now contains theta2's eigenvector + + //populate the two vectors + xCoords = Matrix.multCons(V1, Math.sqrt(Math.abs(theta1))); + yCoords = Matrix.multCons(V2, Math.sqrt(Math.abs(theta2))); + }; + + /**** Preparation for spectral layout (Preprocessing) ****/ + + // connect disconnected components (first top level, then inside of each compound node) + aux.connectComponents(cy, eles, aux.getTopMostNodes(nodes), dummyNodes); + + parentNodes.forEach(function (ele) { + aux.connectComponents(cy, eles, aux.getTopMostNodes(ele.descendants().intersection(eles)), dummyNodes); + }); + + // assign indexes to nodes (first real, then dummy nodes) + var index = 0; + for (var i = 0; i < nodes.length; i++) { + if (!nodes[i].isParent()) { + nodeIndexes.set(nodes[i].id(), index++); + } + } + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = dummyNodes.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var key = _step.value; + + nodeIndexes.set(key, index++); + } + + // instantiate the neighborhood matrix + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + for (var _i13 = 0; _i13 < nodeIndexes.size; _i13++) { + allNodesNeighborhood[_i13] = []; + } + + // form a parent-child map to keep representative node of each compound node + parentNodes.forEach(function (ele) { + var children = ele.children().intersection(eles); + + // let random = 0; + while (children.nodes(":childless").length == 0) { + // random = Math.floor(Math.random() * children.nodes().length); // if all children are compound then proceed randomly + children = children.nodes()[0].children().intersection(eles); + } + // select the representative node - we can apply different methods here + // random = Math.floor(Math.random() * children.nodes(":childless").length); + var index = 0; + var min = children.nodes(":childless")[0].connectedEdges().length; + children.nodes(":childless").forEach(function (ele2, i) { + if (ele2.connectedEdges().length < min) { + min = ele2.connectedEdges().length; + index = i; + } + }); + parentChildMap.set(ele.id(), children.nodes(":childless")[index].id()); + }); + + // add neighborhood relations (first real, then dummy nodes) + nodes.forEach(function (ele) { + var eleIndex = void 0; + + if (ele.isParent()) eleIndex = nodeIndexes.get(parentChildMap.get(ele.id()));else eleIndex = nodeIndexes.get(ele.id()); + + ele.neighborhood().nodes().forEach(function (node) { + if (eles.intersection(ele.edgesWith(node)).length > 0) { + if (node.isParent()) allNodesNeighborhood[eleIndex].push(parentChildMap.get(node.id()));else allNodesNeighborhood[eleIndex].push(node.id()); + } + }); + }); + + var _loop = function _loop(_key) { + var eleIndex = nodeIndexes.get(_key); + var disconnectedId = void 0; + dummyNodes.get(_key).forEach(function (id) { + if (cy.getElementById(id).isParent()) disconnectedId = parentChildMap.get(id);else disconnectedId = id; + + allNodesNeighborhood[eleIndex].push(disconnectedId); + allNodesNeighborhood[nodeIndexes.get(disconnectedId)].push(_key); + }); + }; + + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = dummyNodes.keys()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var _key = _step2.value; + + _loop(_key); + } + + // nodeSize now only considers the size of transformed graph + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + nodeSize = nodeIndexes.size; + + var spectralResult = void 0; + + // If number of nodes in transformed graph is 1 or 2, either SVD or powerIteration causes problem + // So skip spectral and layout the graph with cose + if (nodeSize > 2) { + // if # of nodes in transformed graph is smaller than sample size, + // then use # of nodes as sample size + sampleSize = nodeSize < options.sampleSize ? nodeSize : options.sampleSize; + + // instantiates the partial matrices that will be used in spectral layout + for (var _i14 = 0; _i14 < nodeSize; _i14++) { + C[_i14] = []; + } + for (var _i15 = 0; _i15 < sampleSize; _i15++) { + INV[_i15] = []; + } + + /**** Apply spectral layout ****/ + + if (options.quality == "draft" || options.step == "all") { + allBFS(samplingType); + sample(); + powerIteration(); + + spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords }; + } else { + nodeIndexes.forEach(function (value, key) { + xCoords.push(cy.getElementById(key).position("x")); + yCoords.push(cy.getElementById(key).position("y")); + }); + spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords }; + } + return spectralResult; + } else { + var iterator = nodeIndexes.keys(); + var firstNode = cy.getElementById(iterator.next().value); + var firstNodePos = firstNode.position(); + var firstNodeWidth = firstNode.outerWidth(); + xCoords.push(firstNodePos.x); + yCoords.push(firstNodePos.y); + if (nodeSize == 2) { + var secondNode = cy.getElementById(iterator.next().value); + var secondNodeWidth = secondNode.outerWidth(); + xCoords.push(firstNodePos.x + firstNodeWidth / 2 + secondNodeWidth / 2 + options.idealEdgeLength); + yCoords.push(firstNodePos.y); + } + + spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords }; + return spectralResult; + } +}; + +module.exports = { spectralLayout: spectralLayout }; + +/***/ }), + +/***/ 579: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + + +var impl = __webpack_require__(212); + +// registers the extension on a cytoscape lib ref +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + cytoscape('layout', 'fcose', impl); // register with cytoscape.js +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); +} + +module.exports = register; + +/***/ }), + +/***/ 140: +/***/ ((module) => { + +module.exports = __WEBPACK_EXTERNAL_MODULE__140__; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(579); +/******/ +/******/ return __webpack_exports__; +/******/ })() +; +}); \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-svg.js b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-svg.js new file mode 100644 index 0000000..c2c42cc --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape-svg.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.cytoscapeSvg=e():t.cytoscapeSvg=e()}(window,(function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(i,n,function(e){return t[e]}.bind(null,n));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,r){"use strict";var i=r(1),n=function(t){t&&t("core","svg",i.svg)};"undefined"!=typeof cytoscape&&n(cytoscape),t.exports=n},function(t,e,r){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n=r(2),o={},s={};s.number=function(t){return null!=t&&(void 0===t?"undefined":i(t))===i(1)&&!isNaN(t)},o.bufferCanvasImage=function(t,e){var r=e.renderer().usePaths;e.renderer().usePaths=function(){return!1},e.elements().forEach((function(t){t._private.rscratch.pathCacheKey=null,t._private.rscratch.pathCache=null}));var i=e.renderer(),o=e.mutableElements().boundingBox(),a=i.findContainerClientCoords(),l=t.full?Math.ceil(o.w):a[2],h=t.full?Math.ceil(o.h):a[3],c=s.number(t.maxWidth)||s.number(t.maxHeight),p=i.getPixelRatio(),u=1;if(void 0!==t.scale)l*=t.scale,h*=t.scale,u=t.scale;else if(c){var _=1/0,d=1/0;s.number(t.maxWidth)&&(_=u*t.maxWidth/l),s.number(t.maxHeight)&&(d=u*t.maxHeight/h),l*=u=Math.min(_,d),h*=u}c||(l*=p,h*=p,u*=p);var f=null,g=f=new n(l,h);if(l>0&&h>0){f.clearRect(0,0,l,h),t.bg&&(f.globalCompositeOperation="destination-over",f.fillStyle=t.bg,f.fillRect(0,0,l,h)),f.globalCompositeOperation="source-over";var m=i.getCachedZSortedEles();if(t.full)f.translate(-o.x1*u,-o.y1*u),f.scale(u,u),i.drawElements(f,m),f.scale(1/u,1/u),f.translate(o.x1*u,o.y1*u);else{var y=e.pan(),v={x:y.x*u,y:y.y*u};u*=e.zoom(),f.translate(v.x,v.y),f.scale(u,u),i.drawElements(f,m),f.scale(1/u,1/u),f.translate(-v.x,-v.y)}}return e.renderer().usePaths=r,g},o.svg=function(t){return o.bufferCanvasImage(t||{},this).getSerializedSvg()},t.exports=o},function(t,e,r){!function(){"use strict";var e,r,i,n,o;function s(t,e){var r,i=Object.keys(e);for(r=0;r1?((e=i).width=arguments[0],e.height=arguments[1]):e=t||i,!(this instanceof r))return new r(e);this.width=e.width||i.width,this.height=e.height||i.height,this.enableMirroring=void 0!==e.enableMirroring?e.enableMirroring:i.enableMirroring,this.canvas=this,this.__document=e.document||document,e.ctx?this.__ctx=e.ctx:(this.__canvas=this.__document.createElement("canvas"),this.__ctx=this.__canvas.getContext("2d")),this.__setDefaultStyles(),this.__stack=[this.__getStyleState()],this.__groupStack=[],this.__root=this.__document.createElementNS("http://www.w3.org/2000/svg","svg"),this.__root.setAttribute("version",1.1),this.__root.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.__root.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),this.__root.setAttribute("width",this.width),this.__root.setAttribute("height",this.height),this.__ids={},this.__defs=this.__document.createElementNS("http://www.w3.org/2000/svg","defs"),this.__root.appendChild(this.__defs),this.__currentElement=this.__document.createElementNS("http://www.w3.org/2000/svg","g"),this.__root.appendChild(this.__currentElement)}).prototype.__createElement=function(t,e,r){void 0===e&&(e={});var i,n,o=this.__document.createElementNS("http://www.w3.org/2000/svg",t),s=Object.keys(e);for(r&&(o.setAttribute("fill","none"),o.setAttribute("stroke","none")),i=0;i0){"path"===this.__currentElement.nodeName&&(this.__currentElementsToStyle||(this.__currentElementsToStyle={element:e,children:[]}),this.__currentElementsToStyle.children.push(this.__currentElement),this.__applyCurrentDefaultPath());var r=this.__createElement("g");e.appendChild(r),this.__currentElement=r}var i=this.__currentElement.getAttribute("transform");i?i+=" ":i="",i+=t,this.__currentElement.setAttribute("transform",i)},r.prototype.scale=function(t,e){void 0===e&&(e=t),this.__addTransform(s("scale({x},{y})",{x:t,y:e}))},r.prototype.rotate=function(t){var e=180*t/Math.PI;this.__addTransform(s("rotate({angle},{cx},{cy})",{angle:e,cx:0,cy:0}))},r.prototype.translate=function(t,e){this.__addTransform(s("translate({x},{y})",{x:t,y:e}))},r.prototype.transform=function(t,e,r,i,n,o){this.__addTransform(s("matrix({a},{b},{c},{d},{e},{f})",{a:t,b:e,c:r,d:i,e:n,f:o}))},r.prototype.beginPath=function(){var t;this.__currentDefaultPath="",this.__currentPosition={},t=this.__createElement("path",{},!0),this.__closestGroupOrSvg().appendChild(t),this.__currentElement=t},r.prototype.__applyCurrentDefaultPath=function(){var t=this.__currentElement;"path"===t.nodeName?t.setAttribute("d",this.__currentDefaultPath):console.error("Attempted to apply path command to node",t.nodeName)},r.prototype.__addPathCommand=function(t){this.__currentDefaultPath+=" ",this.__currentDefaultPath+=t},r.prototype.moveTo=function(t,e){"path"!==this.__currentElement.nodeName&&this.beginPath(),this.__currentPosition={x:t,y:e},this.__addPathCommand(s("M {x} {y}",{x:t,y:e}))},r.prototype.closePath=function(){this.__currentDefaultPath&&this.__addPathCommand("Z")},r.prototype.lineTo=function(t,e){this.__currentPosition={x:t,y:e},this.__currentDefaultPath.indexOf("M")>-1?this.__addPathCommand(s("L {x} {y}",{x:t,y:e})):this.__addPathCommand(s("M {x} {y}",{x:t,y:e}))},r.prototype.bezierCurveTo=function(t,e,r,i,n,o){this.__currentPosition={x:n,y:o},this.__addPathCommand(s("C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}",{cp1x:t,cp1y:e,cp2x:r,cp2y:i,x:n,y:o}))},r.prototype.quadraticCurveTo=function(t,e,r,i){this.__currentPosition={x:r,y:i},this.__addPathCommand(s("Q {cpx} {cpy} {x} {y}",{cpx:t,cpy:e,x:r,y:i}))};var h=function(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]};r.prototype.arcTo=function(t,e,r,i,n){var o=this.__currentPosition&&this.__currentPosition.x,s=this.__currentPosition&&this.__currentPosition.y;if(void 0!==o&&void 0!==s){if(n<0)throw new Error("IndexSizeError: The radius provided ("+n+") is negative.");if(o===t&&s===e||t===r&&e===i||0===n)this.lineTo(t,e);else{var a=h([o-t,s-e]),l=h([r-t,i-e]);if(a[0]*l[1]!=a[1]*l[0]){var c=a[0]*l[0]+a[1]*l[1],p=Math.acos(Math.abs(c)),u=h([a[0]+l[0],a[1]+l[1]]),_=n/Math.sin(p/2),d=t+_*u[0],f=e+_*u[1],g=[-a[1],a[0]],m=[l[1],-l[0]],y=function(t){var e=t[0];return t[1]>=0?Math.acos(e):-Math.acos(e)},v=y(g),b=y(m);this.lineTo(d+g[0]*n,f+g[1]*n),this.arc(d,f,n,v,b)}else this.lineTo(t,e)}}},r.prototype.stroke=function(){"path"===this.__currentElement.nodeName&&this.__currentElement.setAttribute("paint-order","fill stroke markers"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement("stroke")},r.prototype.fill=function(){"path"===this.__currentElement.nodeName&&this.__currentElement.setAttribute("paint-order","stroke fill markers"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement("fill")},r.prototype.rect=function(t,e,r,i){"path"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+r,e),this.lineTo(t+r,e+i),this.lineTo(t,e+i),this.lineTo(t,e),this.closePath()},r.prototype.fillRect=function(t,e,r,i){var n;n=this.__createElement("rect",{x:t,y:e,width:r,height:i},!0),this.__closestGroupOrSvg().appendChild(n),this.__currentElement=n,this.__applyStyleToCurrentElement("fill")},r.prototype.strokeRect=function(t,e,r,i){var n;n=this.__createElement("rect",{x:t,y:e,width:r,height:i},!0),this.__closestGroupOrSvg().appendChild(n),this.__currentElement=n,this.__applyStyleToCurrentElement("stroke")},r.prototype.__clearCanvas=function(){for(var t=this.__closestGroupOrSvg().getAttribute("transform"),e=this.__root.childNodes[1],r=e.childNodes,i=r.length-1;i>=0;i--)r[i]&&e.removeChild(r[i]);this.__currentElement=e,this.__groupStack=[],t&&this.__addTransform(t)},r.prototype.clearRect=function(t,e,r,i){if(0!==t||0!==e||r!==this.width||i!==this.height){var n,o=this.__closestGroupOrSvg();n=this.__createElement("rect",{x:t,y:e,width:r,height:i,fill:"#FFFFFF"},!0),o.appendChild(n)}else this.__clearCanvas()},r.prototype.createLinearGradient=function(t,e,r,n){var o=this.__createElement("linearGradient",{id:a(this.__ids),x1:t+"px",x2:r+"px",y1:e+"px",y2:n+"px",gradientUnits:"userSpaceOnUse"},!1);return this.__defs.appendChild(o),new i(o,this)},r.prototype.createRadialGradient=function(t,e,r,n,o,s){var l=this.__createElement("radialGradient",{id:a(this.__ids),cx:n+"px",cy:o+"px",r:s+"px",fx:t+"px",fy:e+"px",gradientUnits:"userSpaceOnUse"},!1);return this.__defs.appendChild(l),new i(l,this)},r.prototype.__parseFont=function(){var t=/^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-,\'\"\sa-z0-9]+?)\s*$/i.exec(this.font),e={style:t[1]||"normal",size:t[4]||"10px",family:t[6]||"sans-serif",weight:t[3]||"normal",decoration:t[2]||"normal",href:null};return"underline"===this.__fontUnderline&&(e.decoration="underline"),this.__fontHref&&(e.href=this.__fontHref),e},r.prototype.__wrapTextLink=function(t,e){if(t.href){var r=this.__createElement("a");return r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t.href),r.appendChild(e),r}return e},r.prototype.__applyText=function(t,e,r,i){var n,o,s=this.__parseFont(),a=this.__closestGroupOrSvg(),h=this.__createElement("text",{"font-family":s.family,"font-size":s.size,"font-style":s.style,"font-weight":s.weight,"text-decoration":s.decoration,x:e,y:r,"text-anchor":(n=this.textAlign,o={left:"start",right:"end",center:"middle",start:"start",end:"end"},o[n]||o.start),"dominant-baseline":l(this.textBaseline)},!0);h.appendChild(this.__document.createTextNode(t)),this.__currentElement=h,this.__applyStyleToCurrentElement(i),a.appendChild(this.__wrapTextLink(s,h))},r.prototype.fillText=function(t,e,r){this.__applyText(t,e,r,"fill")},r.prototype.strokeText=function(t,e,r){this.__applyText(t,e,r,"stroke")},r.prototype.measureText=function(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)},r.prototype.arc=function(t,e,r,i,n,o){if(i!==n){(i%=2*Math.PI)===(n%=2*Math.PI)&&(n=(n+2*Math.PI-.001*(o?-1:1))%(2*Math.PI));var a=t+r*Math.cos(n),l=e+r*Math.sin(n),h=t+r*Math.cos(i),c=e+r*Math.sin(i),p=o?0:1,u=0,_=n-i;_<0&&(_+=2*Math.PI),u=o?_>Math.PI?0:1:_>Math.PI?1:0,this.lineTo(h,c),this.__addPathCommand(s("A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}",{rx:r,ry:r,xAxisRotation:0,largeArcFlag:u,sweepFlag:p,endX:a,endY:l})),this.__currentPosition={x:a,y:l}}},r.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement("clipPath"),r=a(this.__ids),i=this.__createElement("g");this.__applyCurrentDefaultPath(),t.removeChild(this.__currentElement),e.setAttribute("id",r),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute("clip-path",s("url(#{id})",{id:r})),t.appendChild(i),this.__currentElement=i},r.prototype.drawImage=function(){var t,e,i,n,o,s,a,l,h,c,p,u,_,d=Array.prototype.slice.call(arguments),f=d[0],g=0,m=0;if(3===d.length)t=d[1],e=d[2],i=o=f.width,n=s=f.height;else if(5===d.length)t=d[1],e=d[2],i=d[3],n=d[4],o=f.width,s=f.height;else{if(9!==d.length)throw new Error("Inavlid number of arguments passed to drawImage: "+arguments.length);g=d[1],m=d[2],o=d[3],s=d[4],t=d[5],e=d[6],i=d[7],n=d[8]}a=this.__closestGroupOrSvg(),this.__currentElement;var y="translate("+t+", "+e+")";if(f instanceof r){if((l=f.getSvg().cloneNode(!0)).childNodes&&l.childNodes.length>1){for(h=l.childNodes[0];h.childNodes.length;)_=h.childNodes[0].getAttribute("id"),this.__ids[_]=_,this.__defs.appendChild(h.childNodes[0]);if(c=l.childNodes[1]){var v,b=c.getAttribute("transform");v=b?b+" "+y:y,c.setAttribute("transform",v),a.appendChild(c)}}}else"CANVAS"!==f.nodeName&&"IMG"!==f.nodeName||((p=this.__createElement("image")).setAttribute("width",i),p.setAttribute("height",n),p.setAttribute("opacity",this.globalAlpha),p.setAttribute("preserveAspectRatio","none"),(u=this.__document.createElement("canvas")).width=i,u.height=n,u.getContext("2d").drawImage(f,g,m,o,s,0,0,i,n),f=u,p.setAttribute("transform",y),p.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","CANVAS"===f.nodeName?f.toDataURL():f.getAttribute("src")),a.appendChild(p))},r.prototype.createPattern=function(t,e){var i,o=this.__document.createElementNS("http://www.w3.org/2000/svg","pattern"),s=a(this.__ids);return o.setAttribute("id",s),o.setAttribute("width",t.width),o.setAttribute("height",t.height),"CANVAS"===t.nodeName||"IMG"===t.nodeName?((i=this.__document.createElementNS("http://www.w3.org/2000/svg","image")).setAttribute("width",t.width),i.setAttribute("height",t.height),i.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","CANVAS"===t.nodeName?t.toDataURL():t.getAttribute("src")),o.appendChild(i),this.__defs.appendChild(o)):t instanceof r&&(o.appendChild(t.__root.childNodes[1]),this.__defs.appendChild(o)),new n(o,this)},r.prototype.setLineDash=function(t){t&&t.length>0?this.lineDash=t.join(","):this.lineDash=null},r.prototype.drawFocusRing=function(){},r.prototype.createImageData=function(){},r.prototype.getImageData=function(){},r.prototype.putImageData=function(){},r.prototype.globalCompositeOperation=function(){},r.prototype.setTransform=function(){},"object"==typeof window&&(window.C2S=r),"object"==typeof t.exports&&(t.exports=r)}()}])})); \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape.min.js b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape.min.js new file mode 100644 index 0000000..be225ea --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/cytoscape.min.js @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2016-2026, The Cytoscape Consortium. + * + * 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. + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).cytoscape=t()}(this,(function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw i}}}}function a(e,t,n){return(t=s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,s=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t){return function(t){if(Array.isArray(t))return e(t)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||u(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function u(t,n){if(t){if("string"==typeof t)return e(t,n);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?e(t,n):void 0}}var c="undefined"==typeof window?null:window,d=c?c.navigator:null;c&&c.document;var h,f,p,g,v,y,m,b,x,w,E,k,T,C,P,S,B,D,_,A,M,R,I,N,L,z,O,V,F=l(""),X=l({}),j=l((function(){})),Y="undefined"==typeof HTMLElement?"undefined":l(HTMLElement),q=function(e){return e&&e.instanceString&&U(e.instanceString)?e.instanceString():null},W=function(e){return null!=e&&l(e)==F},U=function(e){return null!=e&&l(e)===j},H=function(e){return!$(e)&&(Array.isArray?Array.isArray(e):null!=e&&e instanceof Array)},K=function(e){return null!=e&&l(e)===X&&!H(e)&&e.constructor===Object},G=function(e){return null!=e&&l(e)===l(1)&&!isNaN(e)},Z=function(e){return"undefined"===Y?void 0:null!=e&&e instanceof HTMLElement},$=function(e){return Q(e)||J(e)},Q=function(e){return"collection"===q(e)&&e._private.single},J=function(e){return"collection"===q(e)&&!e._private.single},ee=function(e){return"core"===q(e)},te=function(e){return"stylesheet"===q(e)},ne=function(e){return null==e||!(""!==e&&!e.match(/^\s+$/))},re=function(e){return function(e){return null!=e&&l(e)===X}(e)&&U(e.then)},ae=function(e,t){t||(t=function(){if(1===arguments.length)return arguments[0];if(0===arguments.length)return"undefined";for(var e=[],t=0;tt?1:0},ve=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n255)return;t.push(Math.floor(i))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t}(e)||function(e){var t,n,r,a,i,o,s,l;function u(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+fe+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(a=parseFloat(c[3]))<0||a>100)return;if(a/=100,void 0!==(i=c[4])&&((i=parseFloat(i))<0||i>1))return;if(0===r)o=s=l=Math.round(255*a);else{var d=a<.5?a*(1+r):a+r-a*r,h=2*a-d;o=Math.round(255*u(h,d,n+1/3)),s=Math.round(255*u(h,d,n)),l=Math.round(255*u(h,d,n-1/3))}t=[o,s,l,i]}return t}(e)},me={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},be=function(e){for(var t=e.map,n=e.keys,r=n.length,a=0;a=o||t<0||v&&e-p>=c}function x(){var e=t();if(b(e))return w(e);h=setTimeout(x,function(e){var t=o-(e-f);return v?a(t,c-(e-p)):t}(e))}function w(e){return h=void 0,y&&l?m(e):(l=u=void 0,d)}function E(){var e=t(),n=b(e);if(l=arguments,u=this,f=e,n){if(void 0===h)return function(e){return p=e,h=setTimeout(x,o),g?m(e):d}(f);if(v)return clearTimeout(h),h=setTimeout(x,o),m(f)}return void 0===h&&(h=setTimeout(x,o)),d}return o=n(o)||0,e(s)&&(g=!!s.leading,c=(v="maxWait"in s)?r(n(s.maxWait)||0,o):c,y="trailing"in s?!!s.trailing:y),E.cancel=function(){void 0!==h&&clearTimeout(h),p=0,l=f=u=h=void 0},E.flush=function(){return void 0===h?d:w(t())},E},O}(),_e=Ee(De),Ae=c?c.performance:null,Me=Ae&&Ae.now?function(){return Ae.now()}:function(){return Date.now()},Re=function(){if(c){if(c.requestAnimationFrame)return function(e){c.requestAnimationFrame(e)};if(c.mozRequestAnimationFrame)return function(e){c.mozRequestAnimationFrame(e)};if(c.webkitRequestAnimationFrame)return function(e){c.webkitRequestAnimationFrame(e)};if(c.msRequestAnimationFrame)return function(e){c.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout((function(){e(Me())}),1e3/60)}}(),Ie=function(e){return Re(e)},Ne=Me,Le=9261,ze=5381,Oe=function(e){for(var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Le;!(t=e.next()).done;)n=65599*n+t.value|0;return n},Ve=function(e){return 65599*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Le)+e|0},Fe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ze;return(t<<5)+t+e|0},Xe=function(e){return 2097152*e[0]+e[1]},je=function(e,t){return[Ve(e[0],t[0]),Fe(e[1],t[1])]},Ye=function(e,t){var n={value:0,done:!1},r=0,a=e.length;return Oe({next:function(){return r=0;r--)e[r]===t&&e.splice(r,1)},dt=function(e){e.splice(0,e.length)},ht=function(e,t,n){return n&&(t=se(n,t)),e[t]},ft=function(e,t,n,r){n&&(t=se(n,t)),e[t]=r},pt="undefined"!=typeof Map?Map:function(){return n((function e(){t(this,e),this._obj={}}),[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}])}(),gt=function(){return n((function e(n){if(t(this,e),this._obj=Object.create(null),this.size=0,null!=n){var r;r=null!=n.instanceString&&n.instanceString()===this.instanceString()?n.toArray():n;for(var a=0;a2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&ee(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new vt,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:t.parent&&t.parent.isNode()?t.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==a.position.x&&(a.position.x=0),null==a.position.y&&(a.position.y=0),t.renderedPosition){var i=t.renderedPosition,o=e.pan(),s=e.zoom();a.position={x:(i.x-o.x)/s,y:(i.y-o.y)/s}}var l=[];H(t.classes)?l=t.classes:W(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;ut?1:0},u=function(e,t,a,i,o){var s;if(null==a&&(a=0),null==o&&(o=n),a<0)throw new Error("lo must be non-negative");for(null==i&&(i=e.length);an;0<=n?t++:t--)u.push(t);return u}.apply(this).reverse()).length;ig;0<=g?++h:--h)v.push(i(e,r));return v},p=function(e,t,r,a){var i,o,s;for(null==a&&(a=n),i=e[r];r>t&&a(i,o=e[s=r-1>>1])<0;)e[r]=o,r=s;return e[r]=i},g=function(e,t,r){var a,i,o,s,l;for(null==r&&(r=n),i=e.length,l=t,o=e[t],a=2*t+1;a0;){var w=y.pop(),E=g(w),k=w.id();if(d[k]=E,E!==1/0)for(var T=w.neighborhood().intersect(f),C=0;C0)for(n.unshift(t);c[a];){var i=c[a];n.unshift(i.edge),n.unshift(i.node),a=(r=i.node).id()}return o.spawn(n)}}}},_t={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,a=n.length,i=new Array(a),o=n,s=function(e){for(var t=0;t0;){if(l=g.pop(),u=l.id(),v.delete(u),w++,u===d){for(var E=[],k=a,T=d,C=m[T];E.unshift(k),null!=C&&E.unshift(C),null!=(k=y[T]);)C=m[T=k.id()];return{found:!0,distance:h[u],path:this.spawn(E),steps:w}}p[u]=!0;for(var P=l._private.edges,S=0;SP&&(f[C]=P,y[C]=T,m[C]=x),!a){var S=T*u+k;!a&&f[S]>P&&(f[S]=P,y[S]=k,m[S]=x)}}}for(var B=0;B1&&void 0!==arguments[1]?arguments[1]:i,r=[],a=m(e);;){if(null==a)return t.spawn();var o=y(a),l=o.edge,u=o.pred;if(r.unshift(a[0]),a.same(n)&&r.length>0)break;null!=l&&r.unshift(l),a=u}return s.spawn(r)},hasNegativeWeightCycle:p,negativeWeightCycles:g}}},zt=Math.sqrt(2),Ot=function(e,t,n){0===n.length&&nt("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],a=r[1],i=r[2],o=t[a],s=t[i],l=n,u=l.length-1;u>=0;u--){var c=l[u],d=c[1],h=c[2];(t[d]===o&&t[h]===s||t[d]===s&&t[h]===o)&&l.splice(u,1)}for(var f=0;fr;){var a=Math.floor(Math.random()*t.length);t=Ot(a,e,t),n--}return t},Ft={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy((function(e){return e.isLoop()}));var a=n.length,i=r.length,o=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),s=Math.floor(a/zt);if(!(a<2)){for(var l=[],u=0;u0?1:e<0?-1:0},Ht=function(e,t){return Math.sqrt(Kt(e,t))},Kt=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},Gt=function(e){for(var t=e.length,n=0,r=0;r=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},en=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},tn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},nn=function(e){var t,n,r,a,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===o.length)t=n=r=a=o[0];else if(2===o.length)t=r=o[0],a=n=o[1];else if(4===o.length){var s=i(o,4);t=s[0],n=s[1],r=s[2],a=s[3]}return e.x1-=a,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},rn=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},an=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},on=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},sn=function(e,t){return on(e,t.x,t.y)},ln=function(e,t){return on(e,t.x1,t.y1)&&on(e,t.x2,t.y2)},un=null!==(Pt=Math.hypot)&&void 0!==Pt?Pt:function(e,t){return Math.sqrt(e*e+t*t)};function cn(e,t,n,r,a,i){var o=function(e,t){if(e.length<3)throw new Error("Need at least 3 vertices");var n=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},r=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},a=function(e,t){return{x:e.x*t,y:e.y*t}},i=function(e,t){return e.x*t.y-e.y*t.x},o=function(e,t,o,s){var l=r(t,e),u=r(s,o),c=i(l,u);if(Math.abs(c)<1e-9)return n(e,a(l,.5));var d=i(r(o,e),u)/c;return n(e,a(l,d))},s=e.map((function(e){return{x:e.x,y:e.y}}));(function(e){for(var t=0,n=0;n7&&void 0!==arguments[7]?arguments[7]:"auto",c="auto"===u?_n(a,i):u,d=a/2,h=i/2,f=(c=Math.min(c,d,h))!==d,p=c!==h;if(f){var g=r-h-o;if((s=kn(e,t,n,r,n-d+c-o,g,n+d-c+o,g,!1)).length>0)return s}if(p){var v=n+d+o;if((s=kn(e,t,n,r,v,r-h+c-o,v,r+h-c+o,!1)).length>0)return s}if(f){var y=r+h+o;if((s=kn(e,t,n,r,n-d+c-o,y,n+d-c+o,y,!1)).length>0)return s}if(p){var m=n-d-o;if((s=kn(e,t,n,r,m,r-h+c-o,m,r+h-c+o,!1)).length>0)return s}var b=n-d+c,x=r-h+c;if((l=wn(e,t,n,r,b,x,c+o)).length>0&&l[0]<=b&&l[1]<=x)return[l[0],l[1]];var w=n+d-c,E=r-h+c;if((l=wn(e,t,n,r,w,E,c+o)).length>0&&l[0]>=w&&l[1]<=E)return[l[0],l[1]];var k=n+d-c,T=r+h-c;if((l=wn(e,t,n,r,k,T,c+o)).length>0&&l[0]>=k&&l[1]>=T)return[l[0],l[1]];var C=n-d+c,P=r+h-c;return(l=wn(e,t,n,r,C,P,c+o)).length>0&&l[0]<=C&&l[1]>=P?[l[0],l[1]]:[]},hn=function(e,t,n,r,a,i,o){var s=o,l=Math.min(n,a),u=Math.max(n,a),c=Math.min(r,i),d=Math.max(r,i);return l-s<=e&&e<=u+s&&c-s<=t&&t<=d+s},fn=function(e,t,n,r,a,i,o,s,l){var u=Math.min(n,o,a)-l,c=Math.max(n,o,a)+l,d=Math.min(r,s,i)-l,h=Math.max(r,s,i)+l;return!(ec||th)},pn=function(e,t,n,r,a,i,o,s){var l=[];!function(e,t,n,r,a){var i,o,s,l,u,c,d,h;0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),i=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,a[1]=0,d=t/3,i>0?(u=(u=s+Math.sqrt(i))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(i))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),a[0]=-d+u+c,d+=(u+c)/2,a[4]=a[2]=-d,d=Math.sqrt(3)*(-c+u)/2,a[3]=d,a[5]=-d):(a[5]=a[3]=0,0===i?(h=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),a[0]=2*h-d,a[4]=a[2]=-(h+d)):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),h=2*Math.sqrt(o),a[0]=-d+h*Math.cos(l/3),a[2]=-d+h*Math.cos((l+2*Math.PI)/3),a[4]=-d+h*Math.cos((l+4*Math.PI)/3)))}(1*n*n-4*n*a+2*n*o+4*a*a-4*a*o+o*o+r*r-4*r*i+2*r*s+4*i*i-4*i*s+s*s,9*n*a-3*n*n-3*n*o-6*a*a+3*a*o+9*r*i-3*r*r-3*r*s-6*i*i+3*i*s,3*n*n-6*n*a+n*o-n*e+2*a*a+2*a*e-o*e+3*r*r-6*r*i+r*s-r*t+2*i*i+2*i*t-s*t,1*n*a-n*n+n*e-a*e+r*i-r*r+r*t-i*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var d,h,f,p=-1,g=0;g=0?fl?(e-a)*(e-a)+(t-i)*(t-i):u-d},vn=function(e,t,n){for(var r,a,i,o,s=0,l=0;l=e&&e>=i||r<=e&&e<=i))continue;(e-r)/(i-r)*(o-a)+a>t&&s++}return s%2!=0},yn=function(e,t,n,r,a,i,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var d,h=Math.cos(-u),f=Math.sin(-u),p=0;p0){var g=bn(c,-l);d=mn(g)}else d=c;return vn(e,t,d)},mn=function(e){for(var t,n,r,a,i,o,s,l,u=new Array(e.length/2),c=0;c=0&&p<=1&&v.push(p),g>=0&&g<=1&&v.push(g),0===v.length)return[];var y=v[0]*s[0]+e,m=v[0]*s[1]+t;return v.length>1?v[0]==v[1]?[y,m]:[y,m,v[1]*s[0]+e,v[1]*s[1]+t]:[y,m]},En=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},kn=function(e,t,n,r,a,i,o,s,l){var u=e-a,c=n-e,d=o-a,h=t-i,f=r-t,p=s-i,g=d*h-p*u,v=c*h-f*u,y=p*c-d*f;if(0!==y){var m=g/y,b=v/y,x=-.001;return x<=m&&m<=1.001&&x<=b&&b<=1.001||l?[e+m*c,t+m*f]:[]}return 0===g||0===v?En(e,n,o)===o?[o,s]:En(e,n,a)===a?[a,i]:En(a,o,n)===n?[n,r]:[]:[]},Tn=function(e,t,n,r,a){var i=[],o=r/2,s=a/2,l=t,u=n;i.push({x:l+o*e[0],y:u+s*e[1]});for(var c=1;c0){var m=bn(g,-s);u=mn(m)}else u=g}else u=n;for(var b=0;bu&&(u=t)},d=function(e){return l[e]},h=0;h0?b.edgesTo(m)[0]:m.edgesTo(b)[0];var w=r(x);m=m.id(),u[m]>u[g]+w&&(u[m]=u[g]+w,h.nodes.indexOf(m)<0?h.push(m):h.updateItem(m),l[m]=0,n[m]=[]),u[m]==u[g]+w&&(l[m]=l[m]+l[g],n[m].push(g))}else for(var E=0;E0;){for(var P=t.pop(),S=0;S0&&o.push(n[s]);0!==o.length&&a.push(r.collection(o))}return a}(c,l,t,r);return b=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:Qn,o=r,s=0;s=2?ar(e,t,n,0,tr,nr):ar(e,t,n,0,er)},squaredEuclidean:function(e,t,n){return ar(e,t,n,0,tr)},manhattan:function(e,t,n){return ar(e,t,n,0,er)},max:function(e,t,n){return ar(e,t,n,-1/0,rr)}};function or(e,t,n,r,a,i){var o;return o=U(e)?e:ir[e]||ir.euclidean,0===t&&U(e)?o(a,i):o(t,n,r,a,i)}ir["squared-euclidean"]=ir.squaredEuclidean,ir.squaredeuclidean=ir.squaredEuclidean;var sr=ut({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),lr=function(e){return sr(e)},ur=function(e,t,n,r,a){var i="kMedoids"!==a?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return or(e,r.length,i,(function(e){return r[e](t)}),o,s)},cr=function(e,t,n){for(var r=n.length,a=new Array(r),i=new Array(r),o=new Array(t),s=null,l=0;ln)return!1}return!0},gr=function(e,t,n){for(var r=0;ra&&(a=t[l][u],i=u);o[i].push(e[l])}for(var c=0;c=a.threshold||"dendrogram"===a.mode&&1===e.length)return!1;var f,p=t[o],g=t[r[o]];f="dendrogram"===a.mode?{left:p,right:g,key:p.key}:{value:p.value.concat(g.value),key:p.key},e[p.index]=f,e.splice(g.index,1),t[p.key]=f;for(var v=0;vn[g.key][y.key]&&(i=n[g.key][y.key])):"max"===a.linkage?(i=n[p.key][y.key],n[p.key][y.key]1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n0&&e.splice(0,t)):e=e.slice(t,n);for(var i=0,o=e.length-1;o>=0;o--){var s=e[o];a?isFinite(s)||(e[o]=-1/0,i++):e.splice(o,1)}r&&e.sort((function(e,t){return e-t}));var l=e.length,u=Math.floor(l/2);return l%2!=0?e[u+1+i]:(e[u-1+i]+e[u+i])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,a=0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,a=t;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,a=t;ao&&(i=l,o=t[a*e+l])}i>0&&r.push(i)}for(var u=0;u=P?(S=P,P=D,B=_):D>S&&(S=D);for(var A=0;A0?1:0;k[E%u.minIterations*t+z]=O,L+=O}if(L>0&&(E>=u.minIterations-1||E==u.maxIterations-1)){for(var V=0,F=0;F0&&r.push(a);return r}(t,i,o),Y=function(e,t,n){for(var r=Rr(e,t,n),a=0;al&&(s=u,l=c)}n[a]=i[s]}return Rr(e,t,n)}(t,r,j),q={},W=0;W1||o>1)&&(u=!0),c[t]=[],e.outgoers().forEach((function(e){e.isEdge()&&c[t].push(e.id())}))}else d[t]=[void 0,e.target().id()]})):l.forEach((function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?u=!0:r=t:n=t),c[t]=[],e.connectedEdges().forEach((function(e){return c[t].push(e.id())}))):d[t]=[e.source().id(),e.target().id()]}));var h={found:!1,trail:void 0};if(u)return h;if(r&&n)if(s){if(a&&r!=a)return h;a=r}else{if(a&&r!=a&&n!=a)return h;a||(a=r)}else a||(a=l[0].id());var f=function(e){for(var t,n,r,a=e,i=[e];c[a].length;)t=c[a].shift(),n=d[t][0],a!=(r=d[t][1])?(c[r]=c[r].filter((function(e){return e!=t})),a=r):s||a==n||(c[n]=c[n].filter((function(e){return e!=t})),a=n),i.unshift(t),i.unshift(a);return i},p=[],g=[];for(g=f(a);1!=g.length;)0==c[g[0]].length?(p.unshift(l.getElementById(g.shift())),p.unshift(l.getElementById(g.shift()))):g=f(g.shift()).concat(g);for(var v in p.unshift(l.getElementById(g.shift())),c)if(c[v].length)return h;return h.found=!0,h.trail=this.spawn(p,!0),h}},Or=function(){var e=this,t={},n=0,r=0,a=[],i=[],o={},s=function(l,u,c){l===c&&(r+=1),t[u]={id:n,low:n++,cutVertex:!1};var d,h,f,p,g=e.getElementById(u).connectedEdges().intersection(e);0===g.size()?a.push(e.spawn(e.getElementById(u))):g.forEach((function(n){d=n.source().id(),h=n.target().id(),(f=d===u?h:d)!==c&&(p=n.id(),o[p]||(o[p]=!0,i.push({x:u,y:f,edge:n})),f in t?t[u].low=Math.min(t[u].low,t[f].id):(s(l,f,u),t[u].low=Math.min(t[u].low,t[f].low),t[u].id<=t[f].low&&(t[u].cutVertex=!0,function(n,r){for(var o=i.length-1,s=[],l=e.spawn();i[o].x!=n||i[o].y!=r;)s.push(i.pop().edge),o--;s.push(i.pop().edge),s.forEach((function(n){var r=n.connectedNodes().intersection(e);l.merge(n),r.forEach((function(n){var r=n.id(),a=n.connectedEdges().intersection(e);l.merge(n),t[r].cutVertex?l.merge(a.filter((function(e){return e.isLoop()}))):l.merge(a)}))})),a.push(l)}(u,f))))}))};e.forEach((function(e){if(e.isNode()){var n=e.id();n in t||(r=0,s(n,n),t[n].cutVertex=r>1)}}));var l=Object.keys(t).filter((function(e){return t[e].cutVertex})).map((function(t){return e.getElementById(t)}));return{cut:e.spawn(l),components:a}},Vr=function(){var e=this,t={},n=0,r=[],a=[],i=e.spawn(e),o=function(s){if(a.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach((function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))})),t[s].index===t[s].low){for(var l=e.spawn();;){var u=a.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),d=l.merge(c);r.push(d),i=i.difference(d)}};return e.forEach((function(e){if(e.isNode()){var n=e.id();n in t||o(n)}})),{cut:i,components:r}},Fr={};[bt,Dt,_t,Mt,It,Lt,Ft,Nn,zn,Vn,Xn,$n,wr,Dr,Nr,zr,{hopcroftTarjanBiconnected:Or,htbc:Or,htb:Or,hopcroftTarjanBiconnectedComponents:Or},{tarjanStronglyConnected:Vr,tsc:Vr,tscc:Vr,tarjanStronglyConnectedComponents:Vr}].forEach((function(e){ve(Fr,e)})); +/*! + Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable + Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) + Licensed under The MIT License (http://opensource.org/licenses/MIT) + */ +var Xr=function(e){if(!(this instanceof Xr))return new Xr(e);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof e&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Xr.prototype={fulfill:function(e){return jr(this,1,"fulfillValue",e)},reject:function(e){return jr(this,2,"rejectReason",e)},then:function(e,t){var n=this,r=new Xr;return n.onFulfilled.push(Wr(e,r,"fulfill")),n.onRejected.push(Wr(t,r,"reject")),Yr(n),r.proxy}};var jr=function(e,t,n,r){return 0===e.state&&(e.state=t,e[n]=r,Yr(e)),e},Yr=function(e){1===e.state?qr(e,"onFulfilled",e.fulfillValue):2===e.state&&qr(e,"onRejected",e.rejectReason)},qr=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var a=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n-1}}(),a=function(){if(Xa)return Fa;Xa=1;var e=Li();return Fa=function(t,n){var r=this.__data__,a=e(r,t);return a<0?(++this.size,r.push([t,n])):r[a][1]=n,this},Fa}();function i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&t%1==0&&t0&&this.spawn(r).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){H(e)||(e=e.match(/\S+/g)||[]);for(var n=this,r=void 0===t,a=[],i=0,o=n.length;i0&&this.spawn(a).updateStyle().emit("class"),n},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout((function(){n.removeClass(e)}),t),n}};Eo.className=Eo.classNames=Eo.classes;var ko={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:ce,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};ko.variable="(?:[\\w-.]|(?:\\\\"+ko.metaChar+"))+",ko.className="(?:[\\w-]|(?:\\\\"+ko.metaChar+"))+",ko.value=ko.string+"|"+ko.number,ko.id=ko.variable,function(){var e,t,n;for(e=ko.comparatorOp.split("|"),n=0;n=0||"="!==t&&(ko.comparatorOp+="|\\!"+t)}();var To=0,Co=1,Po=2,So=3,Bo=4,Do=5,_o=6,Ao=7,Mo=8,Ro=9,Io=10,No=11,Lo=12,zo=13,Oo=14,Vo=15,Fo=16,Xo=17,jo=18,Yo=19,qo=20,Wo=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort((function(e,t){return function(e,t){return-1*ge(e,t)}(e.selector,t.selector)})),Uo=function(){for(var e,t={},n=0;n0&&u.edgeCount>0)return at("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return at("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&at("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return W(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,i){var o=r.type,s=r.value;switch(o){case To:var l=e(s);return l.substring(0,l.length-1);case So:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case Do:var d=r.operator,h=r.field;return"["+e(d)+h+"]";case Bo:return"["+r.field+"]";case _o:var f=r.operator;return"[["+r.field+n(e(f))+t(s)+"]]";case Ao:return s;case Mo:return"#"+s;case Ro:return"."+s;case Xo:case Vo:return a(r.parent,i)+n(">")+a(r.child,i);case jo:case Fo:return a(r.ancestor,i)+" "+a(r.descendant,i);case Yo:var p=a(r.left,i),g=a(r.subject,i),v=a(r.right,i);return p+(p.length>0?" ":"")+g+v;case qo:return""}},a=function(e,t){return e.checks.reduce((function(n,a,i){return n+(t===e&&0===i?"$":"")+r(a,t)}),"")},i="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(a=o||s?""+e:"",i=""+n),u&&(e=a=a.toLowerCase(),n=i=i.toLowerCase()),t){case"*=":r=a.indexOf(i)>=0;break;case"$=":r=a.indexOf(i,a.length-i.length)>=0;break;case"^=":r=0===a.indexOf(i);break;case"=":r=e===n;break;case">":d=!0,r=e>n;break;case">=":d=!0,r=e>=n;break;case"<":d=!0,r=e0;){var u=a.shift();t(u),i.add(u.id()),o&&r(a,i,u)}return e}function hs(e,t,n){if(n.isParent())for(var r=n._private.children,a=0;a1&&void 0!==arguments[1])||arguments[1],hs)},cs.forEachUp=function(e){return ds(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],fs)},cs.forEachUpAndDown=function(e){return ds(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],ps)},cs.ancestors=cs.parents,(ss=ls={data:xo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:xo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:xo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:xo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:xo.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:xo.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=ss.data,ss.removeAttr=ss.removeData;var gs,vs,ys=ls,ms={};function bs(e){return function(t){var n=this;if(void 0===t&&(t=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var r=0,a=n[0],i=a._private.edges,o=0;ot})),minIndegree:xs("indegree",(function(e,t){return et})),minOutdegree:xs("outdegree",(function(e,t){return et}))}),ve(ms,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,c=u;u&&(l=l[0]);var d=c?l.position():{x:0,y:0};return a={x:s.x-d.x,y:s.y-d.y},void 0===e?a:a[e]}for(var h=0;h0,v=g;g&&(p=p[0]);var y=v?p.position():{x:0,y:0};void 0!==t?f.position(e,t+y[e]):void 0!==a&&f.position({x:a.x+y.x,y:a.y+y.y})}}else if(!i)return;return this}},gs.modelPosition=gs.point=gs.position,gs.modelPositions=gs.points=gs.positions,gs.renderedPoint=gs.renderedPosition,gs.relativePoint=gs.relativePosition;var ks,Ts,Cs=vs,Ps=function(e){switch(e){case"left":case"right-inside":return"left";case"right":case"left-inside":return"right";default:return"center"}},Ss=function(e){switch(e){case"top":case"bottom-inside":return"top";case"bottom":case"top-inside":return"bottom";default:return"center"}};ks=Ts={},Ts.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),a=n.pan(),i=t.x1*r+a.x,o=t.x2*r+a.x,s=t.y1*r+a.y,l=t.y2*r+a.y;return{x1:i,x2:o,y1:s,y2:l,w:o-i,h:l-s}},Ts.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp((function(t){if(t.isParent()){var n=t._private;n.compoundBoundsClean=!1,n.bbCache=null,e||t.emitAndNotify("bounds")}})),this):this},Ts.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,a={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},i=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==i.w&&0!==i.h||((i={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-i.w/2,i.x2=o.x+i.w/2,i.y1=o.y-i.h/2,i.y2=o.y+i.h/2);var s=a.width.left.value;"px"===a.width.left.units&&a.width.val>0&&(s=100*s/a.width.val);var l=a.width.right.value;"px"===a.width.right.units&&a.width.val>0&&(l=100*l/a.width.val);var u=a.height.top.value;"px"===a.height.top.units&&a.height.val>0&&(u=100*u/a.height.val);var c=a.height.bottom.value;"px"===a.height.bottom.units&&a.height.val>0&&(c=100*c/a.height.val);var d=y(a.width.val-i.w,s,l),h=d.biasDiff,f=d.biasComplementDiff,p=y(a.height.val-i.h,u,c),g=p.biasDiff,v=p.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(i.w,i.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(i.w,a.width.val),o.x=(-h+i.x1+i.x2+f)/2,t.autoHeight=Math.max(i.h,a.height.val),o.y=(-g+i.y1+i.y2+v)/2}function y(e,t,n){var r=0,a=0,i=t+n;return e>0&&i>0&&(r=t/i*e,a=n/i*e),{biasDiff:r,biasComplementDiff:a}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},_s=function(e,t){return null==t?e:Ds(e,t.x1,t.y1,t.x2,t.y2)},As=function(e,t,n){return ht(e,t,n)},Ms=function(e,t,n){if(!t.cy().headless()){var r,a,i=t._private,o=i.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,a=o.srcY):"target"===n?(r=o.tgtX,a=o.tgtY):(r=o.midX,a=o.midY);var l=i.arrowBounds=i.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=a-s,u.x2=r+s,u.y2=a+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,tn(u,1),Ds(e,u.x1,u.y1,u.x2,u.y2)}}},Rs=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var a=t._private,i=a.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),d=t.pstyle("text-valign"),h=As(i,"labelWidth",n),f=As(i,"labelHeight",n),p=As(i,"labelX",n),g=As(i,"labelY",n),v=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,k=f,T=h,C=T/2,P=k/2;if(m)o=p-C,s=p+C,l=g-P,u=g+P;else{switch(Ps(c.value)){case"left":o=p-T,s=p;break;case"center":o=p-C,s=p+C;break;case"right":o=p,s=p+T}switch(Ss(d.value)){case"top":l=g-k,u=g;break;case"center":l=g-P,u=g+P;break;case"bottom":l=g,u=g+k}}var S=v-Math.max(x,w)-E-2,B=v+Math.max(x,w)+E+2,D=y-Math.max(x,w)-E-2,_=y+Math.max(x,w)+E+2;o+=S,s+=B,l+=D,u+=_;var A=n||"main",M=a.labelBounds,R=M[A]=M[A]||{};R.x1=o,R.y1=l,R.x2=s,R.y2=u,R.w=s-o,R.h=u-l,R.leftPad=S,R.rightPad=B,R.topPad=D,R.botPad=_;var I=m&&"autorotate"===b.strValue,N=null!=b.pfValue&&0!==b.pfValue;if(I||N){var L=I?As(a.rstyle,"labelAngle",n):b.pfValue,z=Math.cos(L),O=Math.sin(L),V=(o+s)/2,F=(l+u)/2;if(!m){switch(Ps(c.value)){case"left":V=s;break;case"right":V=o}switch(Ss(d.value)){case"top":F=u;break;case"bottom":F=l}}var X=function(e,t){return{x:(e-=V)*z-(t-=F)*O+V,y:e*O+t*z+F}},j=X(o,l),Y=X(o,u),q=X(s,l),W=X(s,u);o=Math.min(j.x,Y.x,q.x,W.x),s=Math.max(j.x,Y.x,q.x,W.x),l=Math.min(j.y,Y.y,q.y,W.y),u=Math.max(j.y,Y.y,q.y,W.y)}var U=A+"Rot",H=M[U]=M[U]||{};H.x1=o,H.y1=l,H.x2=s,H.y2=u,H.w=s-o,H.h=u-l,Ds(e,o,l,s,u),Ds(a.labelBounds.all,o,l,s,u)}return e}},Is=function(e,t){if(!t.cy().headless()){var n=t.pstyle("outline-opacity").value,r=t.pstyle("outline-width").value+t.pstyle("outline-offset").value;Ns(e,t,n,r,"outside",r/2)}},Ns=function(e,t,n,r,a,i){if(!(0===n||r<=0||"inside"===a)){var o=t.cy().renderer(),s=o.nodeShapes[o.getNodeShape(t)];if(s){var l=t.position(),u=l.x,c=l.y,d=t.width(),h=t.height();if(s.hasMiterBounds){"center"===a&&(r/=2);var f=s.miterBounds(u,c,d,h,r);_s(e,f)}else null!=i&&i>0&&nn(e,[i,i,i,i])}}},Ls=function(e,t){var n,r,a,i,o,s,l,u=e._private.cy,c=u.styleEnabled(),d=u.headless(),h=Jt(),f=e._private,p=e.isNode(),g=e.isEdge(),v=f.rstyle,y=p&&c?e.pstyle("bounds-expansion").pfValue:[0],m=function(e){return"none"!==e.pstyle("display").value},b=!c||m(e)&&(!g||m(e.source())&&m(e.target()));if(b){var x=0;c&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(x=e.pstyle("overlay-padding").value);var w=0;c&&t.includeUnderlays&&0!==e.pstyle("underlay-opacity").value&&(w=e.pstyle("underlay-padding").value);var E=Math.max(x,w),k=0;if(c&&(k=e.pstyle("width").pfValue/2),p&&t.includeNodes){var T=e.position();o=T.x,s=T.y;var C=e.outerWidth()/2,P=e.outerHeight()/2;Ds(h,n=o-C,a=s-P,r=o+C,i=s+P),c&&Is(h,e),c&&t.includeOutlines&&!d&&Is(h,e),c&&function(e,t){if(!t.cy().headless()){var n=t.pstyle("border-opacity").value,r=t.pstyle("border-width").pfValue,a=t.pstyle("border-position").value;Ns(e,t,n,r,a)}}(h,e)}else if(g&&t.includeEdges)if(c&&!d){var S=e.pstyle("curve-style").strValue;if(n=Math.min(v.srcX,v.midX,v.tgtX),r=Math.max(v.srcX,v.midX,v.tgtX),a=Math.min(v.srcY,v.midY,v.tgtY),i=Math.max(v.srcY,v.midY,v.tgtY),Ds(h,n-=k,a-=k,r+=k,i+=k),"haystack"===S){var B=v.haystackPts;if(B&&2===B.length){if(n=B[0].x,a=B[0].y,n>(r=B[1].x)){var D=n;n=r,r=D}if(a>(i=B[1].y)){var _=a;a=i,i=_}Ds(h,n-k,a-k,r+k,i+k)}}else if("bezier"===S||"unbundled-bezier"===S||ue(S,"segments")||ue(S,"taxi")){var A;switch(S){case"bezier":case"unbundled-bezier":A=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":A=v.linePts}if(null!=A)for(var M=0;M(r=N.x)){var L=n;n=r,r=L}if((a=I.y)>(i=N.y)){var z=a;a=i,i=z}Ds(h,n-=k,a-=k,r+=k,i+=k)}if(c&&t.includeEdges&&g&&(Ms(h,e,"mid-source"),Ms(h,e,"mid-target"),Ms(h,e,"source"),Ms(h,e,"target")),c)if("yes"===e.pstyle("ghost").value){var O=e.pstyle("ghost-offset-x").pfValue,V=e.pstyle("ghost-offset-y").pfValue;Ds(h,h.x1+O,h.y1+V,h.x2+O,h.y2+V)}var F=f.bodyBounds=f.bodyBounds||{};rn(F,h),nn(F,y),tn(F,1),c&&(n=h.x1,r=h.x2,a=h.y1,i=h.y2,Ds(h,n-E,a-E,r+E,i+E));var X=f.overlayBounds=f.overlayBounds||{};rn(X,h),nn(X,y),tn(X,1);var j=f.labelBounds=f.labelBounds||{};null!=j.all?((l=j.all).x1=1/0,l.y1=1/0,l.x2=-1/0,l.y2=-1/0,l.w=0,l.h=0):j.all=Jt(),c&&t.includeLabels&&(t.includeMainLabels&&Rs(h,e,null),g&&(t.includeSourceLabels&&Rs(h,e,"source"),t.includeTargetLabels&&Rs(h,e,"target")))}return h.x1=Bs(h.x1),h.y1=Bs(h.y1),h.x2=Bs(h.x2),h.y2=Bs(h.y2),h.w=Bs(h.x2-h.x1),h.h=Bs(h.y2-h.y1),h.w>0&&h.h>0&&b&&(nn(h,y),tn(h,1)),h},zs=function(e){var t=0,n=function(e){return(e?1:0)<0&&void 0!==arguments[0]?arguments[0]:rl,t=arguments.length>1?arguments[1]:void 0,n=0;n=0;s--)o(s);return this},il.removeAllListeners=function(){return this.removeListener("*")},il.emit=il.trigger=function(e,t,n){var r=this.listeners,a=r.length;return this.emitting++,H(t)||(t=[t]),ll(this,(function(e,i){null!=n&&(r=[{event:i.event,type:i.type,namespace:i.namespace,callback:n}],a=r.length);for(var o=function(){var n=r[s];if(n.type===i.type&&(!n.namespace||n.namespace===i.namespace||".*"===n.namespace)&&e.eventMatches(e.context,n,i)){var a=[i];null!=t&&function(e,t){for(var n=0;n1&&!r){var a=this.length-1,i=this[a],o=i._private.data.id;this[a]=void 0,this[e]=i,n.set(o,{ele:i,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var a=r.index;return this.unmergeAt(a),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&W(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=this,a=0;ar&&(r=s,n=o)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,a=this,i=0;i=0&&a1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,r.style().apply(n));var a=n._private.style[e];return null!=a?a:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=!1,a=n.style();if(K(e)){var i=e;a.applyBypass(this,i,r),this.emitAndNotify("style")}else if(W(e)){if(void 0===t){var o=this[0];return o?a.getStylePropertyValue(o,e):void 0}a.applyBypass(this,e,t,r),this.emitAndNotify("style")}else if(void 0===e){var s=this[0];return s?a.getRawStyle(s):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=!1,r=t.style(),a=this;if(void 0===e)for(var i=0;i0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)}),"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Rl.neighbourhood=Rl.neighborhood,Rl.closedNeighbourhood=Rl.closedNeighborhood,Rl.openNeighbourhood=Rl.openNeighborhood,ve(Rl,{source:us((function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t}),"source"),target:us((function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t}),"target"),sources:zl({attr:"source"}),targets:zl({attr:"target"})}),ve(Rl,{edgesWith:us(Ol(),"edgesWith"),edgesTo:us(Ol({thisIsSrc:!0}),"edgesTo")}),ve(Rl,{connectedEdges:us((function(e){for(var t=[],n=0;n0);return i},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Rl.componentsOf=Rl.components;var Fl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==e){var a=new pt,i=!1;if(t){if(t.length>0&&K(t[0])&&!Q(t[0])){i=!0;for(var o=[],s=new vt,l=0,u=t.length;l0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=this,i=a.cy(),o=i._private,s=[],l=[],u=0,c=a.length;u0){for(var I=e.length===a.length?a:new Fl(i,e),N=0;N0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=[],a={},i=n._private.cy;function o(e){var n=a[e.id()];t&&e.removed()||n||(a[e.id()]=!0,e.isNode()?(r.push(e),function(e){for(var t=e._private.edges,n=0;n0&&(e?k.emitAndNotify("remove"):t&&k.emit("remove"));for(var T=0;T=.001?function(t,r){for(var a=0;a<4;++a){var i=h(r,e,n);if(0===i)return r;r-=(d(r,e,n)-t)/i}return r}(t,o):0===l?o:function(t,r,a){var i,o,s=0;do{(i=d(o=r+(a-r)/2,e,n)-t)>0?a=o:r=o}while(Math.abs(i)>1e-7&&++s<10);return o}(t,r,r+a)}var p=!1;function g(){p=!0,e===t&&n===r||function(){for(var t=0;t<11;++t)s[t]=d(t*a,e,n)}()}var v=function(a){return p||g(),e===t&&n===r?a:0===a?0:1===a?1:d(f(a),t,r)};v.getControlPoints=function(){return[{x:e,y:t},{x:n,y:r}]};var y="generateBezier("+[e,t,n,r]+")";return v.toString=function(){return y},v} +/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var ql=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,n,r){var a={x:t.x+r.dx*n,v:t.v+r.dv*n,tension:t.tension,friction:t.friction};return{dx:a.v,dv:e(a)}}function n(n,r){var a={dx:n.v,dv:e(n)},i=t(n,.5*r,a),o=t(n,.5*r,i),s=t(n,r,o),l=1/6*(a.dx+2*(i.dx+o.dx)+s.dx),u=1/6*(a.dv+2*(i.dv+o.dv)+s.dv);return n.x=n.x+l*r,n.v=n.v+u*r,n}return function e(t,r,a){var i,o,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,d=1e-4;for(t=parseFloat(t)||500,r=parseFloat(r)||20,a=a||null,l.tension=t,l.friction=r,o=(i=null!==a)?(c=e(t,r))/a*.016:.016;s=n(s||l,o),u.push(1+s.x),c+=16,Math.abs(s.x)>d&&Math.abs(s.v)>d;);return i?function(e){return u[e*(u.length-1)|0]}:c}}(),Wl=function(e,t,n,r){var a=Yl(e,t,n,r);return function(e,t,n){return e+(t-e)*a(n)}},Ul={linear:function(e,t,n){return e+(t-e)*n},ease:Wl(.25,.1,.25,1),"ease-in":Wl(.42,0,1,1),"ease-out":Wl(0,0,.58,1),"ease-in-out":Wl(.42,0,.58,1),"ease-in-sine":Wl(.47,0,.745,.715),"ease-out-sine":Wl(.39,.575,.565,1),"ease-in-out-sine":Wl(.445,.05,.55,.95),"ease-in-quad":Wl(.55,.085,.68,.53),"ease-out-quad":Wl(.25,.46,.45,.94),"ease-in-out-quad":Wl(.455,.03,.515,.955),"ease-in-cubic":Wl(.55,.055,.675,.19),"ease-out-cubic":Wl(.215,.61,.355,1),"ease-in-out-cubic":Wl(.645,.045,.355,1),"ease-in-quart":Wl(.895,.03,.685,.22),"ease-out-quart":Wl(.165,.84,.44,1),"ease-in-out-quart":Wl(.77,0,.175,1),"ease-in-quint":Wl(.755,.05,.855,.06),"ease-out-quint":Wl(.23,1,.32,1),"ease-in-out-quint":Wl(.86,0,.07,1),"ease-in-expo":Wl(.95,.05,.795,.035),"ease-out-expo":Wl(.19,1,.22,1),"ease-in-out-expo":Wl(1,0,0,1),"ease-in-circ":Wl(.6,.04,.98,.335),"ease-out-circ":Wl(.075,.82,.165,1),"ease-in-out-circ":Wl(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return Ul.linear;var r=ql(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":Wl};function Hl(e,t,n,r,a){if(1===r)return n;if(t===n)return n;var i=a(t,n,r);return null==e||((e.roundValue||e.color)&&(i=Math.round(i)),void 0!==e.min&&(i=Math.max(i,e.min)),void 0!==e.max&&(i=Math.min(i,e.max))),i}function Kl(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function Gl(e,t,n,r,a){var i=null!=a?a.type:null;n<0?n=0:n>1&&(n=1);var o=Kl(e,a),s=Kl(t,a);if(G(o)&&G(s))return Hl(i,o,s,n,r);if(H(o)&&H(s)){for(var l=[],u=0;u0?("spring"===d&&h.push(o.duration),o.easingImpl=Ul[d].apply(null,h)):o.easingImpl=Ul[d]}var f,p=o.easingImpl;if(f=0===o.duration?1:(n-l)/o.duration,o.applying&&(f=o.progress),f<0?f=0:f>1&&(f=1),null==o.delay){var g=o.startPosition,v=o.position;if(v&&a&&!e.locked()){var y={};$l(g.x,v.x)&&(y.x=Gl(g.x,v.x,f,p)),$l(g.y,v.y)&&(y.y=Gl(g.y,v.y,f,p)),e.position(y)}var m=o.startPan,b=o.pan,x=i.pan,w=null!=b&&r;w&&($l(m.x,b.x)&&(x.x=Gl(m.x,b.x,f,p)),$l(m.y,b.y)&&(x.y=Gl(m.y,b.y,f,p)),e.emit("pan"));var E=o.startZoom,k=o.zoom,T=null!=k&&r;T&&($l(E,k)&&(i.zoom=Qt(i.minZoom,Gl(E,k,f,p),i.maxZoom)),e.emit("zoom")),(w||T)&&e.emit("viewport");var C=o.style;if(C&&C.length>0&&a){for(var P=0;P=0;t--){(0,e[t])()}e.splice(0,e.length)},c=i.length-1;c>=0;c--){var d=i[c],h=d._private;h.stopped?(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.frames)):(h.playing||h.applying)&&(h.playing&&h.applying&&(h.applying=!1),h.started||Ql(0,d,e),Zl(t,d,e,n),h.applying&&(h.applying=!1),u(h.frames),null!=h.step&&h.step(e),d.completed()&&(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.completes)),s=!0)}return n||0!==i.length||0!==o.length||r.push(t),s}for(var i=!1,o=0;o0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var eu={animate:xo.animate(),animation:xo.animation(),animated:xo.animated(),clearQueue:xo.clearQueue(),delay:xo.delay(),delayAnimation:xo.delayAnimation(),stop:xo.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender((function(t,n){Jl(n,e)}),t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&Ie((function(n){Jl(n,e),t()}))}()}}},tu={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&Q(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},nu=function(e){return W(e)?new as(e):e},ru={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new al(tu,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,nu(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,nu(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,nu(t),n),this},once:function(e,t,n){return this.emitter().one(e,nu(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};xo.eventAliasesOn(ru);var au={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};au.jpeg=au.jpg;var iu={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var n=e.name,r=t.extension("layout",n);if(null!=r){var a;a=W(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var i=new r(ve({},e,{cy:t,eles:a}));return i}nt("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else nt("A `name` must be specified to make a layout");else nt("Layout options must be specified to make a layout")}};iu.createLayout=iu.makeLayout=iu.layout;var ou={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var a=this.renderer();!this.destroyed()&&a&&a.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach((function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)}))}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch((function(){for(var n=Object.keys(e),r=0;r0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach((function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]}))},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};lu.invalidateDimensions=lu.resize;var uu={collection:function(e,t){return W(e)?this.$(e):$(e)?e.collection():H(e)?(t||(t={}),new Fl(this,e,t.unique,t.removed)):new Fl(this)},nodes:function(e){var t=this.$((function(e){return e.isNode()}));return e?t.filter(e):t},edges:function(e){var t=this.$((function(e){return e.isEdge()}));return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};uu.elements=uu.filter=uu.$;var cu={},du="t";cu.apply=function(e){for(var t=this,n=t._private.cy.collection(),r=0;r0;if(h||d&&f){var p=void 0;h&&f||h?p=u.properties:f&&(p=u.mappedProperties);for(var g=0;g1&&(v=1),s.color){var w=a.valueMin[0],E=a.valueMax[0],k=a.valueMin[1],T=a.valueMax[1],C=a.valueMin[2],P=a.valueMax[2],S=null==a.valueMin[3]?1:a.valueMin[3],B=null==a.valueMax[3]?1:a.valueMax[3],D=[Math.round(w+(E-w)*v),Math.round(k+(T-k)*v),Math.round(C+(P-C)*v),Math.round(S+(B-S)*v)];n={bypass:a.bypass,name:a.name,value:D,strValue:"rgb("+D[0]+", "+D[1]+", "+D[2]+")"}}else{if(!s.number)return!1;var _=a.valueMin+(a.valueMax-a.valueMin)*v;n=this.parse(a.name,_,a.bypass,h)}if(!n)return g(),!1;n.mapping=a,a=n;break;case o.data:for(var A=a.field.split("."),M=d.data,R=0;R0&&i>0){for(var s={},l=!1,u=0;u0?e.delayAnimation(o).play().promise().then(t):t()})).then((function(){return e.animation({style:s,duration:i,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()})).then((function(){n.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1}))}else r.transitioning&&(this.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1)},cu.checkTrigger=function(e,t,n,r,a,i){var o=this.properties[t],s=a(o);e.removed()||null!=s&&s(n,r,e)&&i(o)},cu.checkZOrderTrigger=function(e,t,n,r){var a=this;this.checkTrigger(e,t,n,r,(function(e){return e.triggersZOrder}),(function(){a._private.cy.notify("zorder",e)}))},cu.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,(function(e){return e.triggersBounds}),(function(t){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()}))},cu.checkConnectedEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,(function(e){return e.triggersBoundsOfConnectedEdges}),(function(t){e.connectedEdges().forEach((function(e){e.dirtyBoundingBoxCache()}))}))},cu.checkParallelEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,(function(e){return e.triggersBoundsOfParallelEdges}),(function(t){e.parallelEdges().forEach((function(e){e.dirtyBoundingBoxCache()}))}))},cu.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r),this.checkConnectedEdgesBoundsTrigger(e,t,n,r),this.checkParallelEdgesBoundsTrigger(e,t,n,r)};var hu={applyBypass:function(e,t,n,r){var a=[];if("*"===t||"**"===t){if(void 0!==n)for(var i=0;it.length?i.substr(t.length):""}function s(){n=n.length>r.length?n.substr(r.length):""}for(i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(i.match(/^\s*$/))break;var l=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){at("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}t=l[0];var u=l[1];if("core"!==u)if(new as(u).invalid){at("Skipping parsing of block: Invalid selector found in string stylesheet: "+u),o();continue}var c=l[2],d=!1;n=c;for(var h=[];;){if(n.match(/^\s*$/))break;var f=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!f){at("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+c),d=!0;break}r=f[0];var p=f[1],g=f[2];if(this.properties[p])a.parse(p,g)?(h.push({name:p,val:g}),s()):(at("Skipping property: Invalid property definition in: "+r),s());else at("Skipping property: Invalid property name in: "+r),s()}if(d){o();break}a.selector(u);for(var v=0;v=7&&"d"===t[0]&&(u=new RegExp(s.data.regex).exec(t))){if(n)return!1;var h=s.data;return{name:e,value:u,strValue:""+t,mapped:h,field:u[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(c=new RegExp(s.mapData.regex).exec(t))){if(n)return!1;if(d.multiple)return!1;var f=s.mapData;if(!d.color&&!d.number)return!1;var p=this.parse(e,c[4]);if(!p||p.mapped)return!1;var g=this.parse(e,c[5]);if(!g||g.mapped)return!1;if(p.pfValue===g.pfValue||p.strValue===g.strValue)return at("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+p.strValue+"`"),this.parse(e,p.strValue);if(d.color){var v=p.value,y=g.value;if(!(v[0]!==y[0]||v[1]!==y[1]||v[2]!==y[2]||v[3]!==y[3]&&(null!=v[3]&&1!==v[3]||null!=y[3]&&1!==y[3])))return!1}return{name:e,value:c,strValue:""+t,mapped:f,field:c[1],fieldMin:parseFloat(c[2]),fieldMax:parseFloat(c[3]),valueMin:p.value,valueMax:g.value,bypass:n}}}if(d.multiple&&"multiple"!==r){var m;if(m=l?t.split(/\s+/):H(t)?t:[t],d.evenMultiple&&m.length%2!=0)return null;for(var b=[],x=[],w=[],E="",k=!1,T=0;T0?" ":"")+C.strValue}return d.validate&&!d.validate(b,x)?null:d.singleEnum&&k?1===b.length&&W(b[0])?{name:e,value:b[0],strValue:b[0],bypass:n}:null:{name:e,value:b,pfValue:w,strValue:E,bypass:n,units:x}}var P,S,B=function(){for(var r=0;rd.max||d.strictMax&&t===d.max))return null;var R={name:e,value:t,strValue:""+t+(D||""),units:D,bypass:n};return d.unitless||"px"!==D&&"em"!==D?R.pfValue=t:R.pfValue="px"!==D&&D?this.getEmSizeInPixels()*t:t,"ms"!==D&&"s"!==D||(R.pfValue="ms"===D?t:1e3*t),"deg"!==D&&"rad"!==D||(R.pfValue="rad"===D?t:(P=t,Math.PI*P/180)),"%"===D&&(R.pfValue=t/100),R}if(d.propList){var I=[],N=""+t;if("none"===N);else{for(var L=N.split(/\s*,\s*|\s+/),z=0;z0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:o=(o=(o=Math.min((s-2*t)/n.w,(l-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:o)=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,a=r.pan,i=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),G(e)?n=e:K(e)&&(n=e.level,null!=e.position?t=Xt(e.position,i,a):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)t.maxZoom||!t.zoomingEnabled?i=!0:(t.zoom=s,a.push("zoom"))}if(r&&(!i||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;G(l.x)&&(t.pan.x=l.x,o=!1),G(l.y)&&(t.pan.y=l.y,o=!1),o||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(W(e)){var n=e;e=this.mutableElements().filter(n)}else $(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),a=this.width(),i=this.height();return{x:(a-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(i-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container,a=this;return n.sizeCache=n.sizeCache||(r?(e=a.window().getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};Eu.centre=Eu.center,Eu.autolockNodes=Eu.autolock,Eu.autoungrabifyNodes=Eu.autoungrabify;var ku={data:xo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:xo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:xo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:xo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};ku.attr=ku.data,ku.removeAttr=ku.removeData;var Tu=function(e){var t=this,n=(e=ve({},e)).container;n&&!Z(n)&&Z(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var a=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var i=void 0!==c&&void 0!==n&&!e.headless,o=e;o.layout=ve({name:i?"grid":"null"},o.layout),o.renderer=ve({name:i?"canvas":"null"},o.renderer);var s=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},l=this._private={container:n,ready:!1,options:o,elements:new Fl(this),listeners:[],aniEles:new Fl(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?i:o.styleEnabled,zoom:G(o.zoom)?o.zoom:1,pan:{x:K(o.pan)&&G(o.pan.x)?o.pan.x:0,y:K(o.pan)&&G(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});l.styleEnabled&&t.setStyle([]);var u=ve({},o,o.renderer);t.initRenderer(u);!function(e,t){if(e.some(re))return Hr.all(e).then(t);t(e)}([o.style,o.elements],(function(e){var n=e[0],i=e[1];l.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var a=t.mutableElements();a.length>0&&a.remove(),null!=e&&(K(e)||H(e))&&t.add(e),t.one("layoutready",(function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")})).one("layoutstop",(function(){t.one("done",r),t.emit("done")}));var i=ve({},t._private.options.layout);i.eles=t.elements(),t.layout(i).run()}(i,(function(){t.startAnimationLoop(),l.ready=!0,U(o.ready)&&t.on("ready",o.ready);for(var e=0;e0,l=!!t.boundingBox,u=Jt(l?t.boundingBox:structuredClone(n.extent()));if($(t.roots))e=t.roots;else if(H(t.roots)){for(var c=[],d=0;d0;){var B=C.shift(),D=T(B,P);if(D)B.outgoers().filter((function(e){return e.isNode()&&r.has(e)})).forEach(S);else if(null===D){at("Detected double maximal shift for node `"+B.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var _=0;if(t.avoidOverlap)for(var A=0;A0&&y[0].length<=3?i/2:0),s=2*Math.PI/y[r].length*a;return 0===r&&1===y[0].length&&(o=1),{x:q+o*Math.cos(s),y:U+o*Math.sin(s)}}var c=y[r].length,d=Math.max(1===c?0:l?(u.w-2*t.padding-K.w)/((t.grid?Z:c)-1):(u.w-2*t.padding-K.w)/((t.grid?Z:c)+1),_);return{x:q+(a+1-(c+1)/2)*d,y:U+(r+1-(O+1)/2)*G}}(e),u,Q[t.direction])})),this};var Au={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Mu(e){this.options=ve({},Au,e)}Mu.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,i=r.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));for(var o,s=Jt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/i.length:t.sweep)/Math.max(1,i.length-1),d=0,h=0;h1&&t.avoidOverlap){d*=1.75;var v=Math.cos(c)-Math.cos(0),y=Math.sin(c)-Math.sin(0),m=Math.sqrt(d*d/(v*v+y*y));o=Math.max(m,o)}return r.nodes().layoutPositions(this,t,(function(e,n){var r=t.startAngle+n*c*(a?1:-1),i=o*Math.cos(r),s=o*Math.sin(r);return{x:l+i,y:u+s}})),this};var Ru,Iu={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Nu(e){this.options=ve({},Iu,e)}Nu.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,a=t.eles,i=a.nodes().not(":parent"),o=Jt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,l=o.y1+o.h/2,u=[],c=0,d=0;d0)Math.abs(m[0].value-x.value)>=v&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var E=y.length>0&&y[0].length>1,k=(Math.min(o.w,o.h)/2-w)/(y.length+E?1:0);w=Math.min(w,k)}for(var T=0,C=0;C1&&t.avoidOverlap){var D=Math.cos(B)-Math.cos(0),_=Math.sin(B)-Math.sin(0),A=Math.sqrt(w*w/(D*D+_*_));T=Math.max(A,T)}P.r=T,T+=w}if(t.equidistant){for(var M=0,R=0,I=0;I=e.numIter)&&(qu(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature=e.animationThreshold&&i(),Ie(c)):(nc(r,e),s())};c()}else{for(;u;)u=o(l),l++;nc(r,e),s()}return this},zu.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},zu.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Ou=function(e,t,n){for(var r=n.eles.edges(),a=n.eles.nodes(),i=Jt(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:i.w,clientHeight:i.h,boundingBox:i},s=n.eles.components(),l={},u=0;u0){o.graphSet.push(w);for(u=0;ur.count?0:r.graph},Fu=function(e,t,n,r){var a=r.graphSet[n];if(-10)var s=(u=r.nodeOverlap*o)*a/(g=Math.sqrt(a*a+i*i)),l=u*i/g;else{var u,c=Gu(e,a,i),d=Gu(t,-1*a,-1*i),h=d.x-c.x,f=d.y-c.y,p=h*h+f*f,g=Math.sqrt(p);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/p)*h/g,l=u*f/g}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},Ku=function(e,t,n,r){if(n>0)var a=e.maxX-t.minX;else a=t.maxX-e.minX;if(r>0)var i=e.maxY-t.minY;else i=t.maxY-e.minY;return a>=0&&i>=0?Math.sqrt(a*a+i*i):0},Gu=function(e,t,n){var r=e.positionX,a=e.positionY,i=e.height||1,o=e.width||1,s=n/t,l=i/o,u={};return 0===t&&0n?(u.x=r,u.y=a+i/2,u):0t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=a-o*n/2/t,u):0=l)?(u.x=r+i*t/2/n,u.y=a+i/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-i*t/2/n,u.y=a-i/2,u):u},Zu=function(e,t){for(var n=0;n1){var p=t.gravity*d/f,g=t.gravity*h/f;c.offsetX+=p,c.offsetY+=g}}}}},Qu=function(e,t){var n=[],r=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;r<=a;){var i=n[r++],o=e.idToIndex[i],s=e.layoutNodes[o],l=s.children;if(0n)var a={x:n*e/r,y:n*t/r};else a={x:e,y:t};return a},tc=function(e,t){var n=e.parentId;if(null!=n){var r=t.layoutNodes[t.idToIndex[n]],a=!1;return(null==r.maxX||e.maxX+r.padRight>r.maxX)&&(r.maxX=e.maxX+r.padRight,a=!0),(null==r.minX||e.minX-r.padLeftr.maxY)&&(r.maxY=e.maxY+r.padBottom,a=!0),(null==r.minY||e.minY-r.padTopp&&(d+=f+t.componentSpacing,c=0,h=0,f=0)}}},rc={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function ac(e){this.options=ve({},rc,e)}ac.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));var i=Jt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===i.h||0===i.w)r.nodes().layoutPositions(this,t,(function(e){return{x:i.x1,y:i.y1}}));else{var o=a.size(),s=Math.sqrt(o*i.h/i.w),l=Math.round(s),u=Math.round(i.w/i.h*s),c=function(e){if(null==e)return Math.min(l,u);Math.min(l,u)==l?l=e:u=e},d=function(e){if(null==e)return Math.max(l,u);Math.max(l,u)==l?l=e:u=e},h=t.rows,f=null!=t.cols?t.cols:t.columns;if(null!=h&&null!=f)l=h,u=f;else if(null!=h&&null==f)l=h,u=Math.ceil(o/l);else if(null==h&&null!=f)u=f,l=Math.ceil(o/u);else if(u*l>o){var p=c(),g=d();(p-1)*g>=o?c(p-1):(g-1)*p>=o&&d(g-1)}else for(;u*l=o?d(y+1):c(v+1)}var m=i.w/u,b=i.h/l;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=u&&(A=0,_++)},R={},I=0;I(r=gn(e,t,x[w],x[w+1],x[w+2],x[w+3])))return v(n,r),!0}else if("bezier"===i.edgeType||"multibezier"===i.edgeType||"self"===i.edgeType||"compound"===i.edgeType)for(x=i.allpts,w=0;w+5(r=pn(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return v(n,r),!0;m=m||a.source,b=b||a.target;var E=o.getArrowWidth(l,c),k=[{name:"source",x:i.arrowStartX,y:i.arrowStartY,angle:i.srcArrowAngle},{name:"target",x:i.arrowEndX,y:i.arrowEndY,angle:i.tgtArrowAngle},{name:"mid-source",x:i.midX,y:i.midY,angle:i.midsrcArrowAngle},{name:"mid-target",x:i.midX,y:i.midY,angle:i.midtgtArrowAngle}];for(w=0;w0&&(y(m),y(b))}function b(e,t,n){return ht(e,t,n)}function x(n,r){var a,i=n._private,o=p;a=r?r+"-":"",n.boundingBox();var s=i.labelBounds[r||"main"],l=n.pstyle(a+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=b(i.rscratch,"labelX",r),c=b(i.rscratch,"labelY",r),d=b(i.rscratch,"labelAngle",r),h=n.pstyle(a+"text-margin-x").pfValue,f=n.pstyle(a+"text-margin-y").pfValue,g=s.x1-o-h,y=s.x2+o-h,m=s.y1-o-f,x=s.y2+o-f;if(d){var w=Math.cos(d),E=Math.sin(d),k=function(e,t){return{x:(e-=u)*w-(t-=c)*E+u,y:e*E+t*w+c}},T=k(g,m),C=k(g,x),P=k(y,m),S=k(y,x),B=[T.x+h,T.y+f,P.x+h,P.y+f,S.x+h,S.y+f,C.x+h,C.y+f];if(vn(e,t,B))return v(n),!0}else if(on(s,e,t))return v(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){var a=this.getCachedZSortedEles().interactive,o=2/this.cy.zoom(),s=[],l=Math.min(e,n),u=Math.max(e,n),c=Math.min(t,r),d=Math.max(t,r),h=Jt({x1:e=l,y1:t=c,x2:n=u,y2:r=d}),f=[{x:h.x1,y:h.y1},{x:h.x2,y:h.y1},{x:h.x2,y:h.y2},{x:h.x1,y:h.y2}],p=[[f[0],f[1]],[f[1],f[2]],[f[2],f[3]],[f[3],f[0]]];function g(e,t,n){return ht(e,t,n)}function v(e,t){var n=e._private,r=o;e.boundingBox();var a=n.labelBounds.main;if(!a)return null;var i=g(n.rscratch,"labelX",t),s=g(n.rscratch,"labelY",t),l=g(n.rscratch,"labelAngle",t),u=e.pstyle("text-margin-x").pfValue,c=e.pstyle("text-margin-y").pfValue,d=a.x1-r-u,h=a.x2+r-u,f=a.y1-r-c,p=a.y2+r-c;if(l){var v=Math.cos(l),y=Math.sin(l),m=function(e,t){return{x:(e-=i)*v-(t-=s)*y+i,y:e*y+t*v+s}};return[m(d,f),m(h,f),m(h,p),m(d,p)]}return[{x:d,y:f},{x:h,y:f},{x:h,y:p},{x:d,y:p}]}function y(e,t,n,r){function a(e,t,n){return(n.y-e.y)*(t.x-e.x)>(t.y-e.y)*(n.x-e.x)}return a(e,n,r)!==a(t,n,r)&&a(e,t,n)!==a(e,t,r)}for(var m=0;m0?-(Math.PI-i.ang):Math.PI+i.ang),zc(t,n,Lc),xc=Nc.nx*Lc.ny-Nc.ny*Lc.nx,wc=Nc.nx*Lc.nx-Nc.ny*-Lc.ny,Tc=Math.asin(Math.max(-1,Math.min(1,xc))),Math.abs(Tc)<1e-6)return mc=t.x,bc=t.y,void(Pc=Bc=0);Ec=1,kc=!1,wc<0?Tc<0?Tc=Math.PI+Tc:(Tc=Math.PI-Tc,Ec=-1,kc=!0):Tc>0&&(Ec=-1,kc=!0),Bc=void 0!==t.radius?t.radius:r,Cc=Tc/2,Dc=Math.min(Nc.len/2,Lc.len/2),a?(Sc=Math.abs(Math.cos(Cc)*Bc/Math.sin(Cc)))>Dc?(Sc=Dc,Pc=Math.abs(Sc*Math.sin(Cc)/Math.cos(Cc))):Pc=Bc:(Sc=Math.min(Dc,Bc),Pc=Math.abs(Sc*Math.sin(Cc)/Math.cos(Cc))),Mc=t.x+Lc.nx*Sc,Rc=t.y+Lc.ny*Sc,mc=Mc-Lc.ny*Pc*Ec,bc=Rc+Lc.nx*Pc*Ec,_c=t.x+Nc.nx*Sc,Ac=t.y+Nc.ny*Sc,Ic=t};function Vc(e,t){0===t.radius?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function Fc(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return 0===r||0===t.radius?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(Oc(e,t,n,r,a),{cx:mc,cy:bc,radius:Pc,startX:_c,startY:Ac,stopX:Mc,stopY:Rc,startAngle:Nc.ang+Math.PI/2*Ec,endAngle:Lc.ang-Math.PI/2*Ec,counterClockwise:kc})}var Xc=.01,jc=Math.sqrt(.02),Yc={};function qc(e){var t=[];if(null!=e){for(var n=0;n0?Math.max(e-t,0):Math.min(e+t,0)},S=P(T,E),B=P(C,k),D=!1;"auto"===v?g=Math.abs(S)>Math.abs(B)?a:r:v===l||v===s?(g=r,D=!0):v!==i&&v!==o||(g=a,D=!0);var _,A=g===r,M=A?B:S,R=A?C:T,I=Ut(R),N=!1;(D&&(m||x)||!(v===s&&R<0||v===l&&R>0||v===i&&R>0||v===o&&R<0)||(M=(I*=-1)*Math.abs(M),N=!0),m)?_=(b<0?1+b:b)*M:_=(b<0?M:0)+b*I;var L=function(e){return Math.abs(e)=Math.abs(M)},z=L(_),O=L(Math.abs(M)-Math.abs(_));if((z||O)&&!N)if(A){var V=Math.abs(R)<=d/2,F=Math.abs(T)<=h/2;if(V){var X=(u.x1+u.x2)/2,j=u.y1,Y=u.y2;n.segpts=[X,j,X,Y]}else if(F){var q=(u.y1+u.y2)/2,W=u.x1,U=u.x2;n.segpts=[W,q,U,q]}else n.segpts=[u.x1,u.y2]}else{var H=Math.abs(R)<=c/2,K=Math.abs(C)<=f/2;if(H){var G=(u.y1+u.y2)/2,Z=u.x1,$=u.x2;n.segpts=[Z,G,$,G]}else if(K){var Q=(u.x1+u.x2)/2,J=u.y1,ee=u.y2;n.segpts=[Q,J,Q,ee]}else n.segpts=[u.x2,u.y1]}else if(A){var te=u.y1+_+(p?d/2*I:0),ne=u.x1,re=u.x2;n.segpts=[ne,te,re,te]}else{var ae=u.x1+_+(p?c/2*I:0),ie=u.y1,oe=u.y2;n.segpts=[ae,ie,ae,oe]}if(n.isRound){var se=e.pstyle("taxi-radius").value,le="arc-radius"===e.pstyle("radius-type").value[0];n.radii=new Array(n.segpts.length/2).fill(se),n.isArcRadius=new Array(n.segpts.length/2).fill(le)}},Yc.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,a=t.tgtPos,i=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,d=t.srcCornerRadius,h=t.tgtCornerRadius,f=t.srcRs,p=t.tgtRs,g=!G(n.startX)||!G(n.startY),v=!G(n.arrowStartX)||!G(n.arrowStartY),y=!G(n.endX)||!G(n.endY),m=!G(n.arrowEndX)||!G(n.arrowEndY),b=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),x=Ht({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),w=xg.poolIndex()){var v=p;p=g,g=v}var y=d.srcPos=p.position(),m=d.tgtPos=g.position(),b=d.srcW=p.outerWidth(),x=d.srcH=p.outerHeight(),E=d.tgtW=g.outerWidth(),k=d.tgtH=g.outerHeight(),T=d.srcShape=n.nodeShapes[t.getNodeShape(p)],C=d.tgtShape=n.nodeShapes[t.getNodeShape(g)],P=d.srcCornerRadius="auto"===p.pstyle("corner-radius").value?"auto":p.pstyle("corner-radius").pfValue,S=d.tgtCornerRadius="auto"===g.pstyle("corner-radius").value?"auto":g.pstyle("corner-radius").pfValue,B=d.tgtRs=g._private.rscratch,D=d.srcRs=p._private.rscratch;d.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var _=0;_=jc||(q=Math.sqrt(Math.max(Y*Y,Xc)+Math.max(j*j,Xc)));var W=d.vector={x:Y,y:j},U=d.vectorNorm={x:W.x/q,y:W.y/q},H={x:-U.y,y:U.x};d.nodesOverlap=!G(q)||C.checkPoint(L[0],L[1],0,E,k,m.x,m.y,S,B)||T.checkPoint(O[0],O[1],0,b,x,y.x,y.y,P,D),d.vectorNormInverse=H,e={nodesOverlap:d.nodesOverlap,dirCounts:d.dirCounts,calculatedIntersection:!0,hasBezier:d.hasBezier,hasUnbundled:d.hasUnbundled,eles:d.eles,srcPos:m,srcRs:B,tgtPos:y,tgtRs:D,srcW:E,srcH:k,tgtW:b,tgtH:x,srcIntn:V,tgtIntn:z,srcShape:C,tgtShape:T,posPts:{x1:X.x2,y1:X.y2,x2:X.x1,y2:X.y1},intersectionPts:{x1:F.x2,y1:F.y2,x2:F.x1,y2:F.y1},vector:{x:-W.x,y:-W.y},vectorNorm:{x:-U.x,y:-U.y},vectorNormInverse:{x:-H.x,y:-H.y}}}var K=N?e:d;M.nodesOverlap=K.nodesOverlap,M.srcIntn=K.srcIntn,M.tgtIntn=K.tgtIntn,M.isRound=R.startsWith("round"),r&&(p.isParent()||p.isChild()||g.isParent()||g.isChild())&&(p.parents().anySame(g)||g.parents().anySame(p)||p.same(g)&&p.isParent())?t.findCompoundLoopPoints(A,K,_,I):p===g?t.findLoopPoints(A,K,_,I):R.endsWith("segments")?t.findSegmentsPoints(A,K):R.endsWith("taxi")?t.findTaxiPoints(A,K):"straight"===R||!I&&d.eles.length%2==1&&_===Math.floor(d.eles.length/2)?t.findStraightEdgePoints(A):t.findBezierPoints(A,K,_,I,N),t.findEndpoints(A),t.tryToCorrectInvalidPoints(A,K),t.checkForInvalidEdgeWarning(A),t.storeAllpts(A),t.storeEdgeProjections(A),t.calculateArrowAngles(A),t.recalculateEdgeLabelProjections(A),t.calculateLabelAngles(A)}},w=0;w0){var J=f,ee=Kt(J,Yt(i)),te=Kt(J,Yt(Q)),ne=ee;if(te2)Kt(J,{x:Q[2],y:Q[3]})0){var ve=p,ye=Kt(ve,Yt(i)),me=Kt(ve,Yt(ge)),be=ye;if(me2)Kt(ve,{x:ge[2],y:ge[3]})=u||m){c={cp:g,segment:y};break}}if(c)break}var b=c.cp,x=c.segment,w=(u-h)/x.length,E=x.t1-x.t0,k=s?x.t0+E*w:x.t1-E*w;k=Qt(0,k,1),t=$t(b.p0,b.p1,b.p2,k),a=function(e,t,n,r){var a=Qt(0,r-.001,1),i=Qt(0,r+.001,1),o=$t(e,t,n,a),s=$t(e,t,n,i);return Zc(o,s)}(b.p0,b.p1,b.p2,k);break;case"straight":case"segments":case"haystack":for(var T,C,P,S,B=0,D=r.allpts.length,_=0;_+3=u));_+=2);var A=(u-C)/T;A=Qt(0,A,1),t=function(e,t,n,r){var a=t.x-e.x,i=t.y-e.y,o=Ht(e,t),s=a/o,l=i/o;return n=null==n?0:n,r=null!=r?r:n*o,{x:e.x+s*r,y:e.y+l*r}}(P,S,A),a=Zc(P,S)}o("labelX",n,t.x),o("labelY",n,t.y),o("labelAutoAngle",n,a)}};u("source"),u("target"),this.applyLabelDimensions(e)}},Kc.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},Kc.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),a=qe(r,e._private.labelDimsKey);if(ht(n.rscratch,"prefixedLabelDimsKey",t)!==a){ft(n.rscratch,"prefixedLabelDimsKey",t,a);var i=this.calculateLabelDimensions(e,r),o=e.pstyle("line-height").pfValue,s=e.pstyle("font-size").pfValue,l=e.pstyle("text-wrap").strValue,u=ht(n.rscratch,"labelWrapCachedLines",t)||[],c="wrap"!==l?1:Math.max(u.length,1),d=s*o,h=i.width,f=i.height+(c-1)*(o-1)*s;ft(n.rstyle,"labelWidth",t,h),ft(n.rscratch,"labelWidth",t,h),ft(n.rstyle,"labelHeight",t,f),ft(n.rscratch,"labelHeight",t,f),ft(n.rscratch,"labelLineHeight",t,d),ft(n.rscratch,"labelActualDescent",t,i.labelActualDescent)}},Kc.getLabelText=function(e,t){var n=e._private,a=t?t+"-":"",i=e.pstyle(a+"label").strValue,o=e.pstyle("text-transform").value,s=function(e,r){return r?(ft(n.rscratch,e,t,r),r):ht(n.rscratch,e,t)};if(!i)return"";"none"==o||("uppercase"==o?i=i.toUpperCase():"lowercase"==o&&(i=i.toLowerCase()));var l=e.pstyle("text-wrap").value;if("wrap"===l){var u=s("labelKey");if(null!=u&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var c=i.split("\n"),d=e.pstyle("text-max-width").pfValue,h="anywhere"===e.pstyle("text-overflow-wrap").value,f=[],p=/[\s\u200b]+|$/g,g=0;gd){var b,x="",w=0,E=r(v.matchAll(p));try{for(E.s();!(b=E.n()).done;){var k=b.value,T=k[0],C=v.substring(w,k.index);w=k.index+T.length;var P=0===x.length?C:x+C+T;this.calculateLabelDimensions(e,P).width<=d?x+=C+T:(x&&f.push(x),x=C+T)}}catch(e){E.e(e)}finally{E.f()}x.match(/^[\s\u200b]+$/)||f.push(x)}else f.push(v)}s("labelWrapCachedLines",f),i=s("labelWrapCachedText",f.join("\n")),s("labelWrapKey",u)}else if("ellipsis"===l){var S=e.pstyle("text-max-width").pfValue,B="",D=!1;if(this.calculateLabelDimensions(e,i).widthS)break;B+=i[_],_===i.length-1&&(D=!0)}return D||(B+="…"),B}return i},Kc.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;return"auto"===t?e.isNode()?function(e){switch(e){case"left":case"right-inside":return"right";case"right":case"left-inside":return"left";default:return"center"}}(n):"center":t},Kc.calculateLabelDimensions=function(e,t){var n=this.cy.window().document,r=e.pstyle("font-style").strValue,a=e.pstyle("font-size").pfValue,i=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,s=e.pstyle("text-metrics").strValue||"font",l=this.labelCalcCanvas,u=this.labelCalcCanvasContext;if(!l){l=this.labelCalcCanvas=n.createElement("canvas"),u=this.labelCalcCanvasContext=l.getContext("2d");var c=l.style;c.position="absolute",c.left="-9999px",c.top="-9999px",c.zIndex="-1",c.visibility="hidden",c.pointerEvents="none"}u.font="".concat(r," ").concat(o," ").concat(a,"px ").concat(i);for(var d=0,h=0,f=t.split("\n"),p=f.length,g=0,v=0,y=0;y1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r=e.desktopTapThreshold2}var P=a(t);v&&(e.hoverData.tapholdCancelled=!0);n=!0,r(g,["mousemove","vmousemove","tapdrag"],t,{x:c[0],y:c[1]});var S=function(e){return{originalEvent:t,type:e,position:{x:c[0],y:c[1]}}},B=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit(S("boxstart")),p[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(v){var D=S("cxtdrag");b?b.emit(D):o.emit(D),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&g===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(S("cxtdragout")),e.hoverData.cxtOver=g,g&&g.emit(S("cxtdragover")))}}else if(e.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var _;if(e.hoverData.justStartedPan){var A=e.hoverData.mdownPos;_={x:(c[0]-A[0])*s,y:(c[1]-A[1])*s},e.hoverData.justStartedPan=!1}else _={x:x[0]*s,y:x[1]*s};o.panBy(_),o.emit(S("dragpan")),e.hoverData.dragged=!0}c=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=p[4]||null!=b&&!b.pannable()){if(b&&b.pannable()&&b.active()&&b.unactivate(),b&&b.grabbed()||g==y||(y&&r(y,["mouseout","tapdragout"],t,{x:c[0],y:c[1]}),g&&r(g,["mouseover","tapdragover"],t,{x:c[0],y:c[1]}),e.hoverData.last=g),b)if(v){if(o.boxSelectionEnabled()&&P)b&&b.grabbed()&&(d(w),b.emit(S("freeon")),w.emit(S("free")),e.dragData.didDrag&&(b.emit(S("dragfreeon")),w.emit(S("dragfree")))),B();else if(b&&b.grabbed()&&e.nodeIsDraggable(b)){var M=!e.dragData.didDrag;M&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||u(w,{inDragLayer:!0});var R={x:0,y:0};if(G(x[0])&&G(x[1])&&(R.x+=x[0],R.y+=x[1],M)){var I=e.hoverData.dragDelta;I&&G(I[0])&&G(I[1])&&(R.x+=I[0],R.y+=I[1])}e.hoverData.draggingEles=!0,w.silentShift(R).emit(S("position")).emit(S("drag")),e.redrawHint("drag",!0),e.redraw()}}else!function(){var t=e.hoverData.dragDelta=e.hoverData.dragDelta||[];0===t.length?(t.push(x[0]),t.push(x[1])):(t[0]+=x[0],t[1]+=x[1])}();n=!0}else if(v){if(e.hoverData.dragging||!o.boxSelectionEnabled()||!P&&o.panningEnabled()&&o.userPanningEnabled()){if(!e.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()){i(b,e.hoverData.downs)&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,p[4]=0,e.data.bgActivePosistion=Yt(h),e.redrawHint("select",!0),e.redraw())}}else B();b&&b.pannable()&&b.active()&&b.unactivate()}return p[2]=c[0],p[3]=c[1],n?(t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),!1):void 0}}),!1),e.registerBinding(t,"mouseup",(function(t){if((1!==e.hoverData.which||1===t.which||!e.hoverData.capture)&&e.hoverData.capture){e.hoverData.capture=!1;var i=e.cy,o=e.projectIntoViewport(t.clientX,t.clientY),s=e.selection,l=e.findNearestElement(o[0],o[1],!0,!1),u=e.dragData.possibleDragElements,c=e.hoverData.down,h=a(t);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,c&&c.unactivate();var f=function(e){return{originalEvent:t,type:e,position:{x:o[0],y:o[1]}}};if(3===e.hoverData.which){var p=f("cxttapend");if(c?c.emit(p):i.emit(p),!e.hoverData.cxtDragged){var g=f("cxttap");c?c.emit(g):i.emit(g)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(1===e.hoverData.which){if(r(l,["mouseup","tapend","vmouseup"],t,{x:o[0],y:o[1]}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||(r(c,["click","tap","vclick"],t,{x:o[0],y:o[1]}),x=!1,t.timeStamp-w<=i.multiClickDebounceTime()?(b&&clearTimeout(b),x=!0,w=null,r(c,["dblclick","dbltap","vdblclick"],t,{x:o[0],y:o[1]})):(b=setTimeout((function(){x||r(c,["oneclick","onetap","voneclick"],t,{x:o[0],y:o[1]})}),i.multiClickDebounceTime()),w=t.timeStamp)),null!=c||e.dragData.didDrag||e.hoverData.selecting||e.hoverData.dragged||a(t)||(i.$(n).unselect(["tapunselect"]),u.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=i.collection()),l!=c||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===i.selectionType()||h?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):h||(i.$(n).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var v=i.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),v.length>0&&e.redrawHint("eles",!0),i.emit(f("boxend"));var y=function(e){return e.selectable()&&!e.selected()};"additive"===i.selectionType()||h||i.$(n).unmerge(v).unselect(),v.emit(f("box")).stdFilter(y).select().emit(f("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var m=c&&c.grabbed();d(u),m&&(c.emit(f("freeon")),u.emit(f("free")),e.dragData.didDrag&&(c.emit(f("dragfreeon")),u.emit(f("dragfree"))))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}}),!1);var k,T,C,P,S,B,D,_,A,M,R,I,N,L,z=[],O=1e5,V=function(t){var n=!1,r=t.deltaY;if(null==r&&(null!=t.wheelDeltaY?r=t.wheelDeltaY/4:null!=t.wheelDelta&&(r=t.wheelDelta/4)),0!==r){if(null==k)if(z.length>=4){var a=z;if(k=function(e,t){for(var n=0;n5}if(k)for(var o=0;o5&&(r=5*Ut(r)),h=r/-250,k&&(h/=O,h*=3),h*=e.wheelSensitivity,1===t.deltaMode&&(h*=33);var f=s.zoom()*Math.pow(10,h);"gesturechange"===t.type&&(f=e.gestureStartZoom*t.scale),s.zoom({level:f,renderedPosition:{x:d[0],y:d[1]}}),s.emit({type:"gesturechange"===t.type?"pinchzoom":"scrollzoom",originalEvent:t,position:{x:c[0],y:c[1]}})}}}};e.registerBinding(e.container,"wheel",V,!0),e.registerBinding(t,"scroll",(function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout((function(){e.scrollingPage=!1}),250)}),!0),e.registerBinding(e.container,"gesturestart",(function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()}),!0),e.registerBinding(e.container,"gesturechange",(function(t){e.hasTouchStarted||V(t)}),!0),e.registerBinding(e.container,"mouseout",(function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})}),!1),e.registerBinding(e.container,"mouseover",(function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})}),!1);var F,X,j,Y,q,W,U,H=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},K=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",F=function(t){if(e.hasTouchStarted=!0,m(t)){f(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var n=e.cy,a=e.touchData.now,i=e.touchData.earlier;if(t.touches[0]){var o=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);a[0]=o[0],a[1]=o[1]}if(t.touches[1]){o=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);a[2]=o[0],a[3]=o[1]}if(t.touches[2]){o=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);a[4]=o[0],a[5]=o[1]}var l=function(e){return{originalEvent:t,type:e,position:{x:a[0],y:a[1]}}};if(t.touches[1]){e.touchData.singleTouchMoved=!0,d(e.dragData.touchDragEles);var h=e.findContainerClientCoords();M=h[0],R=h[1],I=h[2],N=h[3],T=t.touches[0].clientX-M,C=t.touches[0].clientY-R,P=t.touches[1].clientX-M,S=t.touches[1].clientY-R,L=0<=T&&T<=I&&0<=P&&P<=I&&0<=C&&C<=N&&0<=S&&S<=N;var p=n.pan(),g=n.zoom();B=H(T,C,P,S),D=K(T,C,P,S),A=[((_=[(T+P)/2,(C+S)/2])[0]-p.x)/g,(_[1]-p.y)/g];if(D<4e4&&!t.touches[2]){var v=e.findNearestElement(a[0],a[1],!0,!0),y=e.findNearestElement(a[2],a[3],!0,!0);return v&&v.isNode()?(v.activate().emit(l("cxttapstart")),e.touchData.start=v):y&&y.isNode()?(y.activate().emit(l("cxttapstart")),e.touchData.start=y):n.emit(l("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])n.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var b=e.findNearestElements(a[0],a[1],!0,!0),x=b[0];if(null!=x&&(x.activate(),e.touchData.start=x,e.touchData.starts=b,e.nodeIsGrabbable(x))){var w=e.dragData.touchDragEles=n.collection(),E=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),x.selected()?(E=n.$((function(t){return t.selected()&&e.nodeIsGrabbable(t)})),u(E,{addToList:w})):c(x,{addToList:w}),s(x),x.emit(l("grabon")),E?E.forEach((function(e){e.emit(l("grab"))})):x.emit(l("grab"))}r(x,["touchstart","tapstart","vmousedown"],t,{x:a[0],y:a[1]}),null==x&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout((function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||r(e.touchData.start,["taphold"],t,{x:a[0],y:a[1]})}),e.tapholdDuration)}if(t.touches.length>=1){for(var k=e.touchData.startPosition=[null,null,null,null,null,null],z=0;z=e.touchTapThreshold2}if(n&&e.touchData.cxt){t.preventDefault();var E=t.touches[0].clientX-M,k=t.touches[0].clientY-R,_=t.touches[1].clientX-M,I=t.touches[1].clientY-R,N=K(E,k,_,I);if(N/D>=2.25||N>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var z=p("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(z),e.touchData.start=null):o.emit(z)}}if(n&&e.touchData.cxt){z=p("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(z):o.emit(z),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var O=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&O===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit(p("cxtdragout")),e.touchData.cxtOver=O,O&&O.emit(p("cxtdragover")))}else if(n&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit(p("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,a[4]=1,a&&0!==a.length&&void 0!==a[0]?(a[2]=(s[0]+s[2]+s[4])/3,a[3]=(s[1]+s[3]+s[5])/3):(a[0]=(s[0]+s[2]+s[4])/3,a[1]=(s[1]+s[3]+s[5])/3,a[2]=(s[0]+s[2]+s[4])/3+1,a[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(n&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),te=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var V=0;V0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(t,"touchcancel",j=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(t,"touchend",Y=function(t){var a=e.touchData.start;if(e.touchData.capture){0===t.touches.length&&(e.touchData.capture=!1),t.preventDefault();var i=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o=e.cy,s=o.zoom(),l=e.touchData.now,u=e.touchData.earlier;if(t.touches[0]){var c=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);l[0]=c[0],l[1]=c[1]}if(t.touches[1]){c=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);l[2]=c[0],l[3]=c[1]}if(t.touches[2]){c=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);l[4]=c[0],l[5]=c[1]}var h,f=function(e){return{originalEvent:t,type:e,position:{x:l[0],y:l[1]}}};if(a&&a.unactivate(),e.touchData.cxt){if(h=f("cxttapend"),a?a.emit(h):o.emit(h),!e.touchData.cxtDragged){var p=f("cxttap");a?a.emit(p):o.emit(p)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!t.touches[2]&&o.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var g=o.collection(e.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,e.redrawHint("select",!0),o.emit(f("boxend"));g.emit(f("box")).stdFilter((function(e){return e.selectable()&&!e.selected()})).select().emit(f("boxselect")),g.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=a&&a.unactivate(),t.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(t.touches[1]);else if(t.touches[0]);else if(!t.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var v=e.dragData.touchDragEles;if(null!=a){var y=a._private.grabbed;d(v),e.redrawHint("drag",!0),e.redrawHint("eles",!0),y&&(a.emit(f("freeon")),v.emit(f("free")),e.dragData.didDrag&&(a.emit(f("dragfreeon")),v.emit(f("dragfree")))),r(a,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]}),a.unactivate(),e.touchData.start=null}else{var m=e.findNearestElement(l[0],l[1],!0,!0);r(m,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]})}var b=e.touchData.startPosition[0]-l[0],x=b*b,w=e.touchData.startPosition[1]-l[1],E=(x+w*w)*s*s;e.touchData.singleTouchMoved||(a||o.$(":selected").unselect(["tapunselect"]),r(a,["tap","vclick"],t,{x:l[0],y:l[1]}),q=!1,t.timeStamp-U<=o.multiClickDebounceTime()?(W&&clearTimeout(W),q=!0,U=null,r(a,["dbltap","vdblclick"],t,{x:l[0],y:l[1]})):(W=setTimeout((function(){q||r(a,["onetap","voneclick"],t,{x:l[0],y:l[1]})}),o.multiClickDebounceTime()),U=t.timeStamp)),null!=a&&!e.dragData.didDrag&&a._private.selectable&&E2){for(var f=[c[0],c[1]],p=Math.pow(f[0]-e,2)+Math.pow(f[1]-t,2),g=1;g0)return g[0]}return null},f=Object.keys(d),p=0;p0?u:dn(a,i,e,t,n,r,o,s)},checkPoint:function(e,t,n,r,a,i,o,s){var l=2*(s="auto"===s?_n(r,a):s);if(yn(e,t,this.points,i,o,r,a-l,[0,-1],n))return!0;if(yn(e,t,this.points,i,o,r-l,a,[0,-1],n))return!0;var u=r/2+2*n,c=a/2+2*n;return!!vn(e,t,[i-u,o-c,i-u,o,i+u,o,i+u,o-c])||(!!xn(e,t,l,l,i+r/2-s,o+a/2-s,n)||!!xn(e,t,l,l,i-r/2+s,o+a/2-s,n))}}},id.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",Sn(3,0)),this.generateRoundPolygon("round-triangle",Sn(3,0)),this.generatePolygon("rectangle",Sn(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",Sn(5,0)),this.generateRoundPolygon("round-pentagon",Sn(5,0)),this.generatePolygon("hexagon",Sn(6,0)),this.generateRoundPolygon("round-hexagon",Sn(6,0)),this.generatePolygon("heptagon",Sn(7,0)),this.generateRoundPolygon("round-heptagon",Sn(7,0)),this.generatePolygon("octagon",Sn(8,0)),this.generateRoundPolygon("round-octagon",Sn(8,0));var r=new Array(20),a=Dn(5,0),i=Dn(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*g)break}else if(a){if(f>=e.deqCost*l||f>=e.deqAvgCost*s)break}else if(p>=e.deqNoDrawCost*cd)break;var v=e.deq(t,d,c);if(!(v.length>0))break;for(var y=0;y0&&(e.onDeqd(t,u),!a&&e.shouldRedraw(t,u,d,c)&&r())}),a(t))}}},hd=function(){return n((function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Je;t(this,e),this.idsByKey=new pt,this.keyForId=new pt,this.cachesByLvl=new pt,this.lvls=[],this.getKey=n,this.doesEleInvalidateKey=r}),[{key:"getIdsFor",value:function(e){null==e&&nt("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new vt,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new pt,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach((function(n){return t.deleteCache(e,n)}))}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}])}(),fd=7.99,pd={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},gd=ut({getKey:null,doesEleInvalidateKey:Je,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Qe,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),vd=function(e,t){var n=this;n.renderer=e,n.onDequeues=[];var r=gd(t);ve(n,r),n.lookup=new hd(r.getKey,r.doesEleInvalidateKey),n.setupDequeueing()},yd=vd.prototype;yd.reasons=pd,yd.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},yd.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},yd.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new St((function(e,t){return t.reqs-e.reqs}))},yd.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},yd.getElement=function(e,t,n,r,a){var i=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!i.allowEdgeTxrCaching&&e.isEdge()||!i.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(Wt(s*n))),r<-4)r=-4;else if(s>=7.99||r>3)return null;var u=Math.pow(2,r),c=t.h*u,d=t.w*u,h=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,h))return null;var f,p=l.get(e,r);if(p&&p.invalidated&&(p.invalidated=!1,p.texture.invalidatedWidth-=p.width),p)return p;if(f=c<=25?25:c<=50?50:50*Math.ceil(c/50),c>1024||d>1024)return null;var g=i.getTextureQueue(f),v=g[g.length-2],y=function(){return i.recycleTexture(f,d)||i.addTexture(f,d)};v||(v=g[g.length-1]),v||(v=y()),v.width-v.usedWidthr;S--)C=i.getElement(e,t,n,S,pd.downscale);P()}else{var B;if(!x&&!w&&!E)for(var D=r-1;D>=-4;D--){var _=l.get(e,D);if(_){B=_;break}}if(b(B))return i.queueElement(e,r),B;v.context.translate(v.usedWidth,0),v.context.scale(u,u),this.drawElement(v.context,e,t,h,!1),v.context.scale(1/u,1/u),v.context.translate(-v.usedWidth,0)}return p={x:v.usedWidth,texture:v,level:r,scale:u,width:d,height:c,scaledLabelShown:h},v.usedWidth+=Math.ceil(d+8),v.eleCaches.push(p),l.set(e,r,p),i.checkTextureFullness(v),p},yd.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},yd.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?ct(t,e):e.fullnessChecks++},yd.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;ct(n,e),e.retired=!0;for(var a=e.eleCaches,i=0;i=t)return i.retired=!1,i.usedWidth=0,i.invalidatedWidth=0,i.fullnessChecks=0,dt(i.eleCaches),i.context.setTransform(1,0,0,1,0,0),i.context.clearRect(0,0,i.width,i.height),ct(r,i),n.push(i),i}},yd.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),a=this.getKey(e),i=r[a];if(i)i.level=Math.max(i.level,t),i.eles.merge(e),i.reqs++,n.updateItem(i);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(o),r[a]=o}},yd.dequeue=function(e){for(var t=this,n=t.getElementQueue(),r=t.getElementKeyToQueue(),a=[],i=t.lookup,o=0;o<1&&n.size()>0;o++){var s=n.pop(),l=s.key,u=s.eles[0],c=i.hasCache(u,s.level);if(r[l]=null,!c){a.push(s);var d=t.getBoundingBox(u);t.getElement(u,d,e,s.level,pd.dequeue)}}return a},yd.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),a=n[r];null!=a&&(1===a.eles.length?(a.reqs=$e,t.updateItem(a),t.pop(),n[r]=null):a.eles.unmerge(e))},yd.onDequeue=function(e){this.onDequeues.push(e)},yd.offDequeue=function(e){ct(this.onDequeues,e)},yd.setupDequeueing=dd({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},a=function(e){if(!s)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};a(1),a(-1);for(var i=c.length-1;i>=0;i--){var o=c[i];o.invalid&&ct(c,o)}}();var d=function(t){var a=(t=t||{}).after;!function(){if(!o){o=Jt();for(var t=0;t32767||s>32767)return null;if(i*s>16e6)return null;var l=r.makeLayer(o,n);if(null!=a){var d=c.indexOf(a)+1;c.splice(d,0,l)}else(void 0===t.insert||t.insert)&&c.unshift(l);return l};if(r.skipping&&!i)return null;for(var h=null,f=e.length/1,p=!i,g=0;g=f||!ln(h.bb,v.boundingBox()))&&!(h=d({insert:!0,after:h})))return null;s||p?r.queueLayer(h,v):r.drawEleInLayer(h,v,n,t),h.eles.push(v),m[n]=h}}return s||(p?null:c)},bd.getEleLevelForLayerLevel=function(e,t){return e},bd.drawEleInLayer=function(e,t,n,r){var a=this.renderer,i=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),a.setImgSmoothing(i,!1),a.drawCachedElement(i,t,null,null,n,true),a.setImgSmoothing(i,!0))},bd.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,a=0;a0)return!1;if(i.invalid)return!1;r+=i.eles.length}return r===t.length},bd.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},bd.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=Ne(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,(function(e,n,r){t.invalidateLayer(e)})))},bd.invalidateLayer=function(e){if(this.lastInvalidationTime=Ne(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];ct(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var a=0;a3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!i||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=i?t.pstyle("opacity").value:1,c=i?t.pstyle("line-opacity").value:1,d=t.pstyle("curve-style").value,h=t.pstyle("line-style").value,f=t.pstyle("width").pfValue,p=t.pstyle("line-cap").value,g=t.pstyle("line-outline-width").value,v=t.pstyle("line-outline-color").value,y=u*c,m=u*c,b=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;"straight-triangle"===d?(o.eleStrokeStyle(e,t,n),o.drawEdgeTrianglePath(t,e,s.allpts)):(e.lineWidth=f,e.lineCap=p,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")},x=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;o.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var w=t.pstyle("ghost-offset-x").pfValue,E=t.pstyle("ghost-offset-y").pfValue,k=t.pstyle("ghost-opacity").value,T=y*k;e.translate(w,E),b(T),x(T),e.translate(-w,-E)}else!function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;e.lineWidth=f+g,e.lineCap=p,g>0?(o.colorStrokeStyle(e,v[0],v[1],v[2],n),"straight-triangle"===d?o.drawEdgeTrianglePath(t,e,s.allpts):(o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")):e.lineCap="butt"}();a&&o.drawEdgeUnderlay(e,t),b(),x(),a&&o.drawEdgeOverlay(e,t),o.drawElementText(e,t,null,r),n&&e.translate(l.x1,l.y1)}}},zd=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n){if(n.visible()){var r=n.pstyle("".concat(e,"-opacity")).value;if(0!==r){var a=this,i=a.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(e,"-padding")).pfValue,l=n.pstyle("".concat(e,"-color")).value;t.lineWidth=s,"self"!==o.edgeType||i?t.lineCap="round":t.lineCap="butt",a.colorStrokeStyle(t,l[0],l[1],l[2],r),a.drawEdgePath(n,t,o.allpts,"solid")}}}};Ld.drawEdgeOverlay=zd("overlay"),Ld.drawEdgeUnderlay=zd("underlay"),Ld.drawEdgePath=function(e,t,n,a){var i,o=e._private.rscratch,s=t,l=!1,u=this.usePaths(),c=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var h=n.join("$");o.pathCacheKey&&o.pathCacheKey===h?(i=t=o.pathCache,l=!0):(i=t=new Path2D,o.pathCacheKey=h,o.pathCache=i)}if(s.setLineDash)switch(a){case"dotted":s.setLineDash([1,1]);break;case"dashed":s.setLineDash(c),s.lineDashOffset=d;break;case"solid":s.setLineDash([])}if(!l&&!o.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),o.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var f=2;f+35&&void 0!==arguments[5]?arguments[5]:5,o=Math.min(i,r/2,a/2);e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.quadraticCurveTo(t+r,n,t+r,n+o),e.lineTo(t+r,n+a-o),e.quadraticCurveTo(t+r,n+a,t+r-o,n+a),e.lineTo(t+o,n+a),e.quadraticCurveTo(t,n+a,t,n+a-o),e.lineTo(t,n+o),e.quadraticCurveTo(t,n,t+o,n),e.closePath()}Vd.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),a=Math.ceil(Wt(n*r));t=Math.pow(2,a)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(i&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t),u="glyph"===t.pstyle("text-metrics").strValue;e.textAlign=l,e.textBaseline=u?"alphabetic":"bottom"}else{var c=t.element()._private.rscratch.badLine,d=t.pstyle("label"),h=t.pstyle("source-label"),f=t.pstyle("target-label");if(c||(!d||!d.value)&&(!h||!h.value)&&(!f||!f.value))return;e.textAlign="center",e.textBaseline="bottom"}var p,g=!n;n&&(p=n,e.translate(-p.x1,-p.y1)),null==a?(o.drawText(e,t,null,g,i),t.isEdge()&&(o.drawText(e,t,"source",g,i),o.drawText(e,t,"target",g,i))):o.drawText(e,t,a,g,i),n&&e.translate(p.x1,p.y1)},Vd.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,a=t.pstyle("font-size").pfValue+"px",i=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+a+" "+i,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},Vd.getTextAngle=function(e,t){var n,r=e._private.rscratch,a=t?t+"-":"",i=e.pstyle(a+"text-rotation");if("autorotate"===i.strValue){var o=ht(r,"labelAngle",t);n=e.isEdge()?o:0}else n="none"===i.strValue?0:i.pfValue;return n},Vd.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=t._private.rscratch,o=a?t.effectiveOpacity():1;if(!a||0!==o&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var s,l,u=ht(i,"labelX",n),c=ht(i,"labelY",n),d=this.getLabelText(t,n);if(null!=d&&""!==d&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(e,t,a);var h,f=n?n+"-":"",p=ht(i,"labelWidth",n),g=ht(i,"labelHeight",n),v=ht(i,"labelActualDescent",n),y=t.pstyle(f+"text-margin-x").pfValue,m=t.pstyle(f+"text-margin-y").pfValue,b=t.isEdge(),x=t.pstyle("text-halign").value,w=t.pstyle("text-valign").value;b&&(x="center",w="center"),u+=y,c+=m,0!==(h=r?this.getTextAngle(t,n):0)&&(s=u,l=c,e.translate(s,l),e.rotate(h),u=0,c=0);var E=Ps(x),k=Ss(w);switch(k){case"top":break;case"center":c+=g/2;break;case"bottom":c+=g}var T=t.pstyle("text-background-opacity").value,C=t.pstyle("text-border-opacity").value,P=t.pstyle("text-border-width").pfValue,S=t.pstyle("text-background-padding").pfValue,B=t.pstyle("text-background-shape").strValue,D="round-rectangle"===B||"roundrectangle"===B,_="circle"===B;if(T>0||P>0&&C>0){var A=e.fillStyle,M=e.strokeStyle,R=e.lineWidth,I=t.pstyle("text-background-color").value,N=t.pstyle("text-border-color").value,L=t.pstyle("text-border-style").value,z=T>0,O=P>0&&C>0,V=u-S;switch(E){case"left":V-=p;break;case"center":V-=p/2}var F=c-g-S,X=p+2*S,j=g+2*S;if(z&&(e.fillStyle="rgba(".concat(I[0],",").concat(I[1],",").concat(I[2],",").concat(T*o,")")),O&&(e.strokeStyle="rgba(".concat(N[0],",").concat(N[1],",").concat(N[2],",").concat(C*o,")"),e.lineWidth=P,e.setLineDash))switch(L){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=P/4,e.setLineDash([]);break;default:e.setLineDash([])}if(D?(e.beginPath(),Fd(e,V,F,X,j,2)):_?(e.beginPath(),function(e,t,n,r,a){var i=Math.min(r,a)/2,o=t+r/2,s=n+a/2;e.beginPath(),e.arc(o,s,i,0,2*Math.PI),e.closePath()}(e,V,F,X,j)):(e.beginPath(),e.rect(V,F,X,j)),z&&e.fill(),O&&e.stroke(),O&&"double"===L){var Y=P/2;e.beginPath(),D?Fd(e,V+Y,F+Y,X-2*Y,j-2*Y,2):e.rect(V+Y,F+Y,X-2*Y,j-2*Y),e.stroke()}e.fillStyle=A,e.strokeStyle=M,e.lineWidth=R,e.setLineDash&&e.setLineDash([])}var q=2*t.pstyle("text-outline-width").pfValue;if(q>0&&(e.lineWidth=q),c-=v,"wrap"===t.pstyle("text-wrap").value){var W=ht(i,"labelWrapCachedLines",n),U=ht(i,"labelLineHeight",n),H=p/2,K=this.getLabelJustification(t);switch("auto"===K||("left"===E?"left"===K?u+=-p:"center"===K&&(u+=-H):"center"===E?"left"===K?u+=-H:"right"===K&&(u+=H):"right"===E&&("center"===K?u+=H:"right"===K&&(u+=p))),k){case"top":case"center":case"bottom":c-=(W.length-1)*U}for(var G=0;G0&&e.strokeText(W[G],u,c),e.fillText(W[G],u,c),c+=U}else q>0&&e.strokeText(d,u,c),e.fillText(d,u,c);0!==h&&(e.rotate(-h),e.translate(-s,-l))}}};var Xd={drawNode:function(e,t,n){var r,a,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,d=t.position();if(G(d.x)&&G(d.y)&&(!s||t.visible())){var h,f,p=s?t.effectiveOpacity():1,g=l.usePaths(),v=!1,y=t.padding();r=t.width()+2*y,a=t.height()+2*y,n&&(f=n,e.translate(-f.x1,-f.y1));for(var m=t.pstyle("background-image").value,b=new Array(m.length),x=new Array(m.length),w=0,E=0;E0&&void 0!==arguments[0]?arguments[0]:S;l.eleFillStyle(e,t,n)},Y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:N;l.colorStrokeStyle(e,B[0],B[1],B[2],t)},q=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V;l.colorStrokeStyle(e,z[0],z[1],z[2],t)},W=function(e,t,n,r){var a,i=l.nodePathCache=l.nodePathCache||[],o=We("polygon"===n?n+","+r.join(","):n,""+t,""+e,""+X),s=i[o],u=!1;return null!=s?(a=s,u=!0,c.pathCache=a):(a=new Path2D,i[o]=c.pathCache=a),{path:a,cacheHit:u}},U=t.pstyle("shape").strValue,H=t.pstyle("shape-polygon-points").pfValue;if(g){e.translate(d.x,d.y);var K=W(r,a,U,H);h=K.path,v=K.cacheHit}var Z=function(){if(!v){var n=d;g&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(h||e,n.x,n.y,r,a,X,c)}g?e.fill(h):e.fill()},$=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=u.backgrounding,i=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasPie(t)&&(l.drawPie(e,t,i),n&&(g||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},J=function(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasStripe(t)&&(e.save(),g?e.clip(c.pathCache):(l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c),e.clip()),l.drawStripe(e,t,i),e.restore(),n&&(g||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},ee=function(){var t=(C>0?C:-C)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:p),n=C>0?0:255;0!==C&&(l.colorFillStyle(e,n,n,n,t),g?e.fill(h):e.fill())},te=function(){if(P>0){if(e.lineWidth=P,e.lineCap=A,e.lineJoin=_,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash(R),e.lineDashOffset=I;break;case"solid":case"double":e.setLineDash([])}if("center"!==M){if(e.save(),e.lineWidth*=2,"inside"===M)g?e.clip(h):e.clip();else{var t=new Path2D;t.rect(-r/2-P,-a/2-P,r+2*P,a+2*P),t.addPath(h),e.clip(t,"evenodd")}g?e.stroke(h):e.stroke(),e.restore()}else g?e.stroke(h):e.stroke();if("double"===D){e.lineWidth=P/3;var n=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",g?e.stroke(h):e.stroke(),e.globalCompositeOperation=n}e.setLineDash&&e.setLineDash([])}},ne=function(){if(L>0){if(e.lineWidth=L,e.lineCap="butt",e.setLineDash)switch(O){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}var n=d;g&&(n={x:0,y:0});var i=l.getNodeShape(t),o=P;"inside"===M&&(o=0),"outside"===M&&(o*=2);var s,u=(r+o+(L+F))/r,c=(a+o+(L+F))/a,h=r*u,f=a*c,p=l.nodeShapes[i].points;if(g)s=W(h,f,i,p).path;if("ellipse"===i)l.drawEllipsePath(s||e,n.x,n.y,h,f);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(i)){var v=0,y=0,m=0;"round-diamond"===i?v=1.4*(o+F+L):"round-heptagon"===i?(v=1.075*(o+F+L),m=-(o/2+F+L)/35):"round-hexagon"===i?v=1.12*(o+F+L):"round-pentagon"===i?(v=1.13*(o+F+L),m=-(o/2+F+L)/15):"round-tag"===i?(v=1.12*(o+F+L),y=.07*(o/2+L+F)):"round-triangle"===i&&(v=(o+F+L)*(Math.PI/2),m=-(o+F/2+L)/Math.PI),0!==v&&(h=r*(u=(r+v)/r),["round-hexagon","round-tag"].includes(i)||(f=a*(c=(a+v)/a)));for(var b=h/2,x=f/2,w=(X="auto"===X?An(h,f):X)+(o+L+F)/2,E=new Array(p.length/2),k=new Array(p.length/2),T=0;T0){if(r=r||n.position(),null==a||null==i){var d=n.padding();a=n.width()+2*d,i=n.height()+2*d}this.colorFillStyle(t,l[0],l[1],l[2],s),this.nodeShapes[u].draw(t,r.x,r.y,a+2*o,i+2*o,c),t.fill()}}}};Xd.drawNodeOverlay=jd("overlay"),Xd.drawNodeUnderlay=jd("underlay"),Xd.hasPie=function(e){return(e=e[0])._private.hasPie},Xd.hasStripe=function(e){return(e=e[0])._private.hasStripe},Xd.drawPie=function(e,t,n,r){t=t[0],r=r||t.position();var a,i=t.cy().style(),o=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=r.x,c=r.y,d=t.width(),h=t.height(),f=Math.min(d,h)/2,p=0;if(this.usePaths()&&(u=0,c=0),"%"===o.units?f*=o.pfValue:void 0!==o.pfValue&&(f=o.pfValue/2),"%"===s.units?a=f*s.pfValue:void 0!==s.pfValue&&(a=s.pfValue/2),!(a>=f))for(var g=1;g<=i.pieBackgroundN;g++){var v=t.pstyle("pie-"+g+"-background-size").value,y=t.pstyle("pie-"+g+"-background-color").value,m=t.pstyle("pie-"+g+"-background-opacity").value*n,b=v/100;b+p>1&&(b=1-p);var x=1.5*Math.PI+2*Math.PI*p,w=(x+=l)+2*Math.PI*b;0===v||p>=1||p+b>1||(0===a?(e.beginPath(),e.moveTo(u,c),e.arc(u,c,f,x,w),e.closePath()):(e.beginPath(),e.arc(u,c,f,x,w),e.arc(u,c,a,w,x,!0),e.closePath()),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),p+=b)}},Xd.drawStripe=function(e,t,n,r){t=t[0],r=r||t.position();var a=t.cy().style(),i=r.x,o=r.y,s=t.width(),l=t.height(),u=0,c=this.usePaths();e.save();var d=t.pstyle("stripe-direction").value,h=t.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":e.rotate(-Math.PI/2)}var f=s,p=l;"%"===h.units?(f*=h.pfValue,p*=h.pfValue):void 0!==h.pfValue&&(f=h.pfValue,p=h.pfValue),c&&(i=0,o=0),o-=f/2,i-=p/2;for(var g=1;g<=a.stripeBackgroundN;g++){var v=t.pstyle("stripe-"+g+"-background-size").value,y=t.pstyle("stripe-"+g+"-background-color").value,m=t.pstyle("stripe-"+g+"-background-opacity").value*n,b=v/100;b+u>1&&(b=1-u),0===v||u>=1||u+b>1||(e.beginPath(),e.rect(i,o+p*u,f,p*b),e.closePath(),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),u+=b)}e.restore()};var Yd,qd={};function Wd(e,t,n){var r=e.createShader(t);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(r));return r}function Ud(e,t,n){void 0===n&&(n=t);var r=e.makeOffscreenCanvas(t,n),a=r.context=r.getContext("2d");return r.clear=function(){return a.clearRect(0,0,r.width,r.height)},r.clear(),r}function Hd(e){var t=e.pixelRatio,n=e.cy.zoom(),r=e.cy.pan();return{zoom:n*t,pan:{x:r.x*t,y:r.y*t}}}function Kd(e,t){return!!t.picking||"solid"===e.pstyle("background-fill").value&&("none"===e.pstyle("background-image").strValue&&(0===e.pstyle("border-width").value||(0===e.pstyle("border-opacity").value||"solid"===e.pstyle("border-style").value)))}function Gd(e,t){if(e.length!==t.length)return!1;for(var n=0;n>8&255)/255,n[2]=(e>>16&255)/255,n[3]=(e>>24&255)/255,n}function Qd(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function Jd(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function eh(e,t,n){switch(t){case e.FLOAT:return new Float32Array(n);case e.INT:return new Int32Array(n)}}function th(e,t,n,r,a,i){switch(t){case e.FLOAT:return new Float32Array(n.buffer,i*r,a);case e.INT:return new Int32Array(n.buffer,i*r,a)}}function nh(e,t,n,r){var a=i(Jd(e,n),3),o=a[0],s=a[1],l=a[2],u=eh(e,s,t*o),c=o*l,d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,t*c,e.DYNAMIC_DRAW),e.enableVertexAttribArray(r),s===e.FLOAT?e.vertexAttribPointer(r,o,s,!1,c,0):s===e.INT&&e.vertexAttribIPointer(r,o,s,c,0),e.vertexAttribDivisor(r,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var h=new Array(t),f=0;ft.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!d&&(c[t.NODE]=!0,c[t.SELECT_BOX]=!0);var m=n.style(),b=n.zoom(),x=void 0!==o?o:b,w=n.pan(),E={x:w.x,y:w.y},k={zoom:b,pan:{x:w.x,y:w.y}},T=t.prevViewport;void 0===T||k.zoom!==T.zoom||k.pan.x!==T.pan.x||k.pan.y!==T.pan.y||g&&!p||(t.motionBlurPxRatio=1),s&&(E=s),x*=l,E.x*=l,E.y*=l;var C=t.getCachedZSortedEles();function P(e,n,r,a,i){var o=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",t.colorFillStyle(e,255,255,255,t.motionBlurTransparency),e.fillRect(n,r,a,i),e.globalCompositeOperation=o}function S(e,n){var i,l,c,d;t.clearingMotionBlur||e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]?(i=E,l=x,c=t.canvasWidth,d=t.canvasHeight):(i={x:w.x*f,y:w.y*f},l=b*f,c=t.canvasWidth*f,d=t.canvasHeight*f),e.setTransform(1,0,0,1,0,0),"motionBlur"===n?P(e,0,0,c,d):r||void 0!==n&&!n||e.clearRect(0,0,c,d),a||(e.translate(i.x,i.y),e.scale(l,l)),s&&e.translate(s.x,s.y),o&&e.scale(o,o)}if(d||(t.textureDrawLastFrame=!1),d){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=n.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var B=t.data.bufferContexts[t.TEXTURE_BUFFER];B.setTransform(1,0,0,1,0,0),B.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:B,drawOnlyNodeLayer:!0,forcedPxRatio:l*t.textureMult}),(k=t.textureCache.viewport={zoom:n.zoom(),pan:n.pan(),width:t.canvasWidth,height:t.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}c[t.DRAG]=!1,c[t.NODE]=!1;var D=u.contexts[t.NODE],_=t.textureCache.texture;k=t.textureCache.viewport;D.setTransform(1,0,0,1,0,0),h?P(D,0,0,k.width,k.height):D.clearRect(0,0,k.width,k.height);var A=m.core("outside-texture-bg-color").value,M=m.core("outside-texture-bg-opacity").value;t.colorFillStyle(D,A[0],A[1],A[2],M),D.fillRect(0,0,k.width,k.height);b=n.zoom();S(D,!1),D.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l),D.drawImage(_,k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l)}else t.textureOnViewport&&!r&&(t.textureCache=null);var R=n.extent(),I=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),N=t.hideEdgesOnViewport&&I,L=[];if(L[t.NODE]=!c[t.NODE]&&h&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,L[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),L[t.DRAG]=!c[t.DRAG]&&h&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,L[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),c[t.NODE]||a||i||L[t.NODE]){var z=h&&!L[t.NODE]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:u.contexts[t.NODE]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.nondrag,l,R):t.drawLayeredElements(D,C.nondrag,l,R),t.debug&&t.drawDebugPoints(D,C.nondrag),a||h||(c[t.NODE]=!1)}if(!i&&(c[t.DRAG]||a||L[t.DRAG])){z=h&&!L[t.DRAG]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:u.contexts[t.DRAG]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.drag,l,R):t.drawCachedElements(D,C.drag,l,R),t.debug&&t.drawDebugPoints(D,C.drag),a||h||(c[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,S),h&&1!==f){var O=u.contexts[t.NODE],V=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],F=u.contexts[t.DRAG],X=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],j=function(e,n,r){e.setTransform(1,0,0,1,0,0),r||!y?e.clearRect(0,0,t.canvasWidth,t.canvasHeight):P(e,0,0,t.canvasWidth,t.canvasHeight);var a=f;e.drawImage(n,0,0,t.canvasWidth*a,t.canvasHeight*a,0,0,t.canvasWidth,t.canvasHeight)};(c[t.NODE]||L[t.NODE])&&(j(O,V,L[t.NODE]),c[t.NODE]=!1),(c[t.DRAG]||L[t.DRAG])&&(j(F,X,L[t.DRAG]),c[t.DRAG]=!1)}t.prevViewport=k,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),h&&(t.motionBlurTimeout=setTimeout((function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!d,t.mbFrames=0,c[t.NODE]=!0,c[t.DRAG]=!0,t.redraw()}),100)),r||n.emit("render")},qd.drawSelectionRectangle=function(e,t){var n=this,r=n.cy,a=n.data,i=r.style(),o=e.drawOnlyNodeLayer,s=e.drawAllLayers,l=a.canvasNeedsRedraw,u=e.forcedContext;if(n.showFps||!o&&l[n.SELECT_BOX]&&!s){var c=u||a.contexts[n.SELECT_BOX];if(t(c),1==n.selection[4]&&(n.hoverData.selecting||n.touchData.selecting)){var d=n.cy.zoom(),h=i.core("selection-box-border-width").value/d;c.lineWidth=h,c.fillStyle="rgba("+i.core("selection-box-color").value[0]+","+i.core("selection-box-color").value[1]+","+i.core("selection-box-color").value[2]+","+i.core("selection-box-opacity").value+")",c.fillRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]),h>0&&(c.strokeStyle="rgba("+i.core("selection-box-border-color").value[0]+","+i.core("selection-box-border-color").value[1]+","+i.core("selection-box-border-color").value[2]+","+i.core("selection-box-opacity").value+")",c.strokeRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]))}if(a.bgActivePosistion&&!n.hoverData.selecting){d=n.cy.zoom();var f=a.bgActivePosistion;c.fillStyle="rgba("+i.core("active-bg-color").value[0]+","+i.core("active-bg-color").value[1]+","+i.core("active-bg-color").value[2]+","+i.core("active-bg-opacity").value+")",c.beginPath(),c.arc(f.x,f.y,i.core("active-bg-size").pfValue/d,0,2*Math.PI),c.fill()}var p=n.lastRedrawTime;if(n.showFps&&p){p=Math.round(p);var g=Math.round(1e3/p),v="1 frame = "+p+" ms = "+g+" fps";if(c.setTransform(1,0,0,1,0,0),c.fillStyle="rgba(255, 0, 0, 0.75)",c.strokeStyle="rgba(255, 0, 0, 0.75)",c.font="30px Arial",!Yd){var y=c.measureText(v);Yd=y.actualBoundingBoxAscent}c.fillText(v,0,Yd);c.strokeRect(0,Yd+10,250,20),c.fillRect(0,Yd+10,250*Math.min(g/60,1),20)}s||(l[n.SELECT_BOX]=!1)}};var rh="undefined"!=typeof Float32Array?Float32Array:Array;function ah(){var e=new rh(9);return rh!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function ih(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function oh(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=n[0],f=n[1];return e[0]=r,e[1]=a,e[2]=i,e[3]=o,e[4]=s,e[5]=l,e[6]=h*r+f*o+u,e[7]=h*a+f*s+c,e[8]=h*i+f*l+d,e}function sh(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=Math.sin(n),f=Math.cos(n);return e[0]=f*r+h*o,e[1]=f*a+h*s,e[2]=f*i+h*l,e[3]=f*o-h*r,e[4]=f*s-h*a,e[5]=f*l-h*i,e[6]=u,e[7]=c,e[8]=d,e}function lh(e,t,n){var r=n[0],a=n[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=a*t[3],e[4]=a*t[4],e[5]=a*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var uh=function(){return n((function e(n,r,a,i){t(this,e),this.debugID=Math.floor(1e4*Math.random()),this.r=n,this.texSize=r,this.texRows=a,this.texHeight=Math.floor(r/a),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(n,r,r),this.scratch=i(n,r,this.texHeight,"scratch")}),[{key:"lock",value:function(){this.locked=!0}},{key:"getKeys",value:function(){return new Set(this.keyToLocation.keys())}},{key:"getScale",value:function(e){var t=e.w,n=e.h,r=this.texHeight,a=this.texSize,i=r/n,o=t*i,s=n*i;return o>a&&(o=t*(i=a/t),s=n*i),{scale:i,texW:o,texH:s}}},{key:"draw",value:function(e,t,n){var r=this;if(this.locked)throw new Error("can't draw, atlas is locked");var a=this.texSize,i=this.texRows,o=this.texHeight,s=this.getScale(t),l=s.scale,u=s.texW,c=s.texH,d=function(e,r){if(n&&r){var a=r.context,i=e.x,s=e.row,u=i,c=o*s;a.save(),a.translate(u,c),a.scale(l,l),n(a,t),a.restore()}},h=[null,null],f=function(){d(r.freePointer,r.canvas),h[0]={x:r.freePointer.x,y:r.freePointer.row*o,w:u,h:c},h[1]={x:r.freePointer.x+u,y:r.freePointer.row*o,w:0,h:c},r.freePointer.x+=u,r.freePointer.x==a&&(r.freePointer.x=0,r.freePointer.row++)},p=function(){r.freePointer.x=0,r.freePointer.row++};if(this.freePointer.x+u<=a)f();else{if(this.freePointer.row>=i-1)return!1;this.freePointer.x===a?(p(),f()):this.enableWrapping?function(){var e=r.scratch,t=r.canvas;e.clear(),d({x:0,row:0},e);var n=a-r.freePointer.x,i=u-n,s=o,l=r.freePointer.x,f=r.freePointer.row*o,p=n;t.context.drawImage(e,0,0,p,s,l,f,p,s),h[0]={x:l,y:f,w:p,h:c};var g=n,v=(r.freePointer.row+1)*o,y=i;t&&t.context.drawImage(e,g,0,y,s,0,v,y,s),h[1]={x:0,y:v,w:y,h:c},r.freePointer.x=i,r.freePointer.row++}():(p(),f())}return this.keyToLocation.set(e,h),this.needsBuffer=!0,h}},{key:"getOffsets",value:function(e){return this.keyToLocation.get(e)}},{key:"isEmpty",value:function(){return 0===this.freePointer.x&&0===this.freePointer.row}},{key:"canFit",value:function(e){if(this.locked)return!1;var t=this.texSize,n=this.texRows,r=this.getScale(e).texW;return!(this.freePointer.x+r>t)||this.freePointer.row1&&void 0!==arguments[1]?arguments[1]:{},i=a.forceRedraw,o=void 0!==i&&i,s=a.filterEle,l=void 0===s?function(){return!0}:s,u=a.filterType,c=void 0===u?function(){return!0}:u,d=!1,h=!1,f=r(e);try{for(f.s();!(t=f.n()).done;){var p=t.value;if(l(p)){var g,v=r(this.renderTypes.values());try{var y=function(){var e=g.value,t=e.type;if(c(t)){var r=n.collections.get(e.collection),a=e.getKey(p),i=Array.isArray(a)?a:[a];if(o)i.forEach((function(e){return r.markKeyForGC(e)})),h=!0;else{var s=e.getID?e.getID(p):p.id(),l=n._key(t,s),u=n.typeAndIdToKey.get(l);void 0===u||Gd(i,u)||(d=!0,n.typeAndIdToKey.delete(l),u.forEach((function(e){return r.markKeyForGC(e)})))}}};for(v.s();!(g=v.n()).done;)y()}catch(e){v.e(e)}finally{v.f()}}}}catch(e){f.e(e)}finally{f.f()}return h&&(this.gc(),d=!1),d}},{key:"gc",value:function(){var e,t=r(this.collections.values());try{for(t.s();!(e=t.n()).done;){e.value.gc()}}catch(e){t.e(e)}finally{t.f()}}},{key:"getOrCreateAtlas",value:function(e,t,n,r){var a=this.renderTypes.get(t),i=this.collections.get(a.collection),o=!1,s=i.draw(r,n,(function(t){a.drawClipped?(t.save(),t.beginPath(),t.rect(0,0,n.w,n.h),t.clip(),a.drawElement(t,e,n,!0,!0),t.restore()):a.drawElement(t,e,n,!0,!0),o=!0}));if(o){var l=a.getID?a.getID(e):e.id(),u=this._key(t,l);this.typeAndIdToKey.has(u)?this.typeAndIdToKey.get(u).push(r):this.typeAndIdToKey.set(u,[r])}return s}},{key:"getAtlasInfo",value:function(e,t){var n=this,r=this.renderTypes.get(t),a=r.getKey(e);return(Array.isArray(a)?a:[a]).map((function(a){var o=r.getBoundingBox(e,a),s=n.getOrCreateAtlas(e,t,o,a),l=i(s.getOffsets(a),2),u=l[0];return{atlas:s,tex:u,tex1:u,tex2:l[1],bb:o}}))}},{key:"getDebugInfo",value:function(){var e,t=[],n=r(this.collections);try{for(n.s();!(e=n.n()).done;){var a=i(e.value,2),o=a[0],s=a[1].getCounts(),l=s.keyCount,u=s.atlasCount;t.push({type:o,keyCount:l,atlasCount:u})}}catch(e){n.e(e)}finally{n.f()}return t}}])}(),hh=function(){return n((function e(n){t(this,e),this.globalOptions=n,this.atlasSize=n.webglTexSize,this.maxAtlasesPerBatch=n.webglTexPerBatch,this.batchAtlases=[]}),[{key:"getMaxAtlasesPerBatch",value:function(){return this.maxAtlasesPerBatch}},{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"getIndexArray",value:function(){return Array.from({length:this.maxAtlasesPerBatch},(function(e,t){return t}))}},{key:"startBatch",value:function(){this.batchAtlases=[]}},{key:"getAtlasCount",value:function(){return this.batchAtlases.length}},{key:"getAtlases",value:function(){return this.batchAtlases}},{key:"canAddToCurrentBatch",value:function(e){return this.batchAtlases.length!==this.maxAtlasesPerBatch||this.batchAtlases.includes(e)}},{key:"getAtlasIndexForBatch",value:function(e){var t=this.batchAtlases.indexOf(e);if(t<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(e),t=this.batchAtlases.length-1}return t}}])}(),fh={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},ph=1,gh=2,vh=function(){return n((function e(n,r,a){t(this,e),this.r=n,this.gl=r,this.maxInstances=a.webglBatchSize,this.atlasSize=a.webglTexSize,this.bgColor=a.bgColor,this.debug=a.webglDebug,this.batchDebugInfo=[],a.enableWrapping=!0,a.createTextureCanvas=Ud,this.atlasManager=new dh(n,a),this.batchManager=new hh(a),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(fh.SCREEN),this.pickingProgram=this._createShaderProgram(fh.PICKING),this.vao=this._createVAO()}),[{key:"addAtlasCollection",value:function(e,t){this.atlasManager.addAtlasCollection(e,t)}},{key:"addTextureAtlasRenderType",value:function(e,t){this.atlasManager.addRenderType(e,t)}},{key:"addSimpleShapeRenderType",value:function(e,t){this.simpleShapeOptions.set(e,t)}},{key:"invalidate",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).type,n=this.atlasManager;return t?n.invalidate(e,{filterType:function(e){return e===t},forceRedraw:!0}):n.invalidate(e)}},{key:"gc",value:function(){this.atlasManager.gc()}},{key:"_createShaderProgram",value:function(e){var t=this.gl,n="#version 300 es\n precision highp float;\n\n uniform mat3 uPanZoomMatrix;\n uniform int uAtlasSize;\n \n // instanced\n in vec2 aPosition; // a vertex from the unit square\n \n in mat3 aTransform; // used to transform verticies, eg into a bounding box\n in int aVertType; // the type of thing we are rendering\n\n // the z-index that is output when using picking mode\n in vec4 aIndex;\n \n // For textures\n in int aAtlasId; // which shader unit/atlas to use\n in vec4 aTex; // x/y/w/h of texture in atlas\n\n // for edges\n in vec4 aPointAPointB;\n in vec4 aPointCPointD;\n in vec2 aLineWidth; // also used for node border width\n\n // simple shapes\n in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]\n in vec4 aColor; // also used for edges\n in vec4 aBorderColor; // aLineWidth is used for border width\n\n // output values passed to the fragment shader\n out vec2 vTexCoord;\n out vec4 vColor;\n out vec2 vPosition;\n // flat values are not interpolated\n flat out int vAtlasId; \n flat out int vVertType;\n flat out vec2 vTopRight;\n flat out vec2 vBotLeft;\n flat out vec4 vCornerRadius;\n flat out vec4 vBorderColor;\n flat out vec2 vBorderWidth;\n flat out vec4 vIndex;\n \n void main(void) {\n int vid = gl_VertexID;\n vec2 position = aPosition; // TODO make this a vec3, simplifies some code below\n\n if(aVertType == ".concat(0,") {\n float texX = aTex.x; // texture coordinates\n float texY = aTex.y;\n float texW = aTex.z;\n float texH = aTex.w;\n\n if(vid == 1 || vid == 2 || vid == 4) {\n texX += texW;\n }\n if(vid == 2 || vid == 4 || vid == 5) {\n texY += texH;\n }\n\n float d = float(uAtlasSize);\n vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(4," || aVertType == ").concat(7," \n || aVertType == ").concat(5," || aVertType == ").concat(6,") { // simple shapes\n\n // the bounding box is needed by the fragment shader\n vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat\n vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat\n vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated\n\n // calculations are done in the fragment shader, just pass these along\n vColor = aColor;\n vCornerRadius = aCornerRadius;\n vBorderColor = aBorderColor;\n vBorderWidth = aLineWidth;\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(1,") {\n vec2 source = aPointAPointB.xy;\n vec2 target = aPointAPointB.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n // stretch the unit square into a long skinny rectangle\n vec2 xBasis = target - source;\n vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\n vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;\n\n gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\n vColor = aColor;\n } \n else if(aVertType == ").concat(2,") {\n vec2 pointA = aPointAPointB.xy;\n vec2 pointB = aPointAPointB.zw;\n vec2 pointC = aPointCPointD.xy;\n vec2 pointD = aPointCPointD.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 p0, p1, p2, pos;\n if(position.x == 0.0) { // The left side of the unit square\n p0 = pointA;\n p1 = pointB;\n p2 = pointC;\n pos = position;\n } else { // The right side of the unit square, use same approach but flip the geometry upside down\n p0 = pointD;\n p1 = pointC;\n p2 = pointB;\n pos = vec2(0.0, -position.y);\n }\n\n vec2 p01 = p1 - p0;\n vec2 p12 = p2 - p1;\n vec2 p21 = p1 - p2;\n\n // Find the normal vector.\n vec2 tangent = normalize(normalize(p12) + normalize(p01));\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n // Find the vector perpendicular to p0 -> p1.\n vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\n\n // Determine the bend direction.\n float sigma = sign(dot(p01 + p21, normal));\n float width = aLineWidth[0];\n\n if(sign(pos.y) == -sigma) {\n // This is an intersecting vertex. Adjust the position so that there's no overlap.\n vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n } else {\n // This is a non-intersecting vertex. Treat it like a mitre join.\n vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n }\n\n vColor = aColor;\n } \n else if(aVertType == ").concat(3," && vid < 3) {\n // massage the first triangle into an edge arrow\n if(vid == 0)\n position = vec2(-0.15, -0.3);\n if(vid == 1)\n position = vec2( 0.0, 0.0);\n if(vid == 2)\n position = vec2( 0.15, -0.3);\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n vColor = aColor;\n }\n else {\n gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\n }\n\n vAtlasId = aAtlasId;\n vVertType = aVertType;\n vIndex = aIndex;\n }\n "),r=this.batchManager.getIndexArray(),a="#version 300 es\n precision highp float;\n\n // declare texture unit for each texture atlas in the batch\n ".concat(r.map((function(e){return"uniform sampler2D uTexture".concat(e,";")})).join("\n\t"),"\n\n uniform vec4 uBGColor;\n uniform float uZoom;\n\n in vec2 vTexCoord;\n in vec4 vColor;\n in vec2 vPosition; // model coordinates\n\n flat in int vAtlasId;\n flat in vec4 vIndex;\n flat in int vVertType;\n flat in vec2 vTopRight;\n flat in vec2 vBotLeft;\n flat in vec4 vCornerRadius;\n flat in vec4 vBorderColor;\n flat in vec2 vBorderWidth;\n\n out vec4 outColor;\n\n ").concat("\n float circleSD(vec2 p, float r) {\n return distance(vec2(0), p) - r; // signed distance\n }\n","\n ").concat("\n float rectangleSD(vec2 p, vec2 b) {\n vec2 d = abs(p)-b;\n return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);\n }\n","\n ").concat("\n float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {\n cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;\n cr.x = (p.y > 0.0) ? cr.x : cr.y;\n vec2 q = abs(p) - b + cr.x;\n return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;\n }\n","\n ").concat("\n float ellipseSD(vec2 p, vec2 ab) {\n p = abs( p ); // symmetry\n\n // find root with Newton solver\n vec2 q = ab*(p-ab);\n float w = (q.x1.0) ? d : -d;\n }\n","\n\n vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha\n return vec4( \n top.rgb + (bot.rgb * (1.0 - top.a)),\n top.a + (bot.a * (1.0 - top.a)) \n );\n }\n\n vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance\n // scale to the zoom level so that borders don't look blurry when zoomed in\n // note 1.5 is an aribitrary value chosen because it looks good\n return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); \n }\n\n void main(void) {\n if(vVertType == ").concat(0,") {\n // look up the texel from the texture unit\n ").concat(r.map((function(e){return"if(vAtlasId == ".concat(e,") outColor = texture(uTexture").concat(e,", vTexCoord);")})).join("\n\telse "),"\n } \n else if(vVertType == ").concat(3,") {\n // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';\n outColor = blend(vColor, uBGColor);\n outColor.a = 1.0; // make opaque, masks out line under arrow\n }\n else if(vVertType == ").concat(4," && vBorderWidth == vec2(0.0)) { // simple rectangle with no border\n outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done\n }\n else if(vVertType == ").concat(4," || vVertType == ").concat(7," \n || vVertType == ").concat(5," || vVertType == ").concat(6,") { // use SDF\n\n float outerBorder = vBorderWidth[0];\n float innerBorder = vBorderWidth[1];\n float borderPadding = outerBorder * 2.0;\n float w = vTopRight.x - vBotLeft.x - borderPadding;\n float h = vTopRight.y - vBotLeft.y - borderPadding;\n vec2 b = vec2(w/2.0, h/2.0); // half width, half height\n vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center\n\n float d; // signed distance\n if(vVertType == ").concat(4,") {\n d = rectangleSD(p, b);\n } else if(vVertType == ").concat(7," && w == h) {\n d = circleSD(p, b.x); // faster than ellipse\n } else if(vVertType == ").concat(7,") {\n d = ellipseSD(p, b);\n } else {\n d = roundRectangleSD(p, b, vCornerRadius.wzyx);\n }\n\n // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling\n // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box\n if(d > 0.0) {\n if(d > outerBorder) {\n discard;\n } else {\n outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);\n }\n } else {\n if(d > innerBorder) {\n vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;\n vec4 innerBorderColor = blend(vBorderColor, vColor);\n outColor = distInterp(innerBorderColor, outerColor, d);\n } \n else {\n vec4 outerColor;\n if(innerBorder == 0.0 && outerBorder == 0.0) {\n outerColor = vec4(0);\n } else if(innerBorder == 0.0) {\n outerColor = vBorderColor;\n } else {\n outerColor = blend(vBorderColor, vColor);\n }\n outColor = distInterp(vColor, outerColor, d - innerBorder);\n }\n }\n }\n else {\n outColor = vColor;\n }\n\n ").concat(e.picking?"if(outColor.a == 0.0) discard;\n else outColor = vIndex;":"","\n }\n "),i=function(e,t,n){var r=Wd(e,e.VERTEX_SHADER,t),a=Wd(e,e.FRAGMENT_SHADER,n),i=e.createProgram();if(e.attachShader(i,r),e.attachShader(i,a),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))throw new Error("Could not initialize shaders");return i}(t,n,a);i.aPosition=t.getAttribLocation(i,"aPosition"),i.aIndex=t.getAttribLocation(i,"aIndex"),i.aVertType=t.getAttribLocation(i,"aVertType"),i.aTransform=t.getAttribLocation(i,"aTransform"),i.aAtlasId=t.getAttribLocation(i,"aAtlasId"),i.aTex=t.getAttribLocation(i,"aTex"),i.aPointAPointB=t.getAttribLocation(i,"aPointAPointB"),i.aPointCPointD=t.getAttribLocation(i,"aPointCPointD"),i.aLineWidth=t.getAttribLocation(i,"aLineWidth"),i.aColor=t.getAttribLocation(i,"aColor"),i.aCornerRadius=t.getAttribLocation(i,"aCornerRadius"),i.aBorderColor=t.getAttribLocation(i,"aBorderColor"),i.uPanZoomMatrix=t.getUniformLocation(i,"uPanZoomMatrix"),i.uAtlasSize=t.getUniformLocation(i,"uAtlasSize"),i.uBGColor=t.getUniformLocation(i,"uBGColor"),i.uZoom=t.getUniformLocation(i,"uZoom"),i.uTextures=[];for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:fh.SCREEN;this.panZoomMatrix=e,this.renderTarget=t,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:"startBatch",value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:"endFrame",value:function(){this.endBatch()}},{key:"_isVisible",value:function(e,t){return!!e.visible()&&(!t||!t.isVisible||t.isVisible(e))}},{key:"drawTexture",value:function(e,t,n){var a=this.atlasManager,o=this.batchManager,s=a.getRenderTypeOpts(n);if(this._isVisible(e,s)&&(!e.isEdge()||this._isValidEdge(e))){if(this.renderTarget.picking&&s.getTexPickingMode){var l=s.getTexPickingMode(e);if(l===ph)return;if(l==gh)return void this.drawPickingRectangle(e,t,n)}var u,c=r(a.getAtlasInfo(e,n));try{for(c.s();!(u=c.n()).done;){var d=u.value,h=d.atlas,f=d.tex1,p=d.tex2;o.canAddToCurrentBatch(h)||this.endBatch();for(var g=o.getAtlasIndexForBatch(h),v=0,y=[[f,!0],[p,!1]];v=this.maxInstances&&this.endBatch()}}}}catch(e){c.e(e)}finally{c.f()}}}},{key:"setTransformMatrix",value:function(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=0;if(n.shapeProps&&n.shapeProps.padding&&(i=e.pstyle(n.shapeProps.padding).pfValue),r){var o=r.bb,s=r.tex1,l=r.tex2,u=s.w/(s.w+l.w);a||(u=1-u);var c=this._getAdjustedBB(o,i,a,u);this._applyTransformMatrix(t,c,n,e)}else{var d=n.getBoundingBox(e),h=this._getAdjustedBB(d,i,!0,1);this._applyTransformMatrix(t,h,n,e)}}},{key:"_applyTransformMatrix",value:function(e,t,n,r){var a,i;ih(e);var o=n.getRotation?n.getRotation(r):0;if(0!==o){var s=n.getRotationPoint(r);oh(e,e,[s.x,s.y]),sh(e,e,o);var l=n.getRotationOffset(r);a=l.x+(t.xOffset||0),i=l.y+(t.yOffset||0)}else a=t.x1,i=t.y1;oh(e,e,[a,i]),lh(e,e,[t.w,t.h])}},{key:"_getAdjustedBB",value:function(e,t,n,r){var a=e.x1,i=e.y1,o=e.w,s=e.h;t&&(a-=t,i-=t,o+=2*t,s+=2*t);var l=0,u=o*r;return n&&r<1?o=u:!n&&r<1&&(a+=l=o-u,o=u),{x1:a,y1:i,w:o,h:s,xOffset:l,yOffset:e.yOffset}}},{key:"drawPickingRectangle",value:function(e,t,n){var r=this.atlasManager.getRenderTypeOpts(n),a=this.instanceCount;this.vertTypeBuffer.getView(a)[0]=4,$d(t,this.indexBuffer.getView(a)),Zd([0,0,0],1,this.colorBuffer.getView(a));var i=this.transformBuffer.getMatrixView(a);this.setTransformMatrix(e,i,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:"drawNode",value:function(e,t,n){var r=this.simpleShapeOptions.get(n);if(this._isVisible(e,r)){var a=r.shapeProps,i=this._getVertTypeForShape(e,a.shape);if(void 0===i||r.isSimple&&!r.isSimple(e,this.renderTarget))this.drawTexture(e,t,n);else{var o=this.instanceCount;if(this.vertTypeBuffer.getView(o)[0]=i,5===i||6===i){var s=r.getBoundingBox(e),l=this._getCornerRadius(e,a.radius,s),u=this.cornerRadiusBuffer.getView(o);u[0]=l,u[1]=l,u[2]=l,u[3]=l,6===i&&(u[0]=0,u[2]=0)}$d(t,this.indexBuffer.getView(o));var c=this.renderTarget.picking?1:"node-body"===n?e.effectiveOpacity():1,d=this.renderTarget.picking?1:e.pstyle(a.opacity).value*c;Zd(e.pstyle(a.color).value,d,this.colorBuffer.getView(o));var h=this.lineWidthBuffer.getView(o);if(h[0]=0,h[1]=0,a.border){var f=e.pstyle("border-width").value;if(f>0){Zd(e.pstyle("border-color").value,c*e.pstyle("border-opacity").value,this.borderColorBuffer.getView(o));var p=e.pstyle("border-position").value;if("inside"===p)h[0]=0,h[1]=-f;else if("outside"===p)h[0]=f,h[1]=0;else{var g=f/2;h[0]=g,h[1]=-g}}}var v=this.transformBuffer.getMatrixView(o);this.setTransformMatrix(e,v,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"_getVertTypeForShape",value:function(e,t){switch(e.pstyle(t).value){case"rectangle":return 4;case"ellipse":return 7;case"roundrectangle":case"round-rectangle":return 5;case"bottom-round-rectangle":return 6;default:return}}},{key:"_getCornerRadius",value:function(e,t,n){var r=n.w,a=n.h;if("auto"===e.pstyle(t).value)return _n(r,a);var i=e.pstyle(t).pfValue,o=r/2,s=a/2;return Math.min(i,s,o)}},{key:"drawEdgeArrow",value:function(e,t,n){if(e.visible()){var r,a,i,o=e._private.rscratch;if("source"===n?(r=o.arrowStartX,a=o.arrowStartY,i=o.srcArrowAngle):(r=o.arrowEndX,a=o.arrowEndY,i=o.tgtArrowAngle),!(isNaN(r)||null==r||isNaN(a)||null==a||isNaN(i)||null==i))if("none"!==e.pstyle(n+"-arrow-shape").value){var s=e.pstyle(n+"-arrow-color").value,l=e.pstyle("opacity").value*e.pstyle("line-opacity").value,u=e.pstyle("width").pfValue,c=e.pstyle("arrow-scale").value,d=this.r.getArrowWidth(u,c),h=this.instanceCount,f=this.transformBuffer.getMatrixView(h);ih(f),oh(f,f,[r,a]),lh(f,f,[d,d]),sh(f,f,i),this.vertTypeBuffer.getView(h)[0]=3,$d(t,this.indexBuffer.getView(h)),Zd(s,l,this.colorBuffer.getView(h)),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"drawEdgeLine",value:function(e,t){if(e.visible()){var n=this._getEdgePoints(e);if(n){var r=e.pstyle("opacity").value,a=e.pstyle("line-opacity").value,i=e.pstyle("width").pfValue,o=e.pstyle("line-color").value,s=r*a;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),4==n.length){var l=this.instanceCount;this.vertTypeBuffer.getView(l)[0]=1,$d(t,this.indexBuffer.getView(l)),Zd(o,s,this.colorBuffer.getView(l)),this.lineWidthBuffer.getView(l)[0]=i;var u=this.pointAPointBBuffer.getView(l);u[0]=n[0],u[1]=n[1],u[2]=n[2],u[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var c=0;c=this.maxInstances&&this.endBatch()}}}}},{key:"_isValidEdge",value:function(e){var t=e._private.rscratch;return!t.badLine&&null!=t.allpts&&!isNaN(t.allpts[0])}},{key:"_getEdgePoints",value:function(e){var t=e._private.rscratch;if(this._isValidEdge(e)){var n=t.allpts;if(4==n.length)return n;var r=this._getNumSegments(e);return this._getCurveSegmentPoints(n,r)}}},{key:"_getNumSegments",value:function(e){return Math.min(Math.max(15,5),this.maxInstances)}},{key:"_getCurveSegmentPoints",value:function(e,t){if(4==e.length)return e;for(var n=Array(2*(t+1)),r=0;r<=t;r++)if(0==r)n[0]=e[0],n[1]=e[1];else if(r==t)n[2*r]=e[e.length-2],n[2*r+1]=e[e.length-1];else{var a=r/t;this._setCurvePoint(e,a,n,2*r)}return n}},{key:"_setCurvePoint",value:function(e,t,n,r){if(!(e.length<=2)){for(var a=Array(e.length-2),i=0;i0}},u=function(e){return"yes"===e.pstyle("text-events").strValue?gh:ph},c=function(e){var t=e.position(),n=t.x,r=t.y,a=e.outerWidth(),i=e.outerHeight();return{w:a,h:i,x1:n-a/2,y1:r-i/2}};n.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),n.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),n.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),n.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:c,isSimple:Kd,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),n.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:c,isVisible:l("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),n.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:c,isVisible:l("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),n.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:u,getKey:bh(t.getLabelKey,null),getBoundingBox:xh(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:o(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:s("label")}),n.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:u,getKey:bh(t.getSourceLabelKey,"source"),getBoundingBox:xh(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:o("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:s("source-label")}),n.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:u,getKey:bh(t.getTargetLabelKey,"target"),getBoundingBox:xh(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:o("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:s("target-label")});var d=_e((function(){console.log("garbage collect flag set"),n.data.gc=!0}),1e4);n.onUpdateEleCalcs((function(e,t){var r=!1;t&&t.length>0&&(r|=n.drawing.invalidate(t)),r&&d()})),function(e){var t=e.render;e.render=function(n){n=n||{};var r=e.cy;e.webgl&&(r.zoom()>fd?(!function(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}(e),t.call(e,n)):(!function(e){var t=function(t){t.save(),t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.canvasWidth,e.canvasHeight),t.restore()};t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}(e),kh(e,n,fh.SCREEN)))};var n=e.matchCanvasSize;e.matchCanvasSize=function(t){n.call(e,t),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0},e.findNearestElements=function(t,n,a,o){return function(e,t,n){var a,o,s,l=function(e,t,n){var r,a,o,s,l=Hd(e),u=l.pan,c=l.zoom,d=function(e,t,n,r,a){var i=r*n+t.x,o=a*n+t.y;return[i,o=Math.round(e.canvasHeight-o)]}(e,u,c,t,n),h=i(d,2),f=h[0],p=h[1],g=6;if(r=f-g/2,a=p-g/2,s=g,0===(o=g)||0===s)return[];var v=e.data.contexts[e.WEBGL];v.bindFramebuffer(v.FRAMEBUFFER,e.pickingFrameBuffer),e.pickingFrameBuffer.needsDraw&&(v.viewport(0,0,v.canvas.width,v.canvas.height),kh(e,null,fh.PICKING),e.pickingFrameBuffer.needsDraw=!1);var y=o*s,m=new Uint8Array(4*y);v.readPixels(r,a,o,s,v.RGBA,v.UNSIGNED_BYTE,m),v.bindFramebuffer(v.FRAMEBUFFER,null);for(var b=new Set,x=0;x=0&&b.add(w)}return b}(e,t,n),u=e.getCachedZSortedEles(),c=r(l);try{for(c.s();!(s=c.n()).done;){var d=u[s.value];if(!a&&d.isNode()&&(a=d),!o&&d.isEdge()&&(o=d),a&&o)break}}catch(e){c.e(e)}finally{c.f()}return[a,o].filter(Boolean)}(e,t,n)};var a=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){a.call(e),e.pickingFrameBuffer.needsDraw=!0};var o=e.notify;e.notify=function(t,n){o.call(e,t,n),"viewport"===t||"bounds"===t?e.pickingFrameBuffer.needsDraw=!0:"background"===t&&e.drawing.invalidate(n,{type:"node-body"})}}(n)};var bh=function(e,t){return function(n){var r=e(n),a=mh(n,t);return a.length>1?a.map((function(e,t){return"".concat(r,"_").concat(t)})):r}},xh=function(e,t){return function(n,r){var a=e(n);if("string"==typeof r){var i=r.indexOf("_");if(i>0){var o=Number(r.substring(i+1)),s=mh(n,t),l=a.h/s.length,u=l*o,c=a.y1+u;return{x1:a.x1,w:a.w,y1:c,h:l,yOffset:u}}}return a}};function wh(e,t){var n=e.canvasWidth,r=e.canvasHeight,a=Hd(e),i=a.pan,o=a.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,n,r),t.translate(i.x,i.y),t.scale(o,o)}function Eh(e,t,n){var r=e.drawing;t+=1,n.isNode()?(r.drawNode(n,t,"node-underlay"),r.drawNode(n,t,"node-body"),r.drawTexture(n,t,"label"),r.drawNode(n,t,"node-overlay")):(r.drawEdgeLine(n,t),r.drawEdgeArrow(n,t,"source"),r.drawEdgeArrow(n,t,"target"),r.drawTexture(n,t,"label"),r.drawTexture(n,t,"edge-source-label"),r.drawTexture(n,t,"edge-target-label"))}function kh(e,t,n){var a;e.webglDebug&&(a=performance.now());var i=e.drawing,o=0;if(n.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&function(e,t){e.drawSelectionRectangle(t,(function(t){return wh(e,t)}))}(e,t),e.data.canvasNeedsRedraw[e.NODE]||n.picking){var s=e.data.contexts[e.WEBGL];n.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=function(e){var t=e.canvasWidth,n=e.canvasHeight,r=Hd(e),a=r.pan,i=r.zoom,o=ah();oh(o,o,[a.x,a.y]),lh(o,o,[i,i]);var s=ah();!function(e,t,n){e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/n,e[5]=0,e[6]=-1,e[7]=1,e[8]=1}(s,t,n);var l,u,c,d,h,f,p,g,v,y,m,b,x,w,E,k,T,C,P,S,B,D=ah();return l=D,c=o,d=(u=s)[0],h=u[1],f=u[2],p=u[3],g=u[4],v=u[5],y=u[6],m=u[7],b=u[8],x=c[0],w=c[1],E=c[2],k=c[3],T=c[4],C=c[5],P=c[6],S=c[7],B=c[8],l[0]=x*d+w*p+E*y,l[1]=x*h+w*g+E*m,l[2]=x*f+w*v+E*b,l[3]=k*d+T*p+C*y,l[4]=k*h+T*g+C*m,l[5]=k*f+T*v+C*b,l[6]=P*d+S*p+B*y,l[7]=P*h+S*g+B*m,l[8]=P*f+S*v+B*b,D}(e),u=e.getCachedZSortedEles();if(o=u.length,i.startFrame(l,n),n.screen){for(var c=0;c0&&i>0){h.clearRect(0,0,a,i),h.globalCompositeOperation="source-over";var f=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var p=t.pan(),g={x:p.x*l,y:p.y*l};l*=t.zoom(),h.translate(g.x,g.y),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(-g.x,-g.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,a,i),h.fill())}return d},Ah.png=function(e){return Rh(e,this.bufferCanvasImage(e),"image/png")},Ah.jpg=function(e){return Rh(e,this.bufferCanvasImage(e),"image/jpeg")};var Ih={nodeShapeImpl:function(e,t,n,r,a,i,o,s){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,a,i);case"polygon":return this.drawPolygonPath(t,n,r,a,i,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,a,i,o,s);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,a,i,s);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,a,i,o,s);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,a,i,s);case"barrel":return this.drawBarrelPath(t,n,r,a,i)}}},Nh=zh,Lh=zh.prototype;function zh(e){var t=this,n=t.cy.window().document;e.webgl&&(Lh.CANVAS_LAYERS=t.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),t.data={canvases:new Array(Lh.CANVAS_LAYERS),contexts:new Array(Lh.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Lh.CANVAS_LAYERS),bufferCanvases:new Array(Lh.BUFFER_COUNT),bufferContexts:new Array(Lh.CANVAS_LAYERS)};var r="-webkit-tap-highlight-color",a="rgba(0,0,0,0)";t.data.canvasContainer=n.createElement("div");var i=t.data.canvasContainer.style;t.data.canvasContainer.style[r]=a,i.position="relative",i.zIndex="0",i.overflow="hidden";var o=e.cy.container();o.appendChild(t.data.canvasContainer),o.style[r]=a;var s={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};d&&d.userAgent.match(/msie|trident|edge/i)&&(s["-ms-touch-action"]="none",s["touch-action"]="none");for(var l=0;l { + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + + // index.ts + var index_exports = {}; + __export(index_exports, { + Graph: () => p, + debug: () => debugOrdering, + default: () => index_default, + graphlib: () => graphlib_esm_exports, + layout: () => layout, + util: () => util, + version: () => version + }); + + // node_modules/@dagrejs/graphlib/dist/graphlib.esm.js + var graphlib_esm_exports = {}; + __export(graphlib_esm_exports, { + Graph: () => p, + alg: () => v, + json: () => G, + version: () => H + }); + var V = Object.defineProperty; + var F = (s, e) => { + for (var t in e) V(s, t, { get: e[t], enumerable: true }); + }; + var p = class { + constructor(e) { + this._isDirected = true; + this._isMultigraph = false; + this._isCompound = false; + this._nodes = {}; + this._in = {}; + this._preds = {}; + this._out = {}; + this._sucs = {}; + this._edgeObjs = {}; + this._edgeLabels = {}; + this._nodeCount = 0; + this._edgeCount = 0; + this._defaultNodeLabelFn = () => { + }; + this._defaultEdgeLabelFn = () => { + }; + e && (this._isDirected = "directed" in e ? e.directed : true, this._isMultigraph = "multigraph" in e ? e.multigraph : false, this._isCompound = "compound" in e ? e.compound : false), this._isCompound && (this._parent = {}, this._children = {}, this._children["\0"] = {}); + } + isDirected() { + return this._isDirected; + } + isMultigraph() { + return this._isMultigraph; + } + isCompound() { + return this._isCompound; + } + setGraph(e) { + return this._label = e, this; + } + graph() { + return this._label; + } + setDefaultNodeLabel(e) { + return typeof e != "function" ? this._defaultNodeLabelFn = () => e : this._defaultNodeLabelFn = e, this; + } + nodeCount() { + return this._nodeCount; + } + nodes() { + return Object.keys(this._nodes); + } + sources() { + return this.nodes().filter((e) => Object.keys(this._in[e]).length === 0); + } + sinks() { + return this.nodes().filter((e) => Object.keys(this._out[e]).length === 0); + } + setNodes(e, t) { + return e.forEach((n) => { + t !== void 0 ? this.setNode(n, t) : this.setNode(n); + }), this; + } + setNode(e, t) { + return e in this._nodes ? (arguments.length > 1 && (this._nodes[e] = t), this) : (this._nodes[e] = arguments.length > 1 ? t : this._defaultNodeLabelFn(e), this._isCompound && (this._parent[e] = "\0", this._children[e] = {}, this._children["\0"][e] = true), this._in[e] = {}, this._preds[e] = {}, this._out[e] = {}, this._sucs[e] = {}, ++this._nodeCount, this); + } + node(e) { + return this._nodes[e]; + } + hasNode(e) { + return e in this._nodes; + } + removeNode(e) { + if (e in this._nodes) { + let t = (n) => this.removeEdge(this._edgeObjs[n]); + delete this._nodes[e], this._isCompound && (this._removeFromParentsChildList(e), delete this._parent[e], this.children(e).forEach((n) => { + this.setParent(n); + }), delete this._children[e]), Object.keys(this._in[e]).forEach(t), delete this._in[e], delete this._preds[e], Object.keys(this._out[e]).forEach(t), delete this._out[e], delete this._sucs[e], --this._nodeCount; + } + return this; + } + setParent(e, t) { + if (!this._isCompound) throw new Error("Cannot set parent in a non-compound graph"); + if (t === void 0) t = "\0"; + else { + t += ""; + for (let n = t; n !== void 0; n = this.parent(n)) if (n === e) throw new Error("Setting " + t + " as parent of " + e + " would create a cycle"); + this.setNode(t); + } + return this.setNode(e), this._removeFromParentsChildList(e), this._parent[e] = t, this._children[t][e] = true, this; + } + parent(e) { + if (this._isCompound) { + let t = this._parent[e]; + if (t !== "\0") return t; + } + } + children(e = "\0") { + if (this._isCompound) { + let t = this._children[e]; + if (t) return Object.keys(t); + } else { + if (e === "\0") return this.nodes(); + if (this.hasNode(e)) return []; + } + return []; + } + predecessors(e) { + let t = this._preds[e]; + if (t) return Object.keys(t); + } + successors(e) { + let t = this._sucs[e]; + if (t) return Object.keys(t); + } + neighbors(e) { + let t = this.predecessors(e); + if (t) { + let n = new Set(t); + for (let i of this.successors(e)) n.add(i); + return Array.from(n.values()); + } + } + isLeaf(e) { + let t; + return this.isDirected() ? t = this.successors(e) : t = this.neighbors(e), t.length === 0; + } + filterNodes(e) { + let t = new this.constructor({ directed: this._isDirected, multigraph: this._isMultigraph, compound: this._isCompound }); + t.setGraph(this.graph()), Object.entries(this._nodes).forEach(([r, o]) => { + e(r) && t.setNode(r, o); + }), Object.values(this._edgeObjs).forEach((r) => { + t.hasNode(r.v) && t.hasNode(r.w) && t.setEdge(r, this.edge(r)); + }); + let n = {}, i = (r) => { + let o = this.parent(r); + return !o || t.hasNode(o) ? (n[r] = o != null ? o : void 0, o != null ? o : void 0) : o in n ? n[o] : i(o); + }; + return this._isCompound && t.nodes().forEach((r) => t.setParent(r, i(r))), t; + } + setDefaultEdgeLabel(e) { + return typeof e != "function" ? this._defaultEdgeLabelFn = () => e : this._defaultEdgeLabelFn = e, this; + } + edgeCount() { + return this._edgeCount; + } + edges() { + return Object.values(this._edgeObjs); + } + setPath(e, t) { + return e.reduce((n, i) => (t !== void 0 ? this.setEdge(n, i, t) : this.setEdge(n, i), i)), this; + } + setEdge(e, t, n, i) { + let r, o, d, a, c = false; + typeof e == "object" && e !== null && "v" in e ? (r = e.v, o = e.w, d = e.name, arguments.length === 2 && (a = t, c = true)) : (r = e, o = t, d = i, arguments.length > 2 && (a = n, c = true)), r = "" + r, o = "" + o, d !== void 0 && (d = "" + d); + let h = b(this._isDirected, r, o, d); + if (h in this._edgeLabels) return c && (this._edgeLabels[h] = a), this; + if (d !== void 0 && !this._isMultigraph) throw new Error("Cannot set a named edge when isMultigraph = false"); + this.setNode(r), this.setNode(o), this._edgeLabels[h] = c ? a : this._defaultEdgeLabelFn(r, o, d); + let u = J(this._isDirected, r, o, d); + return r = u.v, o = u.w, Object.freeze(u), this._edgeObjs[h] = u, k(this._preds[o], r), k(this._sucs[r], o), this._in[o][h] = u, this._out[r][h] = u, this._edgeCount++, this; + } + edge(e, t, n) { + let i = arguments.length === 1 ? N(this._isDirected, e) : b(this._isDirected, e, t, n); + return this._edgeLabels[i]; + } + edgeAsObj(e, t, n) { + let i = arguments.length === 1 ? this.edge(e) : this.edge(e, t, n); + return typeof i != "object" ? { label: i } : i; + } + hasEdge(e, t, n) { + return (arguments.length === 1 ? N(this._isDirected, e) : b(this._isDirected, e, t, n)) in this._edgeLabels; + } + removeEdge(e, t, n) { + let i = arguments.length === 1 ? N(this._isDirected, e) : b(this._isDirected, e, t, n), r = this._edgeObjs[i]; + if (r) { + let o = r.v, d = r.w; + delete this._edgeLabels[i], delete this._edgeObjs[i], x(this._preds[d], o), x(this._sucs[o], d), delete this._in[d][i], delete this._out[o][i], this._edgeCount--; + } + return this; + } + inEdges(e, t) { + return this.isDirected() ? this.filterEdges(this._in[e], e, t) : this.nodeEdges(e, t); + } + outEdges(e, t) { + return this.isDirected() ? this.filterEdges(this._out[e], e, t) : this.nodeEdges(e, t); + } + nodeEdges(e, t) { + if (e in this._nodes) return this.filterEdges({ ...this._in[e], ...this._out[e] }, e, t); + } + _removeFromParentsChildList(e) { + delete this._children[this._parent[e]][e]; + } + filterEdges(e, t, n) { + if (!e) return; + let i = Object.values(e); + return n ? i.filter((r) => r.v === t && r.w === n || r.v === n && r.w === t) : i; + } + }; + function k(s, e) { + s[e] ? s[e]++ : s[e] = 1; + } + function x(s, e) { + s[e] !== void 0 && !--s[e] && delete s[e]; + } + function b(s, e, t, n) { + let i = "" + e, r = "" + t; + if (!s && i > r) { + let o = i; + i = r, r = o; + } + return i + "" + r + "" + (n === void 0 ? "\0" : n); + } + function J(s, e, t, n) { + let i = "" + e, r = "" + t; + if (!s && i > r) { + let d = i; + i = r, r = d; + } + let o = { v: i, w: r }; + return n && (o.name = n), o; + } + function N(s, e) { + return b(s, e.v, e.w, e.name); + } + var H = "4.0.1"; + var G = {}; + F(G, { read: () => z, write: () => U }); + function U(s) { + let e = { options: { directed: s.isDirected(), multigraph: s.isMultigraph(), compound: s.isCompound() }, nodes: Y(s), edges: K(s) }, t = s.graph(); + return t !== void 0 && (e.value = structuredClone(t)), e; + } + function Y(s) { + return s.nodes().map((e) => { + let t = s.node(e), n = s.parent(e), i = { v: e }; + return t !== void 0 && (i.value = t), n !== void 0 && (i.parent = n), i; + }); + } + function K(s) { + return s.edges().map((e) => { + let t = s.edge(e), n = { v: e.v, w: e.w }; + return e.name !== void 0 && (n.name = e.name), t !== void 0 && (n.value = t), n; + }); + } + function z(s) { + let e = new p(s.options); + return s.value !== void 0 && e.setGraph(s.value), s.nodes.forEach((t) => { + e.setNode(t.v, t.value), t.parent && e.setParent(t.v, t.parent); + }), s.edges.forEach((t) => { + e.setEdge({ v: t.v, w: t.w, name: t.name }, t.value); + }), e; + } + var v = {}; + F(v, { CycleException: () => l, bellmanFord: () => m, components: () => R, dijkstra: () => E, dijkstraAll: () => P, findCycles: () => I, floydWarshall: () => D, isAcyclic: () => O, postorder: () => T, preorder: () => A, prim: () => W, shortestPaths: () => S, tarjan: () => y, topsort: () => L }); + var Q = () => 1; + function m(s, e, t, n) { + return $(s, String(e), t || Q, n || function(i) { + return s.outEdges(i); + }); + } + function $(s, e, t, n) { + let i = {}, r, o = 0, d = s.nodes(), a = function(u) { + let g = t(u); + i[u.v].distance + g < i[u.w].distance && (i[u.w] = { distance: i[u.v].distance + g, predecessor: u.v }, r = true); + }, c = function() { + d.forEach(function(u) { + n(u).forEach(function(g) { + let f = g.v === u ? g.v : g.w, M = f === g.v ? g.w : g.v; + a({ v: f, w: M }); + }); + }); + }; + d.forEach(function(u) { + let g = u === e ? 0 : Number.POSITIVE_INFINITY; + i[u] = { distance: g, predecessor: "" }; + }); + let h = d.length; + for (let u = 1; u < h && (r = false, o++, c(), !!r); u++) ; + if (o === h - 1 && (r = false, c(), r)) throw new Error("The graph contains a negative weight cycle"); + return i; + } + function R(s) { + let e = {}, t = [], n; + function i(r) { + r in e || (e[r] = true, n.push(r), s.successors(r).forEach(i), s.predecessors(r).forEach(i)); + } + return s.nodes().forEach(function(r) { + n = [], i(r), n.length && t.push(n); + }), t; + } + var _ = class { + constructor() { + this._arr = []; + this._keyIndices = {}; + } + size() { + return this._arr.length; + } + keys() { + return this._arr.map((e) => e.key); + } + has(e) { + return e in this._keyIndices; + } + priority(e) { + let t = this._keyIndices[e]; + if (t !== void 0) return this._arr[t].priority; + } + min() { + if (this.size() === 0) throw new Error("Queue underflow"); + return this._arr[0].key; + } + add(e, t) { + let n = this._keyIndices, i = String(e); + if (!(i in n)) { + let r = this._arr, o = r.length; + return n[i] = o, r.push({ key: i, priority: t }), this._decrease(o), true; + } + return false; + } + removeMin() { + this._swap(0, this._arr.length - 1); + let e = this._arr.pop(); + return delete this._keyIndices[e.key], this._heapify(0), e.key; + } + decrease(e, t) { + let n = this._keyIndices[e]; + if (n === void 0) throw new Error(`Key not found: ${e}`); + let i = this._arr[n].priority; + if (t > i) throw new Error(`New priority is greater than current priority. Key: ${e} Old: ${i} New: ${t}`); + this._arr[n].priority = t, this._decrease(n); + } + _heapify(e) { + let t = this._arr, n = 2 * e, i = n + 1, r = e; + n < t.length && (r = t[n].priority < t[r].priority ? n : r, i < t.length && (r = t[i].priority < t[r].priority ? i : r), r !== e && (this._swap(e, r), this._heapify(r))); + } + _decrease(e) { + let t = this._arr, n = t[e].priority, i; + for (; e !== 0 && (i = e >> 1, !(t[i].priority < n)); ) this._swap(e, i), e = i; + } + _swap(e, t) { + let n = this._arr, i = this._keyIndices, r = n[e], o = n[t]; + n[e] = o, n[t] = r, i[o.key] = e, i[r.key] = t; + } + }; + var q = () => 1; + function E(s, e, t, n) { + let i = function(r) { + return s.outEdges(r); + }; + return B(s, String(e), t || q, n || i); + } + function B(s, e, t, n) { + let i = {}, r = new _(), o, d, a = function(c) { + let h = c.v !== o ? c.v : c.w, u = i[h], g = t(c), f = d.distance + g; + if (g < 0) throw new Error("dijkstra does not allow negative edge weights. Bad edge: " + c + " Weight: " + g); + f < u.distance && (u.distance = f, u.predecessor = o, r.decrease(h, f)); + }; + for (s.nodes().forEach(function(c) { + let h = c === e ? 0 : Number.POSITIVE_INFINITY; + i[c] = { distance: h, predecessor: "" }, r.add(c, h); + }); r.size() > 0 && (o = r.removeMin(), d = i[o], d.distance !== Number.POSITIVE_INFINITY); ) n(o).forEach(a); + return i; + } + function P(s, e, t) { + return s.nodes().reduce(function(n, i) { + return n[i] = E(s, i, e, t), n; + }, {}); + } + function y(s) { + let e = 0, t = [], n = {}, i = []; + function r(o) { + let d = n[o] = { onStack: true, lowlink: e, index: e++ }; + if (t.push(o), s.successors(o).forEach(function(a) { + a in n ? n[a].onStack && (d.lowlink = Math.min(d.lowlink, n[a].index)) : (r(a), d.lowlink = Math.min(d.lowlink, n[a].lowlink)); + }), d.lowlink === d.index) { + let a = [], c; + do + c = t.pop(), n[c].onStack = false, a.push(c); + while (o !== c); + i.push(a); + } + } + return s.nodes().forEach(function(o) { + o in n || r(o); + }), i; + } + function I(s) { + return y(s).filter(function(e) { + return e.length > 1 || e.length === 1 && s.hasEdge(e[0], e[0]); + }); + } + var X = () => 1; + function D(s, e, t) { + return Z(s, e || X, t || function(n) { + return s.outEdges(n); + }); + } + function Z(s, e, t) { + let n = {}, i = s.nodes(); + return i.forEach(function(r) { + n[r] = {}, n[r][r] = { distance: 0, predecessor: "" }, i.forEach(function(o) { + r !== o && (n[r][o] = { distance: Number.POSITIVE_INFINITY, predecessor: "" }); + }), t(r).forEach(function(o) { + let d = o.v === r ? o.w : o.v, a = e(o); + n[r][d] = { distance: a, predecessor: r }; + }); + }), i.forEach(function(r) { + let o = n[r]; + i.forEach(function(d) { + let a = n[d]; + i.forEach(function(c) { + let h = a[r], u = o[c], g = a[c], f = h.distance + u.distance; + f < g.distance && (g.distance = f, g.predecessor = u.predecessor); + }); + }); + }), n; + } + var l = class extends Error { + constructor(...e) { + super(...e); + } + }; + function L(s) { + let e = {}, t = {}, n = []; + function i(r) { + if (r in t) throw new l(); + r in e || (t[r] = true, e[r] = true, s.predecessors(r).forEach(i), delete t[r], n.push(r)); + } + if (s.sinks().forEach(i), Object.keys(e).length !== s.nodeCount()) throw new l(); + return n; + } + function O(s) { + try { + L(s); + } catch (e) { + if (e instanceof l) return false; + throw e; + } + return true; + } + function j(s, e, t, n, i) { + Array.isArray(e) || (e = [e]); + let r = ((d) => { + var a; + return (a = s.isDirected() ? s.successors(d) : s.neighbors(d)) != null ? a : []; + }), o = {}; + return e.forEach(function(d) { + if (!s.hasNode(d)) throw new Error("Graph does not have node: " + d); + i = C(s, d, t === "post", o, r, n, i); + }), i; + } + function C(s, e, t, n, i, r, o) { + return e in n || (n[e] = true, t || (o = r(o, e)), i(e).forEach(function(d) { + o = C(s, d, t, n, i, r, o); + }), t && (o = r(o, e))), o; + } + function w(s, e, t) { + return j(s, e, t, function(n, i) { + return n.push(i), n; + }, []); + } + function T(s, e) { + return w(s, e, "post"); + } + function A(s, e) { + return w(s, e, "pre"); + } + function W(s, e) { + let t = new p(), n = {}, i = new _(), r; + function o(a) { + let c = a.v === r ? a.w : a.v, h = i.priority(c); + if (h !== void 0) { + let u = e(a); + u < h && (n[c] = r, i.decrease(c, u)); + } + } + if (s.nodeCount() === 0) return t; + s.nodes().forEach(function(a) { + i.add(a, Number.POSITIVE_INFINITY), t.setNode(a); + }), i.decrease(s.nodes()[0], 0); + let d = false; + for (; i.size() > 0; ) { + if (r = i.removeMin(), r in n) t.setEdge(r, n[r]); + else { + if (d) throw new Error("Input graph is not connected: " + s); + d = true; + } + s.nodeEdges(r).forEach(o); + } + return t; + } + function S(s, e, t, n) { + return ee(s, e, t, n != null ? n : ((i) => { + let r = s.outEdges(i); + return r != null ? r : []; + })); + } + function ee(s, e, t, n) { + if (t === void 0) return E(s, e, t, n); + let i = false, r = s.nodes(); + for (let o = 0; o < r.length; o++) { + let d = n(r[o]); + for (let a = 0; a < d.length; a++) { + let c = d[a], h = c.v === r[o] ? c.v : c.w, u = h === c.v ? c.w : c.v; + t({ v: h, w: u }) < 0 && (i = true); + } + if (i) return m(s, e, t, n); + } + return E(s, e, t, n); + } + + // lib/util.ts + function addDummyNode(graph, type, attrs, name) { + let v2 = name; + while (graph.hasNode(v2)) { + v2 = uniqueId(name); + } + attrs.dummy = type; + graph.setNode(v2, attrs); + return v2; + } + function simplify(graph) { + const simplified = new p().setGraph(graph.graph()); + graph.nodes().forEach((v2) => simplified.setNode(v2, graph.node(v2))); + graph.edges().forEach((e) => { + const simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 }; + const label = graph.edge(e); + simplified.setEdge(e.v, e.w, { + weight: simpleLabel.weight + label.weight, + minlen: Math.max(simpleLabel.minlen, label.minlen) + }); + }); + return simplified; + } + function asNonCompoundGraph(graph) { + const simplified = new p({ multigraph: graph.isMultigraph() }).setGraph(graph.graph()); + graph.nodes().forEach((v2) => { + if (!graph.children(v2).length) { + simplified.setNode(v2, graph.node(v2)); + } + }); + graph.edges().forEach((e) => { + simplified.setEdge(e, graph.edge(e)); + }); + return simplified; + } + function intersectRect(rect, point) { + const x2 = rect.x; + const y2 = rect.y; + const dx = point.x - x2; + const dy = point.y - y2; + let w2 = rect.width / 2; + let h = rect.height / 2; + if (!dx && !dy) { + throw new Error("Not possible to find intersection inside of the rectangle"); + } + let sx, sy; + if (Math.abs(dy) * w2 > Math.abs(dx) * h) { + if (dy < 0) { + h = -h; + } + sx = h * dx / dy; + sy = h; + } else { + if (dx < 0) { + w2 = -w2; + } + sx = w2; + sy = w2 * dy / dx; + } + return { x: x2 + sx, y: y2 + sy }; + } + function buildLayerMatrix(graph) { + const layering = range(maxRank(graph) + 1).map(() => []); + graph.nodes().forEach((v2) => { + const node = graph.node(v2); + const rank2 = node.rank; + if (rank2 !== void 0) { + if (!layering[rank2]) { + layering[rank2] = []; + } + layering[rank2][node.order] = v2; + } + }); + return layering; + } + function normalizeRanks(graph) { + const nodeRanks = graph.nodes().map((v2) => { + const rank2 = graph.node(v2).rank; + if (rank2 === void 0) { + return Number.MAX_VALUE; + } + return rank2; + }); + const min = applyWithChunking(Math.min, nodeRanks); + graph.nodes().forEach((v2) => { + const node = graph.node(v2); + if (Object.hasOwn(node, "rank")) { + node.rank -= min; + } + }); + } + function removeEmptyRanks(graph) { + const nodeRanks = graph.nodes().map((v2) => graph.node(v2).rank).filter((rank2) => rank2 !== void 0); + const offset = applyWithChunking(Math.min, nodeRanks); + const layers = []; + graph.nodes().forEach((v2) => { + const rank2 = graph.node(v2).rank - offset; + if (!layers[rank2]) { + layers[rank2] = []; + } + layers[rank2].push(v2); + }); + let delta = 0; + const nodeRankFactor = graph.graph().nodeRankFactor; + Array.from(layers).forEach((vs, i) => { + if (vs === void 0 && i % nodeRankFactor !== 0) { + --delta; + } else if (vs !== void 0 && delta) { + vs.forEach((v2) => graph.node(v2).rank += delta); + } + }); + } + function addBorderNode(graph, prefix, rank2, order2) { + const node = { + width: 0, + height: 0 + }; + if (arguments.length >= 4) { + node.rank = rank2; + node.order = order2; + } + return addDummyNode(graph, "border", node, prefix); + } + function splitToChunks(array, chunkSize = CHUNKING_THRESHOLD) { + const chunks = []; + for (let i = 0; i < array.length; i += chunkSize) { + const chunk = array.slice(i, i + chunkSize); + chunks.push(chunk); + } + return chunks; + } + var CHUNKING_THRESHOLD = 65535; + function applyWithChunking(fn, argsArray) { + if (argsArray.length > CHUNKING_THRESHOLD) { + const chunks = splitToChunks(argsArray); + return fn(...chunks.map((chunk) => fn(...chunk))); + } else { + return fn(...argsArray); + } + } + function maxRank(graph) { + const nodes = graph.nodes(); + const nodeRanks = nodes.map((v2) => { + const rank2 = graph.node(v2).rank; + if (rank2 === void 0) { + return Number.MIN_VALUE; + } + return rank2; + }); + return applyWithChunking(Math.max, nodeRanks); + } + function partition(collection, fn) { + const result = { lhs: [], rhs: [] }; + collection.forEach((value) => { + if (fn(value)) { + result.lhs.push(value); + } else { + result.rhs.push(value); + } + }); + return result; + } + function time(name, fn) { + const start = Date.now(); + try { + return fn(); + } finally { + console.log(name + " time: " + (Date.now() - start) + "ms"); + } + } + function notime(name, fn) { + return fn(); + } + var idCounter = 0; + function uniqueId(prefix) { + const id = ++idCounter; + return prefix + ("" + id); + } + function range(start, limit, step = 1) { + if (limit == null) { + limit = start; + start = 0; + } + let endCon = (i) => i < limit; + if (step < 0) { + endCon = (i) => limit < i; + } + const range3 = []; + for (let i = start; endCon(i); i += step) { + range3.push(i); + } + return range3; + } + function pick(source, keys) { + const dest = {}; + for (const key of keys) { + if (source[key] !== void 0) { + dest[key] = source[key]; + } + } + return dest; + } + function mapValues(obj, funcOrProp) { + let func; + if (typeof funcOrProp === "string") { + func = (val) => val[funcOrProp]; + } else { + func = funcOrProp; + } + return Object.entries(obj).reduce((acc, [k2, v2]) => { + acc[k2] = func(v2, k2); + return acc; + }, {}); + } + function zipObject(props, values) { + return props.reduce((acc, key, i) => { + acc[key] = values[i]; + return acc; + }, {}); + } + var GRAPH_NODE = "\0"; + + // lib/version.ts + var version = "3.0.0"; + + // lib/data/list.ts + var List = class { + constructor() { + __publicField(this, "_sentinel"); + const sentinel = {}; + sentinel._next = sentinel._prev = sentinel; + this._sentinel = sentinel; + } + dequeue() { + const sentinel = this._sentinel; + const entry = sentinel._prev; + if (entry !== sentinel) { + unlink(entry); + return entry; + } + return void 0; + } + enqueue(entry) { + const sentinel = this._sentinel; + if (entry._prev && entry._next) { + unlink(entry); + } + entry._next = sentinel._next; + sentinel._next._prev = entry; + sentinel._next = entry; + entry._prev = sentinel; + } + toString() { + const strs = []; + const sentinel = this._sentinel; + let curr = sentinel._prev; + while (curr !== sentinel) { + strs.push(JSON.stringify(curr, filterOutLinks)); + curr = curr._prev; + } + return "[" + strs.join(", ") + "]"; + } + }; + function unlink(entry) { + entry._prev._next = entry._next; + entry._next._prev = entry._prev; + delete entry._next; + delete entry._prev; + } + function filterOutLinks(k2, v2) { + if (k2 !== "_next" && k2 !== "_prev") { + return v2; + } + return void 0; + } + var list_default = List; + + // lib/greedy-fas.ts + var DEFAULT_WEIGHT_FN = () => 1; + function greedyFAS(graph, weightFn) { + if (graph.nodeCount() <= 1) { + return []; + } + const state = buildState(graph, weightFn || DEFAULT_WEIGHT_FN); + const results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx); + return results.flatMap((edge) => graph.outEdges(edge.v, edge.w) || []); + } + function doGreedyFAS(g, buckets, zeroIdx) { + var _a; + let results = []; + const sources = buckets[buckets.length - 1]; + const sinks = buckets[0]; + let entry; + while (g.nodeCount()) { + while (entry = sinks.dequeue()) { + removeNode(g, buckets, zeroIdx, entry); + } + while (entry = sources.dequeue()) { + removeNode(g, buckets, zeroIdx, entry); + } + if (g.nodeCount()) { + for (let i = buckets.length - 2; i > 0; --i) { + entry = (_a = buckets[i]) == null ? void 0 : _a.dequeue(); + if (entry) { + results = results.concat(removeNode(g, buckets, zeroIdx, entry, true) || []); + break; + } + } + } + } + return results; + } + function removeNode(graph, buckets, zeroIdx, entry, collectPredecessors) { + const collected = []; + const results = collectPredecessors ? collected : void 0; + (graph.inEdges(entry.v) || []).forEach((edge) => { + const weight = graph.edge(edge); + const uEntry = graph.node(edge.v); + if (collectPredecessors) { + collected.push({ v: edge.v, w: edge.w }); + } + uEntry.out -= weight; + assignBucket(buckets, zeroIdx, uEntry); + }); + (graph.outEdges(entry.v) || []).forEach((edge) => { + const weight = graph.edge(edge); + const w2 = edge.w; + const wEntry = graph.node(w2); + wEntry.in -= weight; + assignBucket(buckets, zeroIdx, wEntry); + }); + graph.removeNode(entry.v); + return results; + } + function buildState(graph, weightFn) { + const fasGraph = new p(); + let maxIn = 0; + let maxOut = 0; + graph.nodes().forEach((v2) => { + fasGraph.setNode(v2, { v: v2, in: 0, out: 0 }); + }); + graph.edges().forEach((edge) => { + const prevWeight = fasGraph.edge(edge.v, edge.w) || 0; + const weight = weightFn(edge); + const edgeWeight = prevWeight + weight; + fasGraph.setEdge(edge.v, edge.w, edgeWeight); + const vNode = fasGraph.node(edge.v); + const wNode = fasGraph.node(edge.w); + maxOut = Math.max(maxOut, vNode.out += weight); + maxIn = Math.max(maxIn, wNode.in += weight); + }); + const buckets = range2(maxOut + maxIn + 3).map(() => new list_default()); + const zeroIdx = maxIn + 1; + fasGraph.nodes().forEach((v2) => { + assignBucket(buckets, zeroIdx, fasGraph.node(v2)); + }); + return { graph: fasGraph, buckets, zeroIdx }; + } + function assignBucket(buckets, zeroIdx, entry) { + var _a, _b, _c; + if (!entry.out) { + (_a = buckets[0]) == null ? void 0 : _a.enqueue(entry); + } else if (!entry.in) { + (_b = buckets[buckets.length - 1]) == null ? void 0 : _b.enqueue(entry); + } else { + (_c = buckets[entry.out - entry.in + zeroIdx]) == null ? void 0 : _c.enqueue(entry); + } + } + function range2(limit) { + const range3 = []; + for (let i = 0; i < limit; i++) { + range3.push(i); + } + return range3; + } + + // lib/acyclic.ts + function run(graph) { + const fas = graph.graph().acyclicer === "greedy" ? greedyFAS(graph, weightFn(graph)) : dfsFAS(graph); + fas.forEach((e) => { + const label = graph.edge(e); + graph.removeEdge(e); + label.forwardName = e.name; + label.reversed = true; + graph.setEdge(e.w, e.v, label, uniqueId("rev")); + }); + function weightFn(g) { + return (e) => { + return g.edge(e).weight; + }; + } + } + function dfsFAS(graph) { + const fas = []; + const stack = {}; + const visited = {}; + function dfs2(v2) { + if (Object.hasOwn(visited, v2)) { + return; + } + visited[v2] = true; + stack[v2] = true; + graph.outEdges(v2).forEach((e) => { + if (Object.hasOwn(stack, e.w)) { + fas.push(e); + } else { + dfs2(e.w); + } + }); + delete stack[v2]; + } + graph.nodes().forEach(dfs2); + return fas; + } + function undo(graph) { + graph.edges().forEach((e) => { + const label = graph.edge(e); + if (label.reversed) { + graph.removeEdge(e); + const forwardName = label.forwardName; + delete label.reversed; + delete label.forwardName; + graph.setEdge(e.w, e.v, label, forwardName); + } + }); + } + + // lib/normalize.ts + function run2(graph) { + graph.graph().dummyChains = []; + graph.edges().forEach((edge) => normalizeEdge(graph, edge)); + } + function normalizeEdge(graph, e) { + let v2 = e.v; + let vRank = graph.node(v2).rank; + const w2 = e.w; + const wRank = graph.node(w2).rank; + const name = e.name; + const edgeLabel = graph.edge(e); + const labelRank = edgeLabel.labelRank; + if (wRank === vRank + 1) return; + graph.removeEdge(e); + let dummy; + let attrs; + let i; + for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) { + edgeLabel.points = []; + attrs = { + width: 0, + height: 0, + edgeLabel, + edgeObj: e, + rank: vRank + }; + dummy = addDummyNode(graph, "edge", attrs, "_d"); + if (vRank === labelRank) { + attrs.width = edgeLabel.width; + attrs.height = edgeLabel.height; + attrs.dummy = "edge-label"; + attrs.labelpos = edgeLabel.labelpos; + } + graph.setEdge(v2, dummy, { weight: edgeLabel.weight }, name); + if (i === 0) { + graph.graph().dummyChains.push(dummy); + } + v2 = dummy; + } + graph.setEdge(v2, w2, { weight: edgeLabel.weight }, name); + } + function undo2(graph) { + graph.graph().dummyChains.forEach((v2) => { + let node = graph.node(v2); + const origLabel = node.edgeLabel; + let w2; + graph.setEdge(node.edgeObj, origLabel); + while (node.dummy) { + w2 = graph.successors(v2)[0]; + graph.removeNode(v2); + origLabel.points.push({ x: node.x, y: node.y }); + if (node.dummy === "edge-label") { + origLabel.x = node.x; + origLabel.y = node.y; + origLabel.width = node.width; + origLabel.height = node.height; + } + v2 = w2; + node = graph.node(v2); + } + }); + } + + // lib/rank/util.ts + function longestPath(graph) { + const visited = {}; + function dfs2(v2) { + const label = graph.node(v2); + if (Object.hasOwn(visited, v2)) { + return label.rank; + } + visited[v2] = true; + const outEdges = graph.outEdges(v2); + const outEdgesMinLens = outEdges ? outEdges.map((e) => { + if (e == null) { + return Number.POSITIVE_INFINITY; + } + return dfs2(e.w) - graph.edge(e).minlen; + }) : []; + let rank2 = applyWithChunking(Math.min, outEdgesMinLens); + if (rank2 === Number.POSITIVE_INFINITY) { + rank2 = 0; + } + return label.rank = rank2; + } + graph.sources().forEach(dfs2); + } + function slack(graph, edge) { + return graph.node(edge.w).rank - graph.node(edge.v).rank - graph.edge(edge).minlen; + } + + // lib/rank/feasible-tree.ts + var feasible_tree_default = feasibleTree; + function feasibleTree(graph) { + const tree = new p({ directed: false }); + const nodes = graph.nodes(); + if (nodes.length === 0) { + throw new Error("Graph must have at least one node"); + } + const start = nodes[0]; + const size = graph.nodeCount(); + tree.setNode(start, {}); + let edge; + let delta; + while (tightTree(tree, graph) < size) { + edge = findMinSlackEdge(tree, graph); + if (!edge) break; + delta = tree.hasNode(edge.v) ? slack(graph, edge) : -slack(graph, edge); + shiftRanks(tree, graph, delta); + } + return tree; + } + function tightTree(tree, graph) { + function dfs2(v2) { + const nodeEdges = graph.nodeEdges(v2); + if (nodeEdges) { + nodeEdges.forEach((e) => { + const edgeV = e.v; + const w2 = v2 === edgeV ? e.w : edgeV; + if (!tree.hasNode(w2) && !slack(graph, e)) { + tree.setNode(w2, {}); + tree.setEdge(v2, w2, {}); + dfs2(w2); + } + }); + } + } + tree.nodes().forEach(dfs2); + return tree.nodeCount(); + } + function findMinSlackEdge(tree, graph) { + const edges = graph.edges(); + return edges.reduce((acc, edge) => { + let edgeSlack = Number.POSITIVE_INFINITY; + if (tree.hasNode(edge.v) !== tree.hasNode(edge.w)) { + edgeSlack = slack(graph, edge); + } + if (edgeSlack < acc[0]) { + return [edgeSlack, edge]; + } + return acc; + }, [Number.POSITIVE_INFINITY, null])[1]; + } + function shiftRanks(tree, graph, delta) { + tree.nodes().forEach((v2) => graph.node(v2).rank += delta); + } + + // lib/rank/network-simplex.ts + var { preorder, postorder } = v; + var network_simplex_default = networkSimplex; + networkSimplex.initLowLimValues = initLowLimValues; + networkSimplex.initCutValues = initCutValues; + networkSimplex.calcCutValue = calcCutValue; + networkSimplex.leaveEdge = leaveEdge; + networkSimplex.enterEdge = enterEdge; + networkSimplex.exchangeEdges = exchangeEdges; + function networkSimplex(graph) { + graph = simplify(graph); + longestPath(graph); + const t = feasible_tree_default(graph); + initLowLimValues(t); + initCutValues(t, graph); + let e; + let f; + while (e = leaveEdge(t)) { + f = enterEdge(t, graph, e); + exchangeEdges(t, graph, e, f); + } + } + function initCutValues(tree, graph) { + let visitedNodes = postorder(tree, tree.nodes()); + visitedNodes = visitedNodes.slice(0, visitedNodes.length - 1); + visitedNodes.forEach((v2) => assignCutValue(tree, graph, v2)); + } + function assignCutValue(tree, graph, child) { + const childLab = tree.node(child); + const parent = childLab.parent; + const edge = tree.edge(child, parent); + edge.cutvalue = calcCutValue(tree, graph, child); + } + function calcCutValue(tree, graph, child) { + const childLab = tree.node(child); + const parent = childLab.parent; + let childIsTail = true; + let graphEdge = graph.edge(child, parent); + let cutValue = 0; + if (!graphEdge) { + childIsTail = false; + graphEdge = graph.edge(parent, child); + } + cutValue = graphEdge.weight; + const nodeEdges = graph.nodeEdges(child); + if (nodeEdges) { + nodeEdges.forEach((edge) => { + const isOutEdge = edge.v === child; + const other = isOutEdge ? edge.w : edge.v; + if (other !== parent) { + const pointsToHead = isOutEdge === childIsTail; + const otherWeight = graph.edge(edge).weight; + cutValue += pointsToHead ? otherWeight : -otherWeight; + if (isTreeEdge(tree, child, other)) { + const treeEdge = tree.edge(child, other); + const otherCutValue = treeEdge.cutvalue; + cutValue += pointsToHead ? -otherCutValue : otherCutValue; + } + } + }); + } + return cutValue; + } + function initLowLimValues(tree, root) { + if (arguments.length < 2) { + root = tree.nodes()[0]; + } + dfsAssignLowLim(tree, {}, 1, root); + } + function dfsAssignLowLim(tree, visited, nextLim, v2, parent) { + const low = nextLim; + const label = tree.node(v2); + visited[v2] = true; + const neighbors = tree.neighbors(v2); + if (neighbors) { + neighbors.forEach((w2) => { + if (!Object.hasOwn(visited, w2)) { + nextLim = dfsAssignLowLim(tree, visited, nextLim, w2, v2); + } + }); + } + label.low = low; + label.lim = nextLim++; + if (parent) { + label.parent = parent; + } else { + delete label.parent; + } + return nextLim; + } + function leaveEdge(tree) { + return tree.edges().find((e) => { + const edge = tree.edge(e); + return edge.cutvalue < 0; + }); + } + function enterEdge(tree, graph, edge) { + let v2 = edge.v; + let w2 = edge.w; + if (!graph.hasEdge(v2, w2)) { + v2 = edge.w; + w2 = edge.v; + } + const vLabel = tree.node(v2); + const wLabel = tree.node(w2); + let tailLabel = vLabel; + let flip = false; + if (vLabel.lim > wLabel.lim) { + tailLabel = wLabel; + flip = true; + } + const candidates = graph.edges().filter((edge2) => { + return flip === isDescendant(tree, tree.node(edge2.v), tailLabel) && flip !== isDescendant(tree, tree.node(edge2.w), tailLabel); + }); + return candidates.reduce((acc, edge2) => { + if (slack(graph, edge2) < slack(graph, acc)) { + return edge2; + } + return acc; + }); + } + function exchangeEdges(t, g, e, f) { + const v2 = e.v; + const w2 = e.w; + t.removeEdge(v2, w2); + t.setEdge(f.v, f.w, {}); + initLowLimValues(t); + initCutValues(t, g); + updateRanks(t, g); + } + function updateRanks(t, g) { + const root = t.nodes().find((v2) => { + const node = t.node(v2); + return !node.parent; + }); + if (!root) return; + let vs = preorder(t, [root]); + vs = vs.slice(1); + vs.forEach((v2) => { + const treeNode = t.node(v2); + const parent = treeNode.parent; + let edge = g.edge(v2, parent); + let flipped = false; + if (!edge) { + edge = g.edge(parent, v2); + flipped = true; + } + g.node(v2).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen); + }); + } + function isTreeEdge(tree, u, v2) { + return tree.hasEdge(u, v2); + } + function isDescendant(tree, vLabel, rootLabel) { + return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim; + } + + // lib/rank/index.ts + var rank_default = rank; + function rank(graph) { + const ranker = graph.graph().ranker; + if (typeof ranker === "function") { + return ranker(graph); + } + switch (ranker) { + case "network-simplex": + networkSimplexRanker(graph); + break; + case "tight-tree": + tightTreeRanker(graph); + break; + case "longest-path": + longestPathRanker(graph); + break; + case "none": + break; + default: + networkSimplexRanker(graph); + } + } + var longestPathRanker = longestPath; + function tightTreeRanker(g) { + longestPath(g); + feasible_tree_default(g); + } + function networkSimplexRanker(g) { + network_simplex_default(g); + } + + // lib/parent-dummy-chains.ts + var parent_dummy_chains_default = parentDummyChains; + function parentDummyChains(graph) { + const postorderNums = postorder2(graph); + graph.graph().dummyChains.forEach((v2) => { + let node = graph.node(v2); + const edgeObj = node.edgeObj; + const pathData = findPath(graph, postorderNums, edgeObj.v, edgeObj.w); + const path = pathData.path; + const lca = pathData.lca; + let pathIdx = 0; + let pathV = path[pathIdx]; + let ascending = true; + while (v2 !== edgeObj.w) { + node = graph.node(v2); + if (ascending) { + while ((pathV = path[pathIdx]) !== lca && graph.node(pathV).maxRank < node.rank) { + pathIdx++; + } + if (pathV === lca) { + ascending = false; + } + } + if (!ascending) { + while (pathIdx < path.length - 1 && graph.node(path[pathIdx + 1]).minRank <= node.rank) { + pathIdx++; + } + pathV = path[pathIdx]; + } + if (pathV !== void 0) { + graph.setParent(v2, pathV); + } + v2 = graph.successors(v2)[0]; + } + }); + } + function findPath(graph, postorderNums, v2, w2) { + const vPath = []; + const wPath = []; + const low = Math.min(postorderNums[v2].low, postorderNums[w2].low); + const lim = Math.max(postorderNums[v2].lim, postorderNums[w2].lim); + let parent; + parent = v2; + do { + parent = graph.parent(parent); + vPath.push(parent); + } while (parent && (postorderNums[parent].low > low || lim > postorderNums[parent].lim)); + const lca = parent; + let wParent = w2; + while ((wParent = graph.parent(wParent)) !== lca) { + wPath.push(wParent); + } + return { path: vPath.concat(wPath.reverse()), lca }; + } + function postorder2(graph) { + const result = {}; + let lim = 0; + function dfs2(v2) { + const low = lim; + graph.children(v2).forEach(dfs2); + result[v2] = { low, lim: lim++ }; + } + graph.children(GRAPH_NODE).forEach(dfs2); + return result; + } + + // lib/nesting-graph.ts + function run3(graph) { + const root = addDummyNode(graph, "root", {}, "_root"); + const depths = treeDepths(graph); + const depthsArr = Object.values(depths); + const height = applyWithChunking(Math.max, depthsArr) - 1; + const nodeSep = 2 * height + 1; + graph.graph().nestingRoot = root; + graph.edges().forEach((e) => graph.edge(e).minlen *= nodeSep); + const weight = sumWeights(graph) + 1; + graph.children(GRAPH_NODE).forEach((child) => dfs(graph, root, nodeSep, weight, height, depths, child)); + graph.graph().nodeRankFactor = nodeSep; + } + function dfs(graph, root, nodeSep, weight, height, depths, v2) { + var _a; + const children = graph.children(v2); + if (!children.length) { + if (v2 !== root) { + graph.setEdge(root, v2, { weight: 0, minlen: nodeSep }); + } + return; + } + const top = addBorderNode(graph, "_bt"); + const bottom = addBorderNode(graph, "_bb"); + const label = graph.node(v2); + graph.setParent(top, v2); + label.borderTop = top; + graph.setParent(bottom, v2); + label.borderBottom = bottom; + children.forEach((child) => { + var _a2; + dfs(graph, root, nodeSep, weight, height, depths, child); + const childNode = graph.node(child); + const childTop = childNode.borderTop ? childNode.borderTop : child; + const childBottom = childNode.borderBottom ? childNode.borderBottom : child; + const thisWeight = childNode.borderTop ? weight : 2 * weight; + const minlen = childTop !== childBottom ? 1 : height - ((_a2 = depths[v2]) != null ? _a2 : 0) + 1; + graph.setEdge(top, childTop, { + weight: thisWeight, + minlen, + nestingEdge: true + }); + graph.setEdge(childBottom, bottom, { + weight: thisWeight, + minlen, + nestingEdge: true + }); + }); + if (!graph.parent(v2)) { + graph.setEdge(root, top, { weight: 0, minlen: height + ((_a = depths[v2]) != null ? _a : 0) }); + } + } + function treeDepths(graph) { + const depths = {}; + function dfs2(v2, depth) { + const children = graph.children(v2); + if (children && children.length) { + children.forEach((child) => dfs2(child, depth + 1)); + } + depths[v2] = depth; + } + graph.children(GRAPH_NODE).forEach((v2) => dfs2(v2, 1)); + return depths; + } + function sumWeights(graph) { + return graph.edges().reduce((acc, e) => acc + graph.edge(e).weight, 0); + } + function cleanup(graph) { + const graphLabel = graph.graph(); + graph.removeNode(graphLabel.nestingRoot); + delete graphLabel.nestingRoot; + graph.edges().forEach((e) => { + const edge = graph.edge(e); + if (edge.nestingEdge) { + graph.removeEdge(e); + } + }); + } + + // lib/add-border-segments.ts + var add_border_segments_default = addBorderSegments; + function addBorderSegments(graph) { + function dfs2(v2) { + const children = graph.children(v2); + const node = graph.node(v2); + if (children.length) { + children.forEach(dfs2); + } + if (Object.hasOwn(node, "minRank")) { + node.borderLeft = []; + node.borderRight = []; + for (let rank2 = node.minRank, maxRank2 = node.maxRank + 1; rank2 < maxRank2; ++rank2) { + addBorderNode2(graph, "borderLeft", "_bl", v2, node, rank2); + addBorderNode2(graph, "borderRight", "_br", v2, node, rank2); + } + } + } + graph.children(GRAPH_NODE).forEach(dfs2); + } + function addBorderNode2(graph, prop, prefix, sg, sgNode, rank2) { + const label = { width: 0, height: 0, rank: rank2, borderType: prop }; + const prev = sgNode[prop][rank2 - 1]; + const curr = addDummyNode(graph, "border", label, prefix); + sgNode[prop][rank2] = curr; + graph.setParent(curr, sg); + if (prev) { + graph.setEdge(prev, curr, { weight: 1 }); + } + } + + // lib/coordinate-system.ts + function adjust(graph) { + var _a; + const rankDir = (_a = graph.graph().rankdir) == null ? void 0 : _a.toLowerCase(); + if (rankDir === "lr" || rankDir === "rl") { + swapWidthHeight(graph); + } + } + function undo3(graph) { + var _a; + const rankDir = (_a = graph.graph().rankdir) == null ? void 0 : _a.toLowerCase(); + if (rankDir === "bt" || rankDir === "rl") { + reverseY(graph); + } + if (rankDir === "lr" || rankDir === "rl") { + swapXY(graph); + swapWidthHeight(graph); + } + } + function swapWidthHeight(graph) { + graph.nodes().forEach((node) => swapWidthHeightOne(graph.node(node))); + graph.edges().forEach((edge) => swapWidthHeightOne(graph.edge(edge))); + } + function swapWidthHeightOne(attrs) { + const w2 = attrs.width; + attrs.width = attrs.height; + attrs.height = w2; + } + function reverseY(graph) { + graph.nodes().forEach((node) => reverseYOne(graph.node(node))); + graph.edges().forEach((edge) => { + var _a; + const edgeLabel = graph.edge(edge); + (_a = edgeLabel.points) == null ? void 0 : _a.forEach(reverseYOne); + if (Object.hasOwn(edgeLabel, "y")) { + reverseYOne(edgeLabel); + } + }); + } + function reverseYOne(attrs) { + attrs.y = -attrs.y; + } + function swapXY(graph) { + graph.nodes().forEach((node) => swapXYOne(graph.node(node))); + graph.edges().forEach((edge) => { + var _a; + const edgeLabel = graph.edge(edge); + (_a = edgeLabel.points) == null ? void 0 : _a.forEach(swapXYOne); + if (Object.hasOwn(edgeLabel, "x")) { + swapXYOne(edgeLabel); + } + }); + } + function swapXYOne(attrs) { + const x2 = attrs.x; + attrs.x = attrs.y; + attrs.y = x2; + } + + // lib/order/init-order.ts + function initOrder(graph) { + const visited = {}; + const simpleNodes = graph.nodes().filter((v2) => !graph.children(v2).length); + const simpleNodesRanks = simpleNodes.map((v2) => graph.node(v2).rank); + const maxRank2 = applyWithChunking(Math.max, simpleNodesRanks); + const layers = range(maxRank2 + 1).map(() => []); + function dfs2(v2) { + if (visited[v2]) return; + visited[v2] = true; + const node = graph.node(v2); + layers[node.rank].push(v2); + const successors = graph.successors(v2); + if (successors) { + successors.forEach(dfs2); + } + } + const orderedVs = simpleNodes.sort((a, b2) => graph.node(a).rank - graph.node(b2).rank); + orderedVs.forEach(dfs2); + return layers; + } + + // lib/order/cross-count.ts + function crossCount(graph, layering) { + let cc = 0; + for (let i = 1; i < layering.length; ++i) { + cc += twoLayerCrossCount(graph, layering[i - 1], layering[i]); + } + return cc; + } + function twoLayerCrossCount(graph, northLayer, southLayer) { + const southPos = zipObject(southLayer, southLayer.map((v2, i) => i)); + const southEntries = northLayer.flatMap((v2) => { + const edges = graph.outEdges(v2); + if (!edges) return []; + return edges.map((e) => { + return { pos: southPos[e.w], weight: graph.edge(e).weight }; + }).sort((a, b2) => a.pos - b2.pos); + }); + let firstIndex = 1; + while (firstIndex < southLayer.length) firstIndex <<= 1; + const treeSize = 2 * firstIndex - 1; + firstIndex -= 1; + const tree = new Array(treeSize).fill(0); + let cc = 0; + southEntries.forEach((entry) => { + let index = entry.pos + firstIndex; + tree[index] += entry.weight; + let weightSum = 0; + while (index > 0) { + if (index % 2) { + weightSum += tree[index + 1]; + } + index = index - 1 >> 1; + tree[index] += entry.weight; + } + cc += entry.weight * weightSum; + }); + return cc; + } + + // lib/order/barycenter.ts + function barycenter(graph, movable = []) { + return movable.map((v2) => { + const inV = graph.inEdges(v2); + if (!inV || !inV.length) { + return { v: v2 }; + } else { + const result = inV.reduce((acc, e) => { + const edge = graph.edge(e); + const nodeU = graph.node(e.v); + return { + sum: acc.sum + edge.weight * nodeU.order, + weight: acc.weight + edge.weight + }; + }, { sum: 0, weight: 0 }); + return { + v: v2, + barycenter: result.sum / result.weight, + weight: result.weight + }; + } + }); + } + + // lib/order/resolve-conflicts.ts + function resolveConflicts(entries, constraintGraph) { + const mappedEntries = {}; + entries.forEach((entry, i) => { + const tmp = { + indegree: 0, + "in": [], + out: [], + vs: [entry.v], + i + }; + if (entry.barycenter !== void 0) { + tmp.barycenter = entry.barycenter; + tmp.weight = entry.weight; + } + mappedEntries[entry.v] = tmp; + }); + constraintGraph.edges().forEach((e) => { + const entryV = mappedEntries[e.v]; + const entryW = mappedEntries[e.w]; + if (entryV !== void 0 && entryW !== void 0) { + entryW.indegree++; + entryV.out.push(entryW); + } + }); + const sourceSet = Object.values(mappedEntries).filter((entry) => !entry.indegree); + return doResolveConflicts(sourceSet); + } + function doResolveConflicts(sourceSet) { + const entries = []; + function handleIn(vEntry) { + return (uEntry) => { + if (uEntry.merged) { + return; + } + if (uEntry.barycenter === void 0 || vEntry.barycenter === void 0 || uEntry.barycenter >= vEntry.barycenter) { + mergeEntries(vEntry, uEntry); + } + }; + } + function handleOut(vEntry) { + return (wEntry) => { + wEntry["in"].push(vEntry); + if (--wEntry.indegree === 0) { + sourceSet.push(wEntry); + } + }; + } + while (sourceSet.length) { + const entry = sourceSet.pop(); + entries.push(entry); + entry["in"].reverse().forEach(handleIn(entry)); + entry.out.forEach(handleOut(entry)); + } + return entries.filter((entry) => !entry.merged).map((entry) => { + return pick(entry, ["vs", "i", "barycenter", "weight"]); + }); + } + function mergeEntries(target, source) { + let sum = 0; + let weight = 0; + if (target.weight) { + sum += target.barycenter * target.weight; + weight += target.weight; + } + if (source.weight) { + sum += source.barycenter * source.weight; + weight += source.weight; + } + target.vs = source.vs.concat(target.vs); + target.barycenter = sum / weight; + target.weight = weight; + target.i = Math.min(source.i, target.i); + source.merged = true; + } + + // lib/order/sort.ts + function sort(entries, biasRight) { + const parts = partition(entries, (entry) => { + return Object.hasOwn(entry, "barycenter"); + }); + const sortable = parts.lhs; + const unsortable = parts.rhs.sort((a, b2) => b2.i - a.i); + const vs = []; + let sum = 0; + let weight = 0; + let vsIndex = 0; + sortable.sort(compareWithBias(!!biasRight)); + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + sortable.forEach((entry) => { + vsIndex += entry.vs.length; + vs.push(entry.vs); + sum += entry.barycenter * entry.weight; + weight += entry.weight; + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + }); + const result = { vs: vs.flat(1) }; + if (weight) { + result.barycenter = sum / weight; + result.weight = weight; + } + return result; + } + function consumeUnsortable(vs, unsortable, index) { + let last; + while (unsortable.length && (last = unsortable[unsortable.length - 1]).i <= index) { + unsortable.pop(); + vs.push(last.vs); + index++; + } + return index; + } + function compareWithBias(bias) { + return (entryV, entryW) => { + if (entryV.barycenter < entryW.barycenter) { + return -1; + } else if (entryV.barycenter > entryW.barycenter) { + return 1; + } + return !bias ? entryV.i - entryW.i : entryW.i - entryV.i; + }; + } + + // lib/order/sort-subgraph.ts + function sortSubgraph(graph, v2, constraintGraph, biasRight) { + let movable = graph.children(v2); + const node = graph.node(v2); + const bl = node ? node.borderLeft : void 0; + const br = node ? node.borderRight : void 0; + const subgraphs = {}; + if (bl) { + movable = movable.filter((w2) => w2 !== bl && w2 !== br); + } + const barycenters = barycenter(graph, movable); + barycenters.forEach((entry) => { + if (graph.children(entry.v).length) { + const subgraphResult = sortSubgraph(graph, entry.v, constraintGraph, biasRight); + subgraphs[entry.v] = subgraphResult; + if (Object.hasOwn(subgraphResult, "barycenter")) { + mergeBarycenters(entry, subgraphResult); + } + } + }); + const entries = resolveConflicts(barycenters, constraintGraph); + expandSubgraphs(entries, subgraphs); + const result = sort(entries, biasRight); + if (bl && br) { + result.vs = [bl, result.vs, br].flat(1); + const blPredecessors = graph.predecessors(bl); + if (blPredecessors && blPredecessors.length) { + const blPred = graph.node(blPredecessors[0]); + const brPredecessors = graph.predecessors(br); + const brPred = graph.node(brPredecessors[0]); + if (!Object.hasOwn(result, "barycenter")) { + result.barycenter = 0; + result.weight = 0; + } + result.barycenter = (result.barycenter * result.weight + blPred.order + brPred.order) / (result.weight + 2); + result.weight += 2; + } + } + return result; + } + function expandSubgraphs(entries, subgraphs) { + entries.forEach((entry) => { + entry.vs = entry.vs.flatMap((v2) => { + if (subgraphs[v2]) { + return subgraphs[v2].vs; + } + return v2; + }); + }); + } + function mergeBarycenters(target, other) { + if (target.barycenter !== void 0) { + target.barycenter = (target.barycenter * target.weight + other.barycenter * other.weight) / (target.weight + other.weight); + target.weight += other.weight; + } else { + target.barycenter = other.barycenter; + target.weight = other.weight; + } + } + + // lib/order/build-layer-graph.ts + function buildLayerGraph(graph, rank2, relationship, nodesWithRank) { + if (!nodesWithRank) { + nodesWithRank = graph.nodes(); + } + const root = createRootNode(graph); + const result = new p({ compound: true }).setGraph({ root }).setDefaultNodeLabel((v2) => graph.node(v2)); + nodesWithRank.forEach((v2) => { + const node = graph.node(v2); + const parent = graph.parent(v2); + if (node.rank === rank2 || node.minRank <= rank2 && rank2 <= node.maxRank) { + result.setNode(v2); + result.setParent(v2, parent || root); + const edges = graph[relationship](v2); + if (edges) { + edges.forEach((e) => { + const u = e.v === v2 ? e.w : e.v; + const edge = result.edge(u, v2); + const weight = edge !== void 0 ? edge.weight : 0; + result.setEdge(u, v2, { weight: graph.edge(e).weight + weight }); + }); + } + if (Object.hasOwn(node, "minRank")) { + result.setNode(v2, { + borderLeft: node.borderLeft[rank2], + borderRight: node.borderRight[rank2] + }); + } + } + }); + return result; + } + function createRootNode(graph) { + let v2; + while (graph.hasNode(v2 = uniqueId("_root"))) ; + return v2; + } + + // lib/order/add-subgraph-constraints.ts + function addSubgraphConstraints(graph, constraintGraph, vs) { + const prev = {}; + let rootPrev; + vs.forEach((v2) => { + let child = graph.parent(v2); + let parent; + let prevChild; + while (child) { + parent = graph.parent(child); + if (parent) { + prevChild = prev[parent]; + prev[parent] = child; + } else { + prevChild = rootPrev; + rootPrev = child; + } + if (prevChild && prevChild !== child) { + constraintGraph.setEdge(prevChild, child); + return; + } + child = parent; + } + }); + } + + // lib/order/index.ts + function order(graph, opts = {}) { + if (typeof opts.customOrder === "function") { + opts.customOrder(graph, order); + return; + } + const maxRank2 = maxRank(graph); + const downLayerGraphs = buildLayerGraphs(graph, range(1, maxRank2 + 1), "inEdges"); + const upLayerGraphs = buildLayerGraphs(graph, range(maxRank2 - 1, -1, -1), "outEdges"); + let layering = initOrder(graph); + assignOrder(graph, layering); + if (opts.disableOptimalOrderHeuristic) { + return; + } + let bestCC = Number.POSITIVE_INFINITY; + let best; + const constraints = opts.constraints || []; + for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) { + sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, constraints); + layering = buildLayerMatrix(graph); + const cc = crossCount(graph, layering); + if (cc < bestCC) { + lastBest = 0; + best = Object.assign({}, layering); + bestCC = cc; + } else if (cc === bestCC) { + best = structuredClone(layering); + } + } + assignOrder(graph, best); + } + function buildLayerGraphs(graph, ranks, relationship) { + const nodesByRank = /* @__PURE__ */ new Map(); + const addNodeToRank = (rank2, node) => { + if (!nodesByRank.has(rank2)) { + nodesByRank.set(rank2, []); + } + nodesByRank.get(rank2).push(node); + }; + for (const v2 of graph.nodes()) { + const node = graph.node(v2); + if (typeof node.rank === "number") { + addNodeToRank(node.rank, v2); + } + if (typeof node.minRank === "number" && typeof node.maxRank === "number") { + for (let r = node.minRank; r <= node.maxRank; r++) { + if (r !== node.rank) { + addNodeToRank(r, v2); + } + } + } + } + return ranks.map(function(rank2) { + return buildLayerGraph(graph, rank2, relationship, nodesByRank.get(rank2) || []); + }); + } + function sweepLayerGraphs(layerGraphs, biasRight, constraints) { + const cg = new p(); + layerGraphs.forEach(function(lg) { + constraints.forEach((con) => cg.setEdge(con.left, con.right)); + const root = lg.graph().root; + const sorted = sortSubgraph(lg, root, cg, biasRight); + sorted.vs.forEach((v2, i) => lg.node(v2).order = i); + addSubgraphConstraints(lg, cg, sorted.vs); + }); + } + function assignOrder(graph, layering) { + Object.values(layering).forEach((layer) => layer.forEach((v2, i) => graph.node(v2).order = i)); + } + + // lib/position/bk.ts + function findType1Conflicts(graph, layering) { + const conflicts = {}; + function visitLayer(prevLayer, layer) { + let k0 = 0, scanPos = 0; + const prevLayerLength = prevLayer.length, lastNode = layer[layer.length - 1]; + layer.forEach((v2, i) => { + const w2 = findOtherInnerSegmentNode(graph, v2); + const k1 = w2 ? graph.node(w2).order : prevLayerLength; + if (w2 || v2 === lastNode) { + layer.slice(scanPos, i + 1).forEach((scanNode) => { + const preds = graph.predecessors(scanNode); + if (preds) { + preds.forEach((u) => { + const uLabel = graph.node(u); + const uPos = uLabel.order; + if ((uPos < k0 || k1 < uPos) && !(uLabel.dummy && graph.node(scanNode).dummy)) { + addConflict(conflicts, u, scanNode); + } + }); + } + }); + scanPos = i + 1; + k0 = k1; + } + }); + return layer; + } + if (layering.length) { + layering.reduce(visitLayer); + } + return conflicts; + } + function findType2Conflicts(graph, layering) { + const conflicts = {}; + function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) { + range(southPos, southEnd).forEach((i) => { + const v2 = south[i]; + if (v2 === void 0) return; + if (graph.node(v2).dummy) { + const preds = graph.predecessors(v2); + if (preds) { + preds.forEach((u) => { + if (u === void 0) return; + const uNode = graph.node(u); + if (uNode.dummy && (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) { + addConflict(conflicts, u, v2); + } + }); + } + } + }); + } + function visitLayer(north, south) { + let prevNorthPos = -1; + let nextNorthPos = -1; + let southPos = 0; + south.forEach((v2, southLookahead) => { + if (graph.node(v2).dummy === "border") { + const predecessors = graph.predecessors(v2); + if (predecessors && predecessors.length) { + const firstPred = predecessors[0]; + if (firstPred === void 0) return; + nextNorthPos = graph.node(firstPred).order; + scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos); + southPos = southLookahead; + prevNorthPos = nextNorthPos; + } + } + scan(south, southPos, south.length, nextNorthPos, north.length); + }); + return south; + } + if (layering.length) { + layering.reduce(visitLayer); + } + return conflicts; + } + function findOtherInnerSegmentNode(graph, v2) { + if (graph.node(v2).dummy) { + const preds = graph.predecessors(v2); + if (preds) { + return preds.find((u) => graph.node(u).dummy); + } + } + return void 0; + } + function addConflict(conflicts, v2, w2) { + if (v2 > w2) { + const tmp = v2; + v2 = w2; + w2 = tmp; + } + let conflictsV = conflicts[v2]; + if (!conflictsV) { + conflicts[v2] = conflictsV = {}; + } + conflictsV[w2] = true; + } + function hasConflict(conflicts, v2, w2) { + if (v2 > w2) { + const tmp = v2; + v2 = w2; + w2 = tmp; + } + const conflictsV = conflicts[v2]; + return conflictsV !== void 0 && Object.hasOwn(conflictsV, w2); + } + function verticalAlignment(graph, layering, conflicts, neighborFn) { + const root = {}; + const align = {}; + const pos = {}; + layering.forEach((layer) => { + layer.forEach((v2, order2) => { + root[v2] = v2; + align[v2] = v2; + pos[v2] = order2; + }); + }); + layering.forEach((layer) => { + let prevIdx = -1; + layer.forEach((v2) => { + const wsRaw = neighborFn(v2); + if (wsRaw && wsRaw.length) { + const ws = wsRaw.sort((a, b2) => { + const posA = pos[a]; + const posB = pos[b2]; + return (posA !== void 0 ? posA : 0) - (posB !== void 0 ? posB : 0); + }); + const mp = (ws.length - 1) / 2; + for (let i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) { + const w2 = ws[i]; + if (w2 === void 0) continue; + const posW = pos[w2]; + if (posW !== void 0 && align[v2] === v2 && prevIdx < posW && !hasConflict(conflicts, v2, w2)) { + const rootW = root[w2]; + if (rootW !== void 0) { + align[w2] = v2; + align[v2] = root[v2] = rootW; + prevIdx = posW; + } + } + } + } + }); + }); + return { root, align }; + } + function horizontalCompaction(graph, layering, root, align, reverseSep = false) { + const xs = {}; + const blockG = buildBlockGraph(graph, layering, root, reverseSep); + const borderType = reverseSep ? "borderLeft" : "borderRight"; + function iterate(setXsFunc, nextNodesFunc) { + const stack = blockG.nodes().slice(); + const visited = {}; + let elem = stack.pop(); + while (elem) { + if (visited[elem]) { + setXsFunc(elem); + } else { + visited[elem] = true; + stack.push(elem); + for (const nextElem of nextNodesFunc(elem)) { + stack.push(nextElem); + } + } + elem = stack.pop(); + } + } + function pass1(elem) { + const inEdges = blockG.inEdges(elem); + if (inEdges) { + xs[elem] = inEdges.reduce((acc, e) => { + var _a; + const xsV = (_a = xs[e.v]) != null ? _a : 0; + const edgeWeight = blockG.edge(e); + return Math.max(acc, xsV + (edgeWeight !== void 0 ? edgeWeight : 0)); + }, 0); + } else { + xs[elem] = 0; + } + } + function pass2(elem) { + const outEdges = blockG.outEdges(elem); + let min = Number.POSITIVE_INFINITY; + if (outEdges) { + min = outEdges.reduce((acc, e) => { + const xsW = xs[e.w]; + const edgeWeight = blockG.edge(e); + return Math.min(acc, (xsW !== void 0 ? xsW : 0) - (edgeWeight !== void 0 ? edgeWeight : 0)); + }, Number.POSITIVE_INFINITY); + } + const node = graph.node(elem); + if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { + xs[elem] = Math.max(xs[elem] !== void 0 ? xs[elem] : 0, min); + } + } + function predecessorsWrapper(elem) { + return blockG.predecessors(elem) || []; + } + function successorsWrapper(elem) { + return blockG.successors(elem) || []; + } + iterate(pass1, predecessorsWrapper); + iterate(pass2, successorsWrapper); + Object.keys(align).forEach((v2) => { + var _a; + const rootV = root[v2]; + if (rootV !== void 0) { + xs[v2] = (_a = xs[rootV]) != null ? _a : 0; + } + }); + return xs; + } + function buildBlockGraph(graph, layering, root, reverseSep) { + const blockGraph = new p(); + const graphLabel = graph.graph(); + const sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep); + layering.forEach((layer) => { + let u; + layer.forEach((v2) => { + const vRoot = root[v2]; + if (vRoot !== void 0) { + blockGraph.setNode(vRoot); + if (u !== void 0) { + const uRoot = root[u]; + if (uRoot !== void 0) { + const prevMax = blockGraph.edge(uRoot, vRoot); + blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(graph, v2, u), prevMax || 0)); + } + } + u = v2; + } + }); + }); + return blockGraph; + } + function findSmallestWidthAlignment(graph, xss) { + return Object.values(xss).reduce((currentMinAndXs, xs) => { + let max = Number.NEGATIVE_INFINITY; + let min = Number.POSITIVE_INFINITY; + Object.entries(xs).forEach(([v2, x2]) => { + const halfWidth = width(graph, v2) / 2; + max = Math.max(x2 + halfWidth, max); + min = Math.min(x2 - halfWidth, min); + }); + const newMin = max - min; + if (newMin < currentMinAndXs[0]) { + currentMinAndXs = [newMin, xs]; + } + return currentMinAndXs; + }, [Number.POSITIVE_INFINITY, null])[1]; + } + function alignCoordinates(xss, alignTo) { + const alignToVals = Object.values(alignTo); + const alignToMin = applyWithChunking(Math.min, alignToVals); + const alignToMax = applyWithChunking(Math.max, alignToVals); + ["u", "d"].forEach((vert) => { + ["l", "r"].forEach((horiz) => { + const alignment = vert + horiz; + const xs = xss[alignment]; + if (!xs || xs === alignTo) return; + const xsVals = Object.values(xs); + let delta = alignToMin - applyWithChunking(Math.min, xsVals); + if (horiz !== "l") { + delta = alignToMax - applyWithChunking(Math.max, xsVals); + } + if (delta) { + xss[alignment] = mapValues(xs, (x2) => x2 + delta); + } + }); + }); + } + function balance(xss, align = void 0) { + const ulMap = xss.ul; + if (!ulMap) { + return {}; + } + return mapValues(ulMap, (num, v2) => { + var _a, _b; + if (align) { + const alignmentKey = align.toLowerCase(); + const alignment = xss[alignmentKey]; + if (alignment && alignment[v2] !== void 0) { + return alignment[v2]; + } + } + const xs = Object.values(xss).map((xs2) => { + const val = xs2[v2]; + return val !== void 0 ? val : 0; + }).sort((a, b2) => a - b2); + return (((_a = xs[1]) != null ? _a : 0) + ((_b = xs[2]) != null ? _b : 0)) / 2; + }); + } + function positionX(graph) { + const layering = buildLayerMatrix(graph); + const conflicts = Object.assign( + findType1Conflicts(graph, layering), + findType2Conflicts(graph, layering) + ); + const xss = {}; + let adjustedLayering; + ["u", "d"].forEach((vert) => { + adjustedLayering = vert === "u" ? layering : Object.values(layering).reverse(); + ["l", "r"].forEach((horiz) => { + if (horiz === "r") { + adjustedLayering = adjustedLayering.map((inner) => { + return Object.values(inner).reverse(); + }); + } + const neighborFn = (v2) => { + const result = vert === "u" ? graph.predecessors(v2) : graph.successors(v2); + return result || []; + }; + const align = verticalAlignment(graph, adjustedLayering, conflicts, neighborFn); + let xs = horizontalCompaction( + graph, + adjustedLayering, + align.root, + align.align, + horiz === "r" + ); + if (horiz === "r") { + xs = mapValues(xs, (x2) => -x2); + } + xss[vert + horiz] = xs; + }); + }); + const smallestWidth = findSmallestWidthAlignment(graph, xss); + alignCoordinates(xss, smallestWidth); + return balance(xss, graph.graph().align); + } + function sep(nodeSep, edgeSep, reverseSep) { + return (g, v2, w2) => { + const vLabel = g.node(v2); + const wLabel = g.node(w2); + let sum = 0; + let delta; + sum += vLabel.width / 2; + if (Object.hasOwn(vLabel, "labelpos")) { + switch (vLabel.labelpos.toLowerCase()) { + case "l": + delta = -vLabel.width / 2; + break; + case "r": + delta = vLabel.width / 2; + break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = void 0; + sum += (vLabel.dummy ? edgeSep : nodeSep) / 2; + sum += (wLabel.dummy ? edgeSep : nodeSep) / 2; + sum += wLabel.width / 2; + if (Object.hasOwn(wLabel, "labelpos")) { + switch (wLabel.labelpos.toLowerCase()) { + case "l": + delta = wLabel.width / 2; + break; + case "r": + delta = -wLabel.width / 2; + break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + return sum; + }; + } + function width(graph, v2) { + return graph.node(v2).width; + } + + // lib/position/index.ts + function position(graph) { + graph = asNonCompoundGraph(graph); + positionY(graph); + Object.entries(positionX(graph)).forEach(([v2, x2]) => graph.node(v2).x = x2); + } + function positionY(graph) { + const layering = buildLayerMatrix(graph); + const graphLabel = graph.graph(); + const rankSep = graphLabel.ranksep; + const rankAlign = graphLabel.rankalign; + let prevY = 0; + layering.forEach((layer) => { + const maxHeight = layer.reduce((acc, v2) => { + var _a; + const height = (_a = graph.node(v2).height) != null ? _a : 0; + if (acc > height) { + return acc; + } else { + return height; + } + }, 0); + layer.forEach((v2) => { + const node = graph.node(v2); + if (rankAlign === "top") { + node.y = prevY + node.height / 2; + } else if (rankAlign === "bottom") { + node.y = prevY + maxHeight - node.height / 2; + } else { + node.y = prevY + maxHeight / 2; + } + }); + prevY += maxHeight + rankSep; + }); + } + + // lib/layout.ts + function layout(g, opts = {}) { + const time2 = opts.debugTiming ? time : notime; + return time2("layout", () => { + const layoutGraph = time2(" buildLayoutGraph", () => buildLayoutGraph(g)); + time2(" runLayout", () => runLayout(layoutGraph, time2, opts)); + time2(" updateInputGraph", () => updateInputGraph(g, layoutGraph)); + return layoutGraph; + }); + } + function runLayout(g, time2, opts) { + time2(" makeSpaceForEdgeLabels", () => makeSpaceForEdgeLabels(g)); + time2(" removeSelfEdges", () => removeSelfEdges(g)); + time2(" acyclic", () => run(g)); + time2(" nestingGraph.run", () => run3(g)); + time2(" rank", () => rank_default(asNonCompoundGraph(g))); + time2(" injectEdgeLabelProxies", () => injectEdgeLabelProxies(g)); + time2(" removeEmptyRanks", () => removeEmptyRanks(g)); + time2(" nestingGraph.cleanup", () => cleanup(g)); + time2(" normalizeRanks", () => normalizeRanks(g)); + time2(" assignRankMinMax", () => assignRankMinMax(g)); + time2(" removeEdgeLabelProxies", () => removeEdgeLabelProxies(g)); + time2(" normalize.run", () => run2(g)); + time2(" parentDummyChains", () => parent_dummy_chains_default(g)); + time2(" addBorderSegments", () => add_border_segments_default(g)); + time2(" order", () => order(g, opts)); + time2(" insertSelfEdges", () => insertSelfEdges(g)); + time2(" adjustCoordinateSystem", () => adjust(g)); + time2(" position", () => position(g)); + time2(" positionSelfEdges", () => positionSelfEdges(g)); + time2(" removeBorderNodes", () => removeBorderNodes(g)); + time2(" normalize.undo", () => undo2(g)); + time2(" fixupEdgeLabelCoords", () => fixupEdgeLabelCoords(g)); + time2(" undoCoordinateSystem", () => undo3(g)); + time2(" translateGraph", () => translateGraph(g)); + time2(" assignNodeIntersects", () => assignNodeIntersects(g)); + time2(" reversePoints", () => reversePointsForReversedEdges(g)); + time2(" acyclic.undo", () => undo(g)); + } + function updateInputGraph(inputGraph, layoutGraph) { + inputGraph.nodes().forEach((v2) => { + const inputLabel = inputGraph.node(v2); + const layoutLabel = layoutGraph.node(v2); + if (inputLabel) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + inputLabel.order = layoutLabel.order; + inputLabel.rank = layoutLabel.rank; + if (layoutGraph.children(v2).length) { + inputLabel.width = layoutLabel.width; + inputLabel.height = layoutLabel.height; + } + } + }); + inputGraph.edges().forEach((e) => { + const inputLabel = inputGraph.edge(e); + const layoutLabel = layoutGraph.edge(e); + inputLabel.points = layoutLabel.points; + if (Object.hasOwn(layoutLabel, "x")) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + } + }); + inputGraph.graph().width = layoutGraph.graph().width; + inputGraph.graph().height = layoutGraph.graph().height; + } + var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"]; + var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "TB", rankalign: "center" }; + var graphAttrs = ["acyclicer", "ranker", "rankdir", "align", "rankalign"]; + var nodeNumAttrs = ["width", "height", "rank"]; + var nodeDefaults = { width: 0, height: 0 }; + var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"]; + var edgeDefaults = { + minlen: 1, + weight: 1, + width: 0, + height: 0, + labeloffset: 10, + labelpos: "r" + }; + var edgeAttrs = ["labelpos"]; + function buildLayoutGraph(inputGraph) { + const g = new p({ multigraph: true, compound: true }); + const graph = canonicalize(inputGraph.graph()); + g.setGraph(Object.assign( + {}, + graphDefaults, + selectNumberAttrs(graph, graphNumAttrs), + pick(graph, graphAttrs) + )); + inputGraph.nodes().forEach((v2) => { + const node = canonicalize(inputGraph.node(v2)); + const newNode = selectNumberAttrs(node, nodeNumAttrs); + Object.keys(nodeDefaults).forEach((k2) => { + if (newNode[k2] === void 0) { + newNode[k2] = nodeDefaults[k2]; + } + }); + g.setNode(v2, newNode); + const parent = inputGraph.parent(v2); + if (parent !== void 0) { + g.setParent(v2, parent); + } + }); + inputGraph.edges().forEach((e) => { + const edge = canonicalize(inputGraph.edge(e)); + g.setEdge(e, Object.assign( + {}, + edgeDefaults, + selectNumberAttrs(edge, edgeNumAttrs), + pick(edge, edgeAttrs) + )); + }); + return g; + } + function makeSpaceForEdgeLabels(g) { + const graph = g.graph(); + graph.ranksep /= 2; + g.edges().forEach((e) => { + const edge = g.edge(e); + edge.minlen *= 2; + if (edge.labelpos.toLowerCase() !== "c") { + if (graph.rankdir === "TB" || graph.rankdir === "BT") { + edge.width += edge.labeloffset; + } else { + edge.height += edge.labeloffset; + } + } + }); + } + function injectEdgeLabelProxies(g) { + g.edges().forEach((e) => { + const edge = g.edge(e); + if (edge.width && edge.height) { + const v2 = g.node(e.v); + const w2 = g.node(e.w); + const label = { rank: (w2.rank - v2.rank) / 2 + v2.rank, e }; + addDummyNode(g, "edge-proxy", label, "_ep"); + } + }); + } + function assignRankMinMax(g) { + let maxRank2 = 0; + g.nodes().forEach((v2) => { + const node = g.node(v2); + if (node.borderTop) { + node.minRank = g.node(node.borderTop).rank; + node.maxRank = g.node(node.borderBottom).rank; + maxRank2 = Math.max(maxRank2, node.maxRank); + } + }); + g.graph().maxRank = maxRank2; + } + function removeEdgeLabelProxies(g) { + g.nodes().forEach((v2) => { + const node = g.node(v2); + if (node.dummy === "edge-proxy") { + const proxyNode = node; + g.edge(proxyNode.e).labelRank = node.rank; + g.removeNode(v2); + } + }); + } + function translateGraph(g) { + let minX = Number.POSITIVE_INFINITY; + let maxX = 0; + let minY = Number.POSITIVE_INFINITY; + let maxY = 0; + const graphLabel = g.graph(); + const marginX = graphLabel.marginx || 0; + const marginY = graphLabel.marginy || 0; + function getExtremes(attrs) { + const x2 = attrs.x; + const y2 = attrs.y; + const w2 = attrs.width; + const h = attrs.height; + minX = Math.min(minX, x2 - w2 / 2); + maxX = Math.max(maxX, x2 + w2 / 2); + minY = Math.min(minY, y2 - h / 2); + maxY = Math.max(maxY, y2 + h / 2); + } + g.nodes().forEach((v2) => getExtremes(g.node(v2))); + g.edges().forEach((e) => { + const edge = g.edge(e); + if (Object.hasOwn(edge, "x")) { + getExtremes(edge); + } + }); + minX -= marginX; + minY -= marginY; + g.nodes().forEach((v2) => { + const node = g.node(v2); + node.x -= minX; + node.y -= minY; + }); + g.edges().forEach((e) => { + const edge = g.edge(e); + edge.points.forEach((p2) => { + p2.x -= minX; + p2.y -= minY; + }); + if (Object.hasOwn(edge, "x")) { + edge.x -= minX; + } + if (Object.hasOwn(edge, "y")) { + edge.y -= minY; + } + }); + graphLabel.width = maxX - minX + marginX; + graphLabel.height = maxY - minY + marginY; + } + function assignNodeIntersects(g) { + g.edges().forEach((e) => { + const edge = g.edge(e); + const nodeV = g.node(e.v); + const nodeW = g.node(e.w); + let p1, p2; + if (!edge.points) { + edge.points = []; + p1 = nodeW; + p2 = nodeV; + } else { + p1 = edge.points[0]; + p2 = edge.points[edge.points.length - 1]; + } + edge.points.unshift(intersectRect(nodeV, p1)); + edge.points.push(intersectRect(nodeW, p2)); + }); + } + function fixupEdgeLabelCoords(g) { + g.edges().forEach((e) => { + const edge = g.edge(e); + if (Object.hasOwn(edge, "x")) { + if (edge.labelpos === "l" || edge.labelpos === "r") { + edge.width -= edge.labeloffset; + } + switch (edge.labelpos) { + case "l": + edge.x -= edge.width / 2 + edge.labeloffset; + break; + case "r": + edge.x += edge.width / 2 + edge.labeloffset; + break; + } + } + }); + } + function reversePointsForReversedEdges(g) { + g.edges().forEach((e) => { + const edge = g.edge(e); + if (edge.reversed) { + edge.points.reverse(); + } + }); + } + function removeBorderNodes(g) { + g.nodes().forEach((v2) => { + if (g.children(v2).length) { + const node = g.node(v2); + const t = g.node(node.borderTop); + const b2 = g.node(node.borderBottom); + const l2 = g.node(node.borderLeft[node.borderLeft.length - 1]); + const r = g.node(node.borderRight[node.borderRight.length - 1]); + node.width = Math.abs(r.x - l2.x); + node.height = Math.abs(b2.y - t.y); + node.x = l2.x + node.width / 2; + node.y = t.y + node.height / 2; + } + }); + g.nodes().forEach((v2) => { + if (g.node(v2).dummy === "border") { + g.removeNode(v2); + } + }); + } + function removeSelfEdges(g) { + g.edges().forEach((e) => { + if (e.v === e.w) { + const node = g.node(e.v); + if (!node.selfEdges) { + node.selfEdges = []; + } + node.selfEdges.push({ e, label: g.edge(e) }); + g.removeEdge(e); + } + }); + } + function insertSelfEdges(g) { + const layers = buildLayerMatrix(g); + layers.forEach((layer) => { + let orderShift = 0; + layer.forEach((v2, i) => { + const node = g.node(v2); + node.order = i + orderShift; + (node.selfEdges || []).forEach((selfEdge) => { + addDummyNode(g, "selfedge", { + width: selfEdge.label.width, + height: selfEdge.label.height, + rank: node.rank, + order: i + ++orderShift, + e: selfEdge.e, + label: selfEdge.label + }, "_se"); + }); + delete node.selfEdges; + }); + }); + } + function positionSelfEdges(g) { + g.nodes().forEach((v2) => { + const node = g.node(v2); + if (node.dummy === "selfedge") { + const selfEdgeNode = node; + const selfNode = g.node(selfEdgeNode.e.v); + const x2 = selfNode.x + selfNode.width / 2; + const y2 = selfNode.y; + const dx = node.x - x2; + const dy = selfNode.height / 2; + g.setEdge(selfEdgeNode.e, selfEdgeNode.label); + g.removeNode(v2); + selfEdgeNode.label.points = [ + { x: x2 + 2 * dx / 3, y: y2 - dy }, + { x: x2 + 5 * dx / 6, y: y2 - dy }, + { x: x2 + dx, y: y2 }, + { x: x2 + 5 * dx / 6, y: y2 + dy }, + { x: x2 + 2 * dx / 3, y: y2 + dy } + ]; + selfEdgeNode.label.x = node.x; + selfEdgeNode.label.y = node.y; + } + }); + } + function selectNumberAttrs(obj, attrs) { + return mapValues(pick(obj, attrs), Number); + } + function canonicalize(attrs) { + const newAttrs = {}; + if (attrs) { + Object.entries(attrs).forEach(([k2, v2]) => { + if (typeof k2 === "string") { + k2 = k2.toLowerCase(); + } + newAttrs[k2] = v2; + }); + } + return newAttrs; + } + + // lib/debug.ts + function debugOrdering(graph) { + const layerMatrix = buildLayerMatrix(graph); + const h = new p({ compound: true, multigraph: true }).setGraph({}); + graph.nodes().forEach((node) => { + h.setNode(node, { label: node }); + h.setParent(node, "layer" + graph.node(node).rank); + }); + graph.edges().forEach((edge) => h.setEdge(edge.v, edge.w, {}, edge.name)); + layerMatrix.forEach((layer, i) => { + const layerV = "layer" + i; + h.setNode(layerV, { rank: "same" }); + layer.reduce((u, v2) => { + h.setEdge(u, v2, { style: "invis" }); + return v2; + }); + }); + return h; + } + + // index.ts + var util = { time, notime }; + var dagre = { + graphlib: graphlib_esm_exports, + version, + layout, + debug: debugOrdering, + util: { time, notime } + }; + var index_default = dagre; + return __toCommonJS(index_exports); +})(); +/*! For license information please see dagre.js.LEGAL.txt */ +//# sourceMappingURL=dagre.js.map diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/lib/elk.bundled.js b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/elk.bundled.js new file mode 100644 index 0000000..5519f1b --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/elk.bundled.js @@ -0,0 +1,6589 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ELK = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$defaultLayoutOpt = _ref.defaultLayoutOptions, + defaultLayoutOptions = _ref$defaultLayoutOpt === void 0 ? {} : _ref$defaultLayoutOpt, + _ref$algorithms = _ref.algorithms, + algorithms = _ref$algorithms === void 0 ? ['layered', 'stress', 'mrtree', 'radial', 'force', 'disco', 'sporeOverlap', 'sporeCompaction', 'rectpacking'] : _ref$algorithms, + workerFactory = _ref.workerFactory, + workerUrl = _ref.workerUrl; + _classCallCheck(this, ELK); + this.defaultLayoutOptions = defaultLayoutOptions; + this.initialized = false; + + // check valid worker construction possible + if (typeof workerUrl === 'undefined' && typeof workerFactory === 'undefined') { + throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'."); + } + var factory = workerFactory; + if (typeof workerUrl !== 'undefined' && typeof workerFactory === 'undefined') { + // use default Web Worker + factory = function factory(url) { + return new Worker(url); + }; + } + + // create the worker + var worker = factory(workerUrl); + if (typeof worker.postMessage !== 'function') { + throw new TypeError("Created worker does not provide" + " the required 'postMessage' function."); + } + + // wrap the worker to return promises + this.worker = new PromisedWorker(worker); + + // initially register algorithms + this.worker.postMessage({ + cmd: 'register', + algorithms: algorithms + }).then(function (r) { + return _this.initialized = true; + })["catch"](console.err); + } + return _createClass(ELK, [{ + key: "layout", + value: function layout(graph) { + var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref2$layoutOptions = _ref2.layoutOptions, + layoutOptions = _ref2$layoutOptions === void 0 ? this.defaultLayoutOptions : _ref2$layoutOptions, + _ref2$logging = _ref2.logging, + logging = _ref2$logging === void 0 ? false : _ref2$logging, + _ref2$measureExecutio = _ref2.measureExecutionTime, + measureExecutionTime = _ref2$measureExecutio === void 0 ? false : _ref2$measureExecutio; + if (!graph) { + return Promise.reject(new Error("Missing mandatory parameter 'graph'.")); + } + return this.worker.postMessage({ + cmd: 'layout', + graph: graph, + layoutOptions: layoutOptions, + options: { + logging: logging, + measureExecutionTime: measureExecutionTime + } + }); + } + }, { + key: "knownLayoutAlgorithms", + value: function knownLayoutAlgorithms() { + return this.worker.postMessage({ + cmd: 'algorithms' + }); + } + }, { + key: "knownLayoutOptions", + value: function knownLayoutOptions() { + return this.worker.postMessage({ + cmd: 'options' + }); + } + }, { + key: "knownLayoutCategories", + value: function knownLayoutCategories() { + return this.worker.postMessage({ + cmd: 'categories' + }); + } + }, { + key: "terminateWorker", + value: function terminateWorker() { + if (this.worker) this.worker.terminate(); + } + }]); +}(); +var PromisedWorker = /*#__PURE__*/function () { + function PromisedWorker(worker) { + var _this2 = this; + _classCallCheck(this, PromisedWorker); + if (worker === undefined) { + throw new Error("Missing mandatory parameter 'worker'."); + } + this.resolvers = {}; + this.worker = worker; + this.worker.onmessage = function (answer) { + // why is this necessary? + setTimeout(function () { + _this2.receive(_this2, answer); + }, 0); + }; + } + return _createClass(PromisedWorker, [{ + key: "postMessage", + value: function postMessage(msg) { + var id = this.id || 0; + this.id = id + 1; + msg.id = id; + var self = this; + return new Promise(function (resolve, reject) { + // prepare the resolver + self.resolvers[id] = function (err, res) { + if (err) { + self.convertGwtStyleError(err); + reject(err); + } else { + resolve(res); + } + }; + // post the message + self.worker.postMessage(msg); + }); + } + }, { + key: "receive", + value: function receive(self, answer) { + var json = answer.data; + var resolver = self.resolvers[json.id]; + if (resolver) { + delete self.resolvers[json.id]; + if (json.error) { + resolver(json.error); + } else { + resolver(null, json.data); + } + } + } + }, { + key: "terminate", + value: function terminate() { + if (this.worker) { + this.worker.terminate(); + } + } + }, { + key: "convertGwtStyleError", + value: function convertGwtStyleError(err) { + if (!err) { + return; + } + // Somewhat flatten the way GWT stores nested exception(s) + var javaException = err['__java$exception']; + if (javaException) { + // Note that the property name of the nested exception is different + // in the non-minified ('cause') and the minified (not deterministic) version. + // Hence, the version below only works for the non-minified version. + // However, as the minified stack trace is not of much use anyway, one + // should switch the used version for debugging in such a case. + if (javaException.cause && javaException.cause.backingJsObject) { + err.cause = javaException.cause.backingJsObject; + this.convertGwtStyleError(err.cause); + } + delete err['__java$exception']; + } + } + }]); +}(); +},{}],2:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; + +// -------------- FAKE ELEMENTS GWT ASSUMES EXIST -------------- +var $wnd; +if (typeof window !== 'undefined') + $wnd = window +else if (typeof global !== 'undefined') + $wnd = global // nodejs +else if (typeof self !== 'undefined') + $wnd = self // web worker + +var $moduleName, + $moduleBase; + +// -------------- WORKAROUND STRICT MODE, SEE #127 -------------- +var g, i, o; + +// -------------- GENERATED CODE -------------- +function nb(){} +function xb(){} +function Fd(){} +function Fy(){} +function fh(){} +function fq(){} +function Hq(){} +function Dl(){} +function Ns(){} +function Rw(){} +function bx(){} +function jx(){} +function kx(){} +function Vz(){} +function eA(){} +function lA(){} +function UA(){} +function XA(){} +function XB(){} +function bB(){} +function rdb(){} +function ndb(){} +function vdb(){} +function pnb(){} +function Qnb(){} +function Ynb(){} +function hob(){} +function pob(){} +function sqb(){} +function Bqb(){} +function Gqb(){} +function Uqb(){} +function qsb(){} +function xub(){} +function Cub(){} +function Eub(){} +function cxb(){} +function Kyb(){} +function KAb(){} +function wAb(){} +function MAb(){} +function OAb(){} +function QAb(){} +function SAb(){} +function Szb(){} +function $zb(){} +function $Cb(){} +function VCb(){} +function YCb(){} +function WAb(){} +function aDb(){} +function wDb(){} +function VDb(){} +function ZDb(){} +function NEb(){} +function QEb(){} +function QIb(){} +function MIb(){} +function OIb(){} +function SIb(){} +function SFb(){} +function mFb(){} +function EFb(){} +function JFb(){} +function NFb(){} +function bHb(){} +function fJb(){} +function jJb(){} +function kKb(){} +function mKb(){} +function oKb(){} +function yKb(){} +function mLb(){} +function oLb(){} +function CLb(){} +function GLb(){} +function fMb(){} +function CMb(){} +function HMb(){} +function LMb(){} +function TMb(){} +function VMb(){} +function pNb(){} +function bPb(){} +function IPb(){} +function NPb(){} +function IQb(){} +function eRb(){} +function wRb(){} +function zRb(){} +function CRb(){} +function MRb(){} +function eSb(){} +function wSb(){} +function BSb(){} +function rTb(){} +function yTb(){} +function CTb(){} +function GTb(){} +function KTb(){} +function OTb(){} +function KUb(){} +function jVb(){} +function uVb(){} +function yVb(){} +function CVb(){} +function MVb(){} +function wXb(){} +function AXb(){} +function $Yb(){} +function UZb(){} +function ZZb(){} +function b$b(){} +function f$b(){} +function j$b(){} +function n$b(){} +function W$b(){} +function Y$b(){} +function Y_b(){} +function c_b(){} +function g_b(){} +function k_b(){} +function P_b(){} +function R_b(){} +function T_b(){} +function b0b(){} +function e0b(){} +function m0b(){} +function q0b(){} +function t0b(){} +function v0b(){} +function x0b(){} +function J0b(){} +function N0b(){} +function R0b(){} +function V0b(){} +function i1b(){} +function n1b(){} +function p1b(){} +function r1b(){} +function t1b(){} +function v1b(){} +function I1b(){} +function K1b(){} +function M1b(){} +function O1b(){} +function Q1b(){} +function U1b(){} +function F2b(){} +function N2b(){} +function Q2b(){} +function W2b(){} +function i3b(){} +function l3b(){} +function q3b(){} +function w3b(){} +function I3b(){} +function J3b(){} +function M3b(){} +function U3b(){} +function X3b(){} +function Z3b(){} +function _3b(){} +function _5b(){} +function d4b(){} +function g4b(){} +function j4b(){} +function o4b(){} +function u4b(){} +function A4b(){} +function f6b(){} +function h6b(){} +function j6b(){} +function u6b(){} +function B6b(){} +function D6b(){} +function f7b(){} +function h7b(){} +function n7b(){} +function s7b(){} +function G7b(){} +function O7b(){} +function k8b(){} +function n8b(){} +function r8b(){} +function N8b(){} +function S8b(){} +function W8b(){} +function i9b(){} +function q9b(){} +function t9b(){} +function z9b(){} +function C9b(){} +function H9b(){} +function N9b(){} +function Q9b(){} +function S9b(){} +function U9b(){} +function Y9b(){} +function rac(){} +function tac(){} +function vac(){} +function zac(){} +function Dac(){} +function Jac(){} +function Mac(){} +function Sac(){} +function Uac(){} +function Wac(){} +function Yac(){} +function abc(){} +function fbc(){} +function ibc(){} +function kbc(){} +function mbc(){} +function obc(){} +function qbc(){} +function ubc(){} +function Bbc(){} +function Dbc(){} +function Fbc(){} +function Hbc(){} +function Obc(){} +function Qbc(){} +function Sbc(){} +function Ubc(){} +function Zbc(){} +function bcc(){} +function dcc(){} +function fcc(){} +function jcc(){} +function mcc(){} +function scc(){} +function Gcc(){} +function Occ(){} +function Scc(){} +function Ucc(){} +function $cc(){} +function cdc(){} +function gdc(){} +function idc(){} +function odc(){} +function sdc(){} +function udc(){} +function Adc(){} +function Edc(){} +function Gdc(){} +function Wdc(){} +function Bec(){} +function Dec(){} +function Fec(){} +function Hec(){} +function Jec(){} +function Lec(){} +function Nec(){} +function Vec(){} +function Xec(){} +function bfc(){} +function dfc(){} +function ffc(){} +function hfc(){} +function lfc(){} +function nfc(){} +function vfc(){} +function xfc(){} +function zfc(){} +function Ifc(){} +function qhc(){} +function uhc(){} +function pic(){} +function ric(){} +function tic(){} +function vic(){} +function Bic(){} +function Fic(){} +function Hic(){} +function Jic(){} +function Lic(){} +function Nic(){} +function Pic(){} +function Pjc(){} +function kjc(){} +function mjc(){} +function ojc(){} +function qjc(){} +function ujc(){} +function yjc(){} +function Cjc(){} +function Tjc(){} +function hkc(){} +function nkc(){} +function Ekc(){} +function Ikc(){} +function Kkc(){} +function Wkc(){} +function elc(){} +function rlc(){} +function tlc(){} +function vlc(){} +function Plc(){} +function Rlc(){} +function Zlc(){} +function tmc(){} +function vmc(){} +function xmc(){} +function Cmc(){} +function Emc(){} +function Smc(){} +function Umc(){} +function Wmc(){} +function anc(){} +function dnc(){} +function inc(){} +function cyc(){} +function UBc(){} +function UFc(){} +function yCc(){} +function fDc(){} +function lDc(){} +function lHc(){} +function bHc(){} +function nHc(){} +function rHc(){} +function JHc(){} +function sEc(){} +function sLc(){} +function cLc(){} +function gLc(){} +function qLc(){} +function uLc(){} +function yLc(){} +function ELc(){} +function ILc(){} +function KLc(){} +function MLc(){} +function OLc(){} +function SLc(){} +function WLc(){} +function _Lc(){} +function AJc(){} +function bMc(){} +function hMc(){} +function jMc(){} +function nMc(){} +function pMc(){} +function tMc(){} +function vMc(){} +function xMc(){} +function zMc(){} +function mNc(){} +function DNc(){} +function bOc(){} +function LOc(){} +function TOc(){} +function VOc(){} +function XOc(){} +function ZOc(){} +function _Oc(){} +function bPc(){} +function YPc(){} +function cQc(){} +function eQc(){} +function gQc(){} +function rQc(){} +function tQc(){} +function FRc(){} +function HRc(){} +function VRc(){} +function cSc(){} +function eSc(){} +function QSc(){} +function TSc(){} +function WSc(){} +function eTc(){} +function kTc(){} +function oTc(){} +function MTc(){} +function eUc(){} +function iUc(){} +function mUc(){} +function uUc(){} +function IUc(){} +function NUc(){} +function VUc(){} +function ZUc(){} +function _Uc(){} +function bVc(){} +function dVc(){} +function yVc(){} +function CVc(){} +function EVc(){} +function LVc(){} +function PVc(){} +function RVc(){} +function WVc(){} +function aWc(){} +function HXc(){} +function HZc(){} +function tZc(){} +function xZc(){} +function zZc(){} +function DZc(){} +function JZc(){} +function NZc(){} +function RZc(){} +function TZc(){} +function ZZc(){} +function wYc(){} +function yYc(){} +function AYc(){} +function GYc(){} +function KYc(){} +function b$c(){} +function f$c(){} +function l$c(){} +function p$c(){} +function t$c(){} +function x$c(){} +function H$c(){} +function L$c(){} +function s_c(){} +function v_c(){} +function W_c(){} +function __c(){} +function c0c(){} +function e0c(){} +function g0c(){} +function k0c(){} +function o0c(){} +function y1c(){} +function Z1c(){} +function a2c(){} +function d2c(){} +function h2c(){} +function p2c(){} +function L2c(){} +function O2c(){} +function c3c(){} +function f3c(){} +function i3c(){} +function n3c(){} +function H4c(){} +function P4c(){} +function R4c(){} +function W4c(){} +function Z4c(){} +function a5c(){} +function x5c(){} +function D5c(){} +function W5c(){} +function $5c(){} +function $8c(){} +function d6c(){} +function x7c(){} +function E9c(){} +function bad(){} +function zad(){} +function Had(){} +function Zad(){} +function _ad(){} +function bbd(){} +function nbd(){} +function Fbd(){} +function Jbd(){} +function Qbd(){} +function mcd(){} +function ocd(){} +function Icd(){} +function Mcd(){} +function Ycd(){} +function pdd(){} +function qdd(){} +function sdd(){} +function udd(){} +function wdd(){} +function ydd(){} +function Add(){} +function Cdd(){} +function Edd(){} +function Gdd(){} +function Idd(){} +function Kdd(){} +function Mdd(){} +function Odd(){} +function Qdd(){} +function Sdd(){} +function Udd(){} +function Wdd(){} +function Ydd(){} +function $dd(){} +function aed(){} +function Aed(){} +function Sgd(){} +function vkd(){} +function Fmd(){} +function wod(){} +function Zod(){} +function bpd(){} +function fpd(){} +function jpd(){} +function npd(){} +function Ypd(){} +function oqd(){} +function qqd(){} +function wqd(){} +function Bqd(){} +function Mqd(){} +function nrd(){} +function fsd(){} +function fwd(){} +function ywd(){} +function Ywd(){} +function evd(){} +function Rxd(){} +function ozd(){} +function gAd(){} +function IAd(){} +function $Fd(){} +function DGd(){} +function LGd(){} +function hJd(){} +function hOd(){} +function AOd(){} +function dNd(){} +function MQd(){} +function ZQd(){} +function iSd(){} +function TSd(){} +function nTd(){} +function UYd(){} +function XYd(){} +function $Yd(){} +function gZd(){} +function tZd(){} +function wZd(){} +function d_d(){} +function J3d(){} +function t4d(){} +function _5d(){} +function c6d(){} +function f6d(){} +function i6d(){} +function l6d(){} +function o6d(){} +function r6d(){} +function u6d(){} +function x6d(){} +function V7d(){} +function Z7d(){} +function K8d(){} +function a9d(){} +function c9d(){} +function f9d(){} +function i9d(){} +function l9d(){} +function o9d(){} +function r9d(){} +function u9d(){} +function x9d(){} +function A9d(){} +function D9d(){} +function G9d(){} +function J9d(){} +function M9d(){} +function P9d(){} +function S9d(){} +function V9d(){} +function Y9d(){} +function _9d(){} +function cae(){} +function fae(){} +function iae(){} +function lae(){} +function oae(){} +function rae(){} +function uae(){} +function xae(){} +function Aae(){} +function Dae(){} +function Gae(){} +function Jae(){} +function Mae(){} +function Pae(){} +function Sae(){} +function Vae(){} +function Yae(){} +function _ae(){} +function cbe(){} +function fbe(){} +function ibe(){} +function lbe(){} +function obe(){} +function rbe(){} +function ube(){} +function Fge(){} +function pie(){} +function ple(){} +function Cle(){} +function Ele(){} +function Hle(){} +function Kle(){} +function Nle(){} +function Qle(){} +function Tle(){} +function Wle(){} +function Zle(){} +function wke(){} +function ame(){} +function dme(){} +function gme(){} +function jme(){} +function mme(){} +function pme(){} +function sme(){} +function vme(){} +function yme(){} +function Bme(){} +function Eme(){} +function Hme(){} +function Kme(){} +function Nme(){} +function Qme(){} +function Tme(){} +function Wme(){} +function Zme(){} +function ane(){} +function dne(){} +function gne(){} +function jne(){} +function mne(){} +function pne(){} +function sne(){} +function vne(){} +function yne(){} +function Bne(){} +function Ene(){} +function Hne(){} +function Kne(){} +function Nne(){} +function Qne(){} +function Tne(){} +function Wne(){} +function Zne(){} +function aoe(){} +function doe(){} +function goe(){} +function joe(){} +function moe(){} +function poe(){} +function soe(){} +function Roe(){} +function qse(){} +function Cse(){} +function _Xb(a){} +function H1d(a){} +function xl(){wb()} +function oOb(){nOb()} +function _Ob(){ZOb()} +function qPb(){pPb()} +function GPb(){EPb()} +function G3b(){A3b()} +function t_b(){n_b()} +function f1b(){$0b()} +function s6b(){o6b()} +function Y6b(){G6b()} +function Y7b(){R7b()} +function lac(){gac()} +function bic(){Mhc()} +function bDc(){XCc()} +function dCc(){bCc()} +function uCc(){sCc()} +function wBc(){sBc()} +function oBc(){kBc()} +function FBc(){CBc()} +function ZBc(){WBc()} +function ZJc(){WJc()} +function aEc(){WDc()} +function ayc(){$xc()} +function Ckc(){qkc()} +function uDc(){qDc()} +function CDc(){yDc()} +function NDc(){HDc()} +function dvc(){cvc()} +function fGc(){bGc()} +function hYc(){bYc()} +function pYc(){lYc()} +function TYc(){NYc()} +function dZc(){XYc()} +function YWc(){XWc()} +function Y8c(){W8c()} +function _Hc(){ZHc()} +function $0c(){Z0c()} +function nKc(){dKc()} +function EMc(){CMc()} +function qOc(){nOc()} +function FXc(){DXc()} +function F4c(){D4c()} +function a4c(){_3c()} +function w1c(){u1c()} +function s9c(){r9c()} +function C9c(){A9c()} +function hcd(){gcd()} +function hjd(){gjd()} +function Qgd(){Ogd()} +function tkd(){rkd()} +function Dmd(){Bmd()} +function Fxd(){xxd()} +function FWd(){jWd()} +function dSd(){RRd()} +function eie(){pse()} +function axb(a){KDb(a)} +function Yb(a){this.a=a} +function cc(a){this.a=a} +function bf(a){this.a=a} +function hf(a){this.a=a} +function hh(a){this.a=a} +function rh(a){this.a=a} +function zh(a){this.a=a} +function Vh(a){this.a=a} +function Bi(a){this.a=a} +function Ii(a){this.a=a} +function ij(a){this.a=a} +function oj(a){this.a=a} +function Jj(a){this.a=a} +function yj(a){this.c=a} +function yq(a){this.a=a} +function cq(a){this.a=a} +function rq(a){this.a=a} +function Aq(a){this.a=a} +function Pq(a){this.a=a} +function Rq(a){this.a=a} +function Rn(a){this.a=a} +function Gk(a){this.a=a} +function Ok(a){this.a=a} +function hm(a){this.a=a} +function gp(a){this.a=a} +function Fp(a){this.a=a} +function Fr(a){this.a=a} +function Fw(a){this.a=a} +function cw(a){this.a=a} +function mw(a){this.a=a} +function mu(a){this.a=a} +function Zv(a){this.a=a} +function Zw(a){this.a=a} +function Aw(a){this.a=a} +function Kw(a){this.a=a} +function Yw(a){this.a=a} +function dx(a){this.a=a} +function hy(a){this.a=a} +function Hy(a){this.a=a} +function FB(a){this.a=a} +function PB(a){this.a=a} +function _B(a){this.a=a} +function nC(a){this.a=a} +function xs(a){this.b=a} +function EB(){this.a=[]} +function XCb(a,b){a.a=b} +function dYb(a,b){a.a=b} +function eYb(a,b){a.b=b} +function fYb(a,b){a.c=b} +function ANb(a,b){a.c=b} +function BNb(a,b){a.d=b} +function gYb(a,b){a.d=b} +function IYb(a,b){a.k=b} +function qHb(a,b){a.j=b} +function pZb(a,b){a.c=b} +function Sgc(a,b){a.c=b} +function Rgc(a,b){a.a=b} +function IFc(a,b){a.a=b} +function JFc(a,b){a.f=b} +function hPc(a,b){a.a=b} +function iPc(a,b){a.b=b} +function jPc(a,b){a.d=b} +function kPc(a,b){a.i=b} +function lPc(a,b){a.o=b} +function mPc(a,b){a.r=b} +function UQc(a,b){a.a=b} +function VQc(a,b){a.b=b} +function M_c(a,b){a.e=b} +function N_c(a,b){a.f=b} +function O_c(a,b){a.g=b} +function F6c(a,b){a.e=b} +function G6c(a,b){a.f=b} +function T6c(a,b){a.f=b} +function $qd(a,b){a.a=b} +function _qd(a,b){a.b=b} +function zUd(a,b){a.n=b} +function Yce(a,b){a.a=b} +function Zce(a,b){a.c=b} +function gde(a,b){a.c=b} +function Cde(a,b){a.c=b} +function fde(a,b){a.a=b} +function Bde(a,b){a.a=b} +function hde(a,b){a.d=b} +function Dde(a,b){a.d=b} +function ide(a,b){a.e=b} +function Ede(a,b){a.e=b} +function jde(a,b){a.g=b} +function Fde(a,b){a.f=b} +function Gde(a,b){a.j=b} +function uke(a,b){a.a=b} +function Dke(a,b){a.a=b} +function vke(a,b){a.b=b} +function fgc(a){a.b=a.a} +function Jg(a){a.c=a.d.d} +function cgb(a){this.a=a} +function ckb(a){this.a=a} +function ikb(a){this.a=a} +function ieb(a){this.a=a} +function $eb(a){this.a=a} +function ydb(a){this.a=a} +function Zdb(a){this.a=a} +function mfb(a){this.a=a} +function Gfb(a){this.a=a} +function tjb(a){this.a=a} +function tob(a){this.a=a} +function nkb(a){this.a=a} +function skb(a){this.a=a} +function _kb(a){this.a=a} +function Wkb(a){this.b=a} +function Eob(a){this.b=a} +function Vob(a){this.b=a} +function Kjb(a){this.d=a} +function Kqb(a){this.a=a} +function bqb(a){this.a=a} +function gqb(a){this.a=a} +function glb(a){this.a=a} +function mrb(a){this.a=a} +function hsb(a){this.a=a} +function Atb(a){this.a=a} +function Apb(a){this.c=a} +function Hmb(a){this.c=a} +function Dvb(a){this.c=a} +function ewb(a){this.a=a} +function gwb(a){this.a=a} +function iwb(a){this.a=a} +function kwb(a){this.a=a} +function Ezb(a){this.a=a} +function Ozb(a){this.a=a} +function Qzb(a){this.a=a} +function Uzb(a){this.a=a} +function rBb(a){this.a=a} +function tBb(a){this.a=a} +function vBb(a){this.a=a} +function KBb(a){this.a=a} +function oCb(a){this.a=a} +function qCb(a){this.a=a} +function uCb(a){this.a=a} +function cDb(a){this.a=a} +function gDb(a){this.a=a} +function XDb(a){this.a=a} +function bEb(a){this.a=a} +function gEb(a){this.a=a} +function kFb(a){this.a=a} +function hHb(a){this.a=a} +function pHb(a){this.a=a} +function MKb(a){this.a=a} +function VLb(a){this.a=a} +function hMb(a){this.a=a} +function fQb(a){this.a=a} +function tQb(a){this.a=a} +function vQb(a){this.a=a} +function GQb(a){this.a=a} +function KQb(a){this.a=a} +function lWb(a){this.a=a} +function SWb(a){this.a=a} +function uZb(a){this.a=a} +function xZb(a){this.a=a} +function CZb(a){this.a=a} +function FZb(a){this.a=a} +function $$b(a){this.a=a} +function a_b(a){this.a=a} +function e_b(a){this.a=a} +function i_b(a){this.a=a} +function w_b(a){this.a=a} +function y_b(a){this.a=a} +function A_b(a){this.a=a} +function C_b(a){this.a=a} +function T0b(a){this.a=a} +function X0b(a){this.a=a} +function S1b(a){this.a=a} +function r2b(a){this.a=a} +function x4b(a){this.a=a} +function D4b(a){this.a=a} +function G4b(a){this.a=a} +function J4b(a){this.a=a} +function j7b(a){this.a=a} +function l7b(a){this.a=a} +function Z8b(a){this.a=a} +function a9b(a){this.a=a} +function E9b(a){this.a=a} +function W9b(a){this.a=a} +function $9b(a){this.a=a} +function $ac(a){this.a=a} +function sbc(a){this.a=a} +function wbc(a){this.a=a} +function ucc(a){this.a=a} +function Kcc(a){this.a=a} +function Wcc(a){this.a=a} +function edc(a){this.a=a} +function Tdc(a){this.a=a} +function Ydc(a){this.a=a} +function Pec(a){this.a=a} +function Rec(a){this.a=a} +function Tec(a){this.a=a} +function Zec(a){this.a=a} +function _ec(a){this.a=a} +function jfc(a){this.a=a} +function pfc(a){this.a=a} +function rfc(a){this.a=a} +function Bfc(a){this.a=a} +function xic(a){this.a=a} +function zic(a){this.a=a} +function sjc(a){this.a=a} +function Zkc(a){this.a=a} +function _kc(a){this.a=a} +function Ymc(a){this.a=a} +function $mc(a){this.a=a} +function jmc(a){this.b=a} +function OCc(a){this.a=a} +function SCc(a){this.a=a} +function RDc(a){this.a=a} +function OEc(a){this.a=a} +function kFc(a){this.a=a} +function GFc(a){this.a=a} +function iFc(a){this.c=a} +function jGc(a){this.a=a} +function NGc(a){this.a=a} +function PGc(a){this.a=a} +function RGc(a){this.a=a} +function UHc(a){this.a=a} +function bJc(a){this.a=a} +function fJc(a){this.a=a} +function jJc(a){this.a=a} +function nJc(a){this.a=a} +function rJc(a){this.a=a} +function tJc(a){this.a=a} +function wJc(a){this.a=a} +function FJc(a){this.a=a} +function wLc(a){this.a=a} +function CLc(a){this.a=a} +function GLc(a){this.a=a} +function ULc(a){this.a=a} +function YLc(a){this.a=a} +function dMc(a){this.a=a} +function lMc(a){this.a=a} +function rMc(a){this.a=a} +function INc(a){this.a=a} +function TPc(a){this.a=a} +function YSc(a){this.a=a} +function $Sc(a){this.a=a} +function cTc(a){this.a=a} +function iTc(a){this.a=a} +function zTc(a){this.a=a} +function CTc(a){this.a=a} +function $Tc(a){this.a=a} +function qUc(a){this.a=a} +function sUc(a){this.a=a} +function wUc(a){this.a=a} +function yUc(a){this.a=a} +function AUc(a){this.a=a} +function EUc(a){this.a=a} +function EYc(a){this.a=a} +function CYc(a){this.a=a} +function j$c(a){this.a=a} +function z7c(a){this.a=a} +function B7c(a){this.a=a} +function D7c(a){this.a=a} +function F7c(a){this.a=a} +function L7c(a){this.a=a} +function ead(a){this.a=a} +function qad(a){this.a=a} +function sad(a){this.a=a} +function Hbd(a){this.a=a} +function Lbd(a){this.a=a} +function qcd(a){this.a=a} +function Cod(a){this.a=a} +function lpd(a){this.a=a} +function ppd(a){this.a=a} +function fqd(a){this.a=a} +function grd(a){this.a=a} +function Frd(a){this.a=a} +function $rd(a){this.f=a} +function iCd(a){this.a=a} +function ACd(a){this.a=a} +function CCd(a){this.a=a} +function ECd(a){this.a=a} +function GCd(a){this.a=a} +function ICd(a){this.a=a} +function KCd(a){this.a=a} +function MCd(a){this.a=a} +function OCd(a){this.a=a} +function QCd(a){this.a=a} +function YCd(a){this.a=a} +function aDd(a){this.a=a} +function cDd(a){this.a=a} +function eDd(a){this.a=a} +function gDd(a){this.a=a} +function iDd(a){this.a=a} +function kDd(a){this.a=a} +function sDd(a){this.a=a} +function yDd(a){this.a=a} +function ADd(a){this.a=a} +function CDd(a){this.a=a} +function EDd(a){this.a=a} +function GDd(a){this.a=a} +function QDd(a){this.a=a} +function SDd(a){this.a=a} +function UDd(a){this.a=a} +function WDd(a){this.a=a} +function yEd(a){this.a=a} +function SEd(a){this.a=a} +function nEd(a){this.b=a} +function ZMd(a){this.a=a} +function fNd(a){this.a=a} +function lNd(a){this.a=a} +function rNd(a){this.a=a} +function JNd(a){this.a=a} +function uYd(a){this.a=a} +function cZd(a){this.a=a} +function OZd(a){this.b=a} +function a_d(a){this.a=a} +function a0d(a){this.a=a} +function j3d(a){this.a=a} +function G7d(a){this.a=a} +function n8d(a){this.a=a} +function v8d(a){this.a=a} +function J4d(a){this.c=a} +function r5d(a){this.e=a} +function cXb(a){this.e=a} +function Xbe(a){this.a=a} +function Qbe(a){this.d=a} +function kce(a){this.a=a} +function she(a){this.a=a} +function zre(a){this.a=a} +function Uqe(a){this.e=a} +function iqd(){this.a=0} +function imb(){Wlb(this)} +function Yrb(){hjb(this)} +function sFb(){rFb(this)} +function hYb(){_Xb(this)} +function q0d(){this.c=b0d} +function fmc(a,b){a.b+=b} +function She(a,b){b.Wb(a)} +function LB(a){return a.a} +function TB(a){return a.a} +function fC(a){return a.a} +function tC(a){return a.a} +function MC(a){return a.a} +function Icb(a){return a.e} +function $B(){return null} +function EC(){return null} +function Ey(a){throw Icb(a)} +function xy(a){this.a=Qb(a)} +function P_d(){this.a=this} +function pz(){ez.call(this)} +function SJb(a){a.b.Mf(a.e)} +function _Tb(a){a.b=new Pi} +function g2b(a,b){a.b=b-a.b} +function d2b(a,b){a.a=b-a.a} +function k2c(a,b){b.gd(a.a)} +function Vic(a,b){rZb(b,a)} +function nDb(a,b){a.push(b)} +function rDb(a,b){a.sort(b)} +function np(a,b,c){a.Wd(c,b)} +function Js(a,b){a.e=b;b.b=a} +function sdb(){OGd();QGd()} +function $z(a){Zz();Yz.je(a)} +function Bdb(){pz.call(this)} +function Fdb(){pz.call(this)} +function Jdb(){ez.call(this)} +function Oeb(){pz.call(this)} +function Oqb(){pz.call(this)} +function Xqb(){pz.call(this)} +function gfb(){pz.call(this)} +function jfb(){pz.call(this)} +function Ufb(){pz.call(this)} +function qhb(){pz.call(this)} +function Hub(){pz.call(this)} +function obd(){pz.call(this)} +function i_d(){this.Bb|=256} +function WPb(){this.b=new vt} +function nA(){nA=ndb;new Yrb} +function qDb(a,b){a.length=b} +function hxb(a,b){Ylb(a.a,b)} +function LKb(a,b){lIb(a.c,b)} +function MNc(a,b){bsb(a.b,b)} +function cXd(a,b){zsd(a.e,b)} +function WMd(a,b){WLd(a.a,b)} +function XMd(a,b){XLd(a.a,b)} +function Aie(a){_de(a.c,a.b)} +function sj(a,b){a.kc().Nb(b)} +function _eb(a){this.a=efb(a)} +function esb(){this.a=new Yrb} +function dAb(){this.a=new Yrb} +function kxb(){this.a=new imb} +function cGb(){this.a=new imb} +function hGb(){this.a=new imb} +function IGb(){this.a=new eGb} +function Bzb(){this.a=new hyb} +function zEb(){this.a=new vEb} +function GEb(){this.a=new AEb} +function ZFb(){this.a=new SFb} +function hNb(){this.a=new TMb} +function MQb(){this.a=new qQb} +function dTb(){this.a=new imb} +function dVb(){this.a=new imb} +function iUb(){this.a=new imb} +function RUb(){this.a=new imb} +function yLb(){this.d=new imb} +function ZUb(){this.a=new esb} +function S$b(){this.a=new Yrb} +function dWb(){this.b=new Yrb} +function oDc(){this.b=new imb} +function tKc(){this.e=new imb} +function Qac(){this.a=new bic} +function oNc(){this.d=new imb} +function oYb(){hYb.call(this)} +function sYb(){oYb.call(this)} +function aZb(){hYb.call(this)} +function dZb(){aZb.call(this)} +function Ddb(){Bdb.call(this)} +function Jxb(){kxb.call(this)} +function HHb(){rHb.call(this)} +function mUb(){iUb.call(this)} +function pLc(){imb.call(this)} +function QNc(){PNc.call(this)} +function XNc(){PNc.call(this)} +function yQc(){wQc.call(this)} +function DQc(){wQc.call(this)} +function IQc(){wQc.call(this)} +function nad(){jad.call(this)} +function Hzd(){fwd.call(this)} +function Wzd(){fwd.call(this)} +function jgd(){aub.call(this)} +function LOd(){wOd.call(this)} +function kPd(){wOd.call(this)} +function KQd(){Yrb.call(this)} +function TQd(){Yrb.call(this)} +function cRd(){Yrb.call(this)} +function kVd(){FUd.call(this)} +function g_d(){esb.call(this)} +function y_d(){i_d.call(this)} +function o2d(){bUd.call(this)} +function M3d(){Yrb.call(this)} +function P3d(){bUd.call(this)} +function j8d(){Yrb.call(this)} +function A8d(){Yrb.call(this)} +function mke(){iSd.call(this)} +function Fke(){mke.call(this)} +function Lke(){iSd.call(this)} +function Epe(){Roe.call(this)} +function wQc(){this.a=new esb} +function JVc(){this.a=new Yrb} +function ZVc(){this.a=new imb} +function ubd(){this.j=new imb} +function jad(){this.a=new Yrb} +function _nd(){this.a=new aub} +function wOd(){this.a=new AOd} +function l2c(){this.a=new p2c} +function X7c(){this.a=new W7c} +function wb(){wb=ndb;vb=new xb} +function Uk(){Uk=ndb;Tk=new Vk} +function il(){il=ndb;hl=new jl} +function jl(){Ok.call(this,'')} +function Vk(){Ok.call(this,'')} +function Dd(a){yd.call(this,a)} +function Hd(a){yd.call(this,a)} +function vh(a){rh.call(this,a)} +function Yh(a){Wc.call(this,a)} +function Oi(a){Wc.call(this,a)} +function ui(a){Yh.call(this,a)} +function Mp(a){Yh.call(this,a)} +function As(a){Yh.call(this,a)} +function Dp(a){Ro.call(this,a)} +function Kp(a){Ro.call(this,a)} +function Zp(a){ao.call(this,a)} +function wv(a){lv.call(this,a)} +function Tv(a){Kr.call(this,a)} +function Vv(a){Kr.call(this,a)} +function Tw(a){Kr.call(this,a)} +function qz(a){fz.call(this,a)} +function UB(a){qz.call(this,a)} +function mC(){nC.call(this,{})} +function Sub(a){Oub();this.a=a} +function Pxb(a){a.b=null;a.c=0} +function cz(a,b){a.e=b;_y(a,b)} +function mSb(a,b){a.a=b;oSb(a)} +function EIb(a,b,c){a.a[b.g]=c} +function Mpd(a,b,c){Upd(c,a,b)} +function gbc(a,b){Wgc(b.i,a.n)} +function hyc(a,b){iyc(a).Ad(b)} +function _Nb(a,b){return a*a/b} +function bs(a,b){return a.g-b.g} +function pw(a,b){a.a.ec().Kc(b)} +function BC(a){return new _B(a)} +function DC(a){return new GC(a)} +function sz(){sz=ndb;rz=new nb} +function Sz(){Sz=ndb;Rz=new Vz} +function SA(){SA=ndb;RA=new UA} +function ns(){ns=ndb;ms=new os} +function WB(){WB=ndb;VB=new XB} +function KGc(a){oGc();this.a=a} +function Krd(a){wrd();this.f=a} +function Ird(a){wrd();this.f=a} +function Abe(a){MKd();this.a=a} +function Adb(a){qz.call(this,a)} +function Cdb(a){qz.call(this,a)} +function Gdb(a){qz.call(this,a)} +function Hdb(a){fz.call(this,a)} +function Peb(a){qz.call(this,a)} +function hfb(a){qz.call(this,a)} +function kfb(a){qz.call(this,a)} +function Tfb(a){qz.call(this,a)} +function Vfb(a){qz.call(this,a)} +function rhb(a){qz.call(this,a)} +function tnb(a){KDb(a);this.a=a} +function Umb(a){Zmb(a,a.length)} +function ZRb(a){TRb(a);return a} +function Zxb(a){return !!a&&a.b} +function IIb(a){return !!a&&a.k} +function JIb(a){return !!a&&a.j} +function ulb(a){return a.b==a.c} +function Odb(a){return KDb(a),a} +function Reb(a){return KDb(a),a} +function Teb(a){return KDb(a),a} +function zgb(a){return KDb(a),a} +function Jgb(a){return KDb(a),a} +function JAd(a){qz.call(this,a)} +function pbd(a){qz.call(this,a)} +function qbd(a){qz.call(this,a)} +function Kje(a){qz.call(this,a)} +function Joe(a){qz.call(this,a)} +function pc(a){qc.call(this,a,0)} +function Pi(){Qi.call(this,12,3)} +function Gb(){this.a=OD(Qb(pte))} +function jc(){throw Icb(new qhb)} +function Fh(){throw Icb(new qhb)} +function Vi(){throw Icb(new qhb)} +function Vj(){throw Icb(new qhb)} +function Wj(){throw Icb(new qhb)} +function dn(){throw Icb(new qhb)} +function Iz(){Iz=ndb;!!(Zz(),Yz)} +function Xgb(){ydb.call(this,'')} +function Ygb(){ydb.call(this,'')} +function ihb(){ydb.call(this,'')} +function jhb(){ydb.call(this,'')} +function lhb(a){Cdb.call(this,a)} +function Edb(a){Cdb.call(this,a)} +function agb(a){hfb.call(this,a)} +function Qpb(a){Eob.call(this,a)} +function Xpb(a){Qpb.call(this,a)} +function nqb(a){$ob.call(this,a)} +function eVb(a,b,c){a.c.Cf(b,c)} +function Jwb(a,b,c){b.Ad(a.a[c])} +function Owb(a,b,c){b.Ne(a.a[c])} +function Ydb(a,b){return a.a-b.a} +function heb(a,b){return a.a-b.a} +function bgb(a,b){return a.a-b.a} +function sDb(a,b){return XC(a,b)} +function OC(a,b){return Eeb(a,b)} +function hC(b,a){return a in b.a} +function Zub(a){return a.a?a.b:0} +function gvb(a){return a.a?a.b:0} +function gFb(a,b){a.f=b;return a} +function eFb(a,b){a.b=b;return a} +function fFb(a,b){a.c=b;return a} +function hFb(a,b){a.g=b;return a} +function $Gb(a,b){a.a=b;return a} +function _Gb(a,b){a.f=b;return a} +function bSb(a,b){a.f=b;return a} +function aSb(a,b){a.e=b;return a} +function aHb(a,b){a.k=b;return a} +function wLb(a,b){a.a=b;return a} +function xLb(a,b){a.e=b;return a} +function WHb(a,b){a.b=new Zfd(b)} +function Ks(a,b){a._d(b);b.$d(a)} +function zec(a,b){aec();b.n.a+=a} +function cic(a,b){Mhc();qZb(b,a)} +function cIc(a){HEc.call(this,a)} +function vHc(a){HEc.call(this,a)} +function YXb(){ZXb.call(this,'')} +function WPc(){this.b=0;this.a=0} +function Jsb(){Jsb=ndb;Isb=Lsb()} +function Dcd(a,b){a.b=b;return a} +function Ccd(a,b){a.a=b;return a} +function Ecd(a,b){a.c=b;return a} +function Fcd(a,b){a.d=b;return a} +function Gcd(a,b){a.e=b;return a} +function Hcd(a,b){a.f=b;return a} +function Vcd(a,b){a.a=b;return a} +function Wcd(a,b){a.b=b;return a} +function Xcd(a,b){a.c=b;return a} +function sed(a,b){a.c=b;return a} +function red(a,b){a.b=b;return a} +function ted(a,b){a.d=b;return a} +function ued(a,b){a.e=b;return a} +function ved(a,b){a.f=b;return a} +function wed(a,b){a.g=b;return a} +function xed(a,b){a.a=b;return a} +function yed(a,b){a.i=b;return a} +function zed(a,b){a.j=b;return a} +function Dbd(a,b){return b.pg(a)} +function qKc(a,b){return a.b-b.b} +function ePc(a,b){return a.g-b.g} +function QRc(a,b){return a.s-b.s} +function ogc(a,b){return a?0:b-1} +function vGc(a,b){return a?0:b-1} +function uGc(a,b){return a?b-1:0} +function Xnd(a,b){a.k=b;return a} +function Ynd(a,b){a.j=b;return a} +function Wfd(){this.a=0;this.b=0} +function kgd(a){bub.call(this,a)} +function iJd(a){_Fd.call(this,a)} +function ENd(a){yNd.call(this,a)} +function GNd(a){yNd.call(this,a)} +function msd(){msd=ndb;lsd=hzd()} +function ksd(){ksd=ndb;jsd=Vxd()} +function OGd(){OGd=ndb;NGd=gdd()} +function hRd(){hRd=ndb;gRd=O8d()} +function Mje(){Mje=ndb;Lje=tle()} +function Oje(){Oje=ndb;Nje=Ale()} +function teb(a){return a.e&&a.e()} +function Oc(a,b){return a.c._b(b)} +function yn(a,b){return Nv(a.b,b)} +function Ew(a,b){return zw(a.a,b)} +function jVd(a,b){a.b=0;_Td(a,b)} +function tde(a,b){a.c=b;a.b=true} +function Rgb(a,b){a.a+=b;return a} +function Sgb(a,b){a.a+=b;return a} +function Vgb(a,b){a.a+=b;return a} +function _gb(a,b){a.a+=b;return a} +function ueb(a){seb(a);return a.o} +function Ihb(a){Ahb();Chb(this,a)} +function dtb(){throw Icb(new qhb)} +function xob(){throw Icb(new qhb)} +function yob(){throw Icb(new qhb)} +function zob(){throw Icb(new qhb)} +function Cob(){throw Icb(new qhb)} +function Uob(){throw Icb(new qhb)} +function fsb(a){this.a=new Zrb(a)} +function Dzb(a){this.a=new iyb(a)} +function mwb(a,b){while(a.Pe(b));} +function dwb(a,b){while(a.zd(b));} +function K7c(a,b,c){I7c(a.a,b,c)} +function oDb(a,b,c){a.splice(b,c)} +function J9b(a,b){return K9b(b,a)} +function WIc(a,b){return a.d[b.p]} +function hub(a){return a.b!=a.d.c} +function xD(a){return a.l|a.m<<22} +function Vd(a){return !a?null:a.d} +function Mv(a){return !a?null:a.g} +function Rv(a){return !a?null:a.i} +function Yad(a,b){return Vad(a,b)} +function eCb(a){_Ab(a);return a.a} +function nIb(a){a.c?mIb(a):oIb(a)} +function nSc(){this.b=new Cbd(IZ)} +function H7c(){this.b=new Cbd(L0)} +function W7c(){this.b=new Cbd(L0)} +function b_c(){this.a=new Cbd(t_)} +function H2c(){this.a=new Cbd(W_)} +function n_c(a){this.a=0;this.b=a} +function nOd(){throw Icb(new qhb)} +function mOd(){throw Icb(new qhb)} +function oOd(){throw Icb(new qhb)} +function pOd(){throw Icb(new qhb)} +function qOd(){throw Icb(new qhb)} +function rOd(){throw Icb(new qhb)} +function sOd(){throw Icb(new qhb)} +function tOd(){throw Icb(new qhb)} +function uOd(){throw Icb(new qhb)} +function vOd(){throw Icb(new qhb)} +function zse(){throw Icb(new Hub)} +function Ase(){throw Icb(new Hub)} +function mse(a){this.a=new Bre(a)} +function me(a,b){this.e=a;this.d=b} +function Ff(a,b){this.b=a;this.c=b} +function Wc(a){Lb(a.dc());this.c=a} +function cg(a,b){xf.call(this,a,b)} +function eg(a,b){cg.call(this,a,b)} +function Lj(a,b){this.a=a;this.b=b} +function fk(a,b){this.a=a;this.b=b} +function lk(a,b){this.a=a;this.b=b} +function nk(a,b){this.a=a;this.b=b} +function vk(a,b){this.a=a;this.b=b} +function xk(a,b){this.a=a;this.b=b} +function Ik(a,b){this.a=a;this.b=b} +function Yo(a,b){this.b=a;this.a=b} +function wp(a,b){this.b=a;this.a=b} +function ap(a,b){this.g=a;this.i=b} +function Mq(a,b){this.a=a;this.b=b} +function hr(a,b){this.b=a;this.a=b} +function mr(a,b){this.a=a;this.b=b} +function Ir(a,b){this.b=a;this.a=b} +function Kr(a){this.b=JD(Qb(a),50)} +function pf(a){this.b=JD(Qb(a),92)} +function es(a,b){this.f=a;this.g=b} +function ju(a,b){this.a=a;this.b=b} +function yu(a,b){this.a=a;this.f=b} +function gv(a){this.a=JD(Qb(a),16)} +function lv(a){this.a=JD(Qb(a),16)} +function xv(a,b){this.b=a;this.c=b} +function ew(a){this.a=JD(Qb(a),92)} +function wx(a,b){this.a=a;this.b=b} +function ay(a,b){this.a=a;this.b=b} +function st(a,b){return _ib(a.b,b)} +function Rp(a,b){return a>b&&b0} +function Tcb(a,b){return Lcb(a,b)<0} +function Zqb(a,b){return Grb(a.a,b)} +function Idb(a,b){gz.call(this,a,b)} +function Ix(a){Hx();An.call(this,a)} +function Jx(a){Hx();Ix.call(this,a)} +function Mx(a){Lx();ao.call(this,a)} +function Smb(a,b){Wmb(a,a.length,b)} +function Tmb(a,b){Ymb(a,a.length,b)} +function Psb(a,b){return a.a.get(b)} +function gtb(a,b){return _ib(a.e,b)} +function bxb(a){return KDb(a),false} +function Nsb(){Jsb();return new Isb} +function Yub(a){IDb(a.a);return a.b} +function xrb(a,b){this.b=a;this.a=b} +function Ekb(a,b){this.d=a;this.e=b} +function zCb(a,b){this.a=a;this.b=b} +function FCb(a,b){this.a=a;this.b=b} +function LCb(a,b){this.a=a;this.b=b} +function RCb(a,b){this.a=a;this.b=b} +function eDb(a,b){this.b=a;this.a=b} +function hEb(a,b){this.a=a;this.b=b} +function hzb(a,b){es.call(this,a,b)} +function DAb(a,b){es.call(this,a,b)} +function AHb(a,b){es.call(this,a,b)} +function fIb(a,b){es.call(this,a,b)} +function YIb(a,b){es.call(this,a,b)} +function PLb(a,b){es.call(this,a,b)} +function cwb(a){Wvb.call(this,a,21)} +function cNb(a,b){this.b=a;this.a=b} +function IFb(a,b){this.b=a;this.a=b} +function GMb(a,b){this.b=a;this.a=b} +function tOb(a,b){es.call(this,a,b)} +function aQb(a,b){es.call(this,a,b)} +function UQb(a,b){es.call(this,a,b)} +function ASb(a,b){this.b=a;this.a=b} +function FSb(a,b){this.c=a;this.d=b} +function RSb(a,b){es.call(this,a,b)} +function uUb(a,b){es.call(this,a,b)} +function pXb(a,b){this.e=a;this.d=b} +function VYb(a,b){es.call(this,a,b)} +function KZb(a,b){this.a=a;this.b=b} +function w2b(a,b){es.call(this,a,b)} +function R5b(a,b){es.call(this,a,b)} +function e8b(a,b){es.call(this,a,b)} +function lDb(a,b,c){a.splice(b,0,c)} +function gr(a,b,c){a.Mb(c)&&b.Ad(c)} +function BCb(a,b,c){b.Ne(a.a.We(c))} +function HCb(a,b,c){b.Bd(a.a.Xe(c))} +function NCb(a,b,c){b.Ad(a.a.Kb(c))} +function FRb(a,b){return Hrb(a.c,b)} +function sEb(a,b){return Hrb(a.e,b)} +function Wbc(a,b){this.a=a;this.b=b} +function Mcc(a,b){this.a=a;this.b=b} +function kdc(a,b){this.a=a;this.b=b} +function mdc(a,b){this.a=a;this.b=b} +function wdc(a,b){this.a=a;this.b=b} +function Idc(a,b){this.a=a;this.b=b} +function tfc(a,b){this.a=a;this.b=b} +function Dfc(a,b){this.a=a;this.b=b} +function Ycc(a,b){this.b=a;this.a=b} +function ydc(a,b){this.b=a;this.a=b} +function jkc(a,b){this.b=a;this.a=b} +function rgc(a,b){this.b=b;this.c=a} +function ehc(a,b){es.call(this,a,b)} +function Chc(a,b){es.call(this,a,b)} +function Cnc(a,b){es.call(this,a,b)} +function unc(a,b){es.call(this,a,b)} +function Nnc(a,b){es.call(this,a,b)} +function Ync(a,b){es.call(this,a,b)} +function kic(a,b){es.call(this,a,b)} +function kpc(a,b){es.call(this,a,b)} +function wpc(a,b){es.call(this,a,b)} +function woc(a,b){es.call(this,a,b)} +function moc(a,b){es.call(this,a,b)} +function Foc(a,b){es.call(this,a,b)} +function Soc(a,b){es.call(this,a,b)} +function $oc(a,b){es.call(this,a,b)} +function Mpc(a,b){es.call(this,a,b)} +function Vpc(a,b){es.call(this,a,b)} +function cqc(a,b){es.call(this,a,b)} +function lqc(a,b){es.call(this,a,b)} +function tqc(a,b){es.call(this,a,b)} +function Rrc(a,b){es.call(this,a,b)} +function Zrc(a,b){es.call(this,a,b)} +function Dyc(a,b){es.call(this,a,b)} +function Pyc(a,b){es.call(this,a,b)} +function $yc(a,b){es.call(this,a,b)} +function lzc(a,b){es.call(this,a,b)} +function Dzc(a,b){es.call(this,a,b)} +function Nzc(a,b){es.call(this,a,b)} +function Vzc(a,b){es.call(this,a,b)} +function cAc(a,b){es.call(this,a,b)} +function lAc(a,b){es.call(this,a,b)} +function uAc(a,b){es.call(this,a,b)} +function OAc(a,b){es.call(this,a,b)} +function XAc(a,b){es.call(this,a,b)} +function eBc(a,b){es.call(this,a,b)} +function YGc(a,b){es.call(this,a,b)} +function yJc(a,b){this.b=a;this.a=b} +function PJc(a,b){es.call(this,a,b)} +function kLc(a,b){this.a=a;this.b=b} +function ALc(a,b){this.a=a;this.b=b} +function fMc(a,b){this.a=a;this.b=b} +function TMc(a,b){es.call(this,a,b)} +function _Mc(a,b){es.call(this,a,b)} +function gNc(a,b){this.a=a;this.b=b} +function _Ic(a,b){zIc();return b!=a} +function RRb(a){SRb(a,a.c);return a} +function Pz(a){$wnd.clearTimeout(a)} +function CPc(a,b){es.call(this,a,b)} +function ARc(a,b){es.call(this,a,b)} +function JRc(a,b){this.a=a;this.b=b} +function LRc(a,b){this.a=a;this.b=b} +function TNc(a,b){this.b=a;this.d=b} +function aTc(a,b){this.a=a;this.b=b} +function cUc(a,b){this.b=a;this.a=b} +function uSc(a,b){es.call(this,a,b)} +function rVc(a,b){es.call(this,a,b)} +function gWc(a,b){es.call(this,a,b)} +function PXc(a,b){es.call(this,a,b)} +function XXc(a,b){es.call(this,a,b)} +function XZc(a,b){this.b=a;this.a=b} +function VZc(a,b){this.b=a;this.a=b} +function z$c(a,b){this.b=a;this.a=b} +function B$c(a,b){this.b=a;this.a=b} +function V$c(a,b){es.call(this,a,b)} +function D_c(a,b){es.call(this,a,b)} +function u0c(a,b){es.call(this,a,b)} +function E0c(a,b){es.call(this,a,b)} +function H1c(a,b){es.call(this,a,b)} +function R1c(a,b){es.call(this,a,b)} +function C2c(a,b){es.call(this,a,b)} +function X2c(a,b){es.call(this,a,b)} +function F3c(a,b){es.call(this,a,b)} +function h5c(a,b){es.call(this,a,b)} +function L5c(a,b){es.call(this,a,b)} +function k6c(a,b){es.call(this,a,b)} +function a7c(a,b){es.call(this,a,b)} +function Q7c(a,b){es.call(this,a,b)} +function u8c(a,b){es.call(this,a,b)} +function F8c(a,b){es.call(this,a,b)} +function V9c(a,b){es.call(this,a,b)} +function U5c(a,b){this.a=a;this.b=b} +function dbd(a,b){this.a=a;this.b=b} +function Nbd(a,b){this.a=a;this.b=b} +function I8b(){y8b();this.a=new M_b} +function HOc(){zOc();this.a=new esb} +function wNc(){qNc();this.b=new esb} +function QBc(){JBc();MBc.call(this)} +function nCc(){hCc();jCc.call(this)} +function pCc(){hCc();jCc.call(this)} +function Hed(a,b){es.call(this,a,b)} +function Ved(a,b){es.call(this,a,b)} +function xgd(a,b){es.call(this,a,b)} +function ahd(a,b){es.call(this,a,b)} +function sjd(a,b){es.call(this,a,b)} +function Cjd(a,b){es.call(this,a,b)} +function Ljd(a,b){es.call(this,a,b)} +function Vjd(a,b){es.call(this,a,b)} +function fkd(a,b){es.call(this,a,b)} +function Ckd(a,b){es.call(this,a,b)} +function Nkd(a,b){es.call(this,a,b)} +function ald(a,b){es.call(this,a,b)} +function mld(a,b){es.call(this,a,b)} +function Ald(a,b){es.call(this,a,b)} +function Mld(a,b){es.call(this,a,b)} +function Mmd(a,b){es.call(this,a,b)} +function qmd(a,b){es.call(this,a,b)} +function Wmd(a,b){es.call(this,a,b)} +function jnd(a,b){es.call(this,a,b)} +function snd(a,b){es.call(this,a,b)} +function Cnd(a,b){es.call(this,a,b)} +function Uod(a,b){es.call(this,a,b)} +function Yfd(a,b){this.a=a;this.b=b} +function rpd(a,b){this.a=a;this.b=b} +function tpd(a,b){this.a=a;this.b=b} +function vpd(a,b){this.a=a;this.b=b} +function _pd(a,b){this.a=a;this.b=b} +function bqd(a,b){this.a=a;this.b=b} +function dqd(a,b){this.a=a;this.b=b} +function ard(a,b){this.a=a;this.b=b} +function eCd(a,b){this.a=a;this.b=b} +function gCd(a,b){this.a=a;this.b=b} +function kCd(a,b){this.a=a;this.b=b} +function mCd(a,b){this.a=a;this.b=b} +function sCd(a,b){this.a=a;this.b=b} +function uCd(a,b){this.a=a;this.b=b} +function wCd(a,b){this.b=a;this.a=b} +function yCd(a,b){this.b=a;this.a=b} +function SCd(a,b){this.b=a;this.a=b} +function UCd(a,b){this.b=a;this.a=b} +function WCd(a,b){this.a=a;this.b=b} +function $Cd(a,b){this.a=a;this.b=b} +function qDd(a,b){this.a=a;this.b=b} +function uDd(a,b){this.a=a;this.b=b} +function wGd(a,b){this.f=a;this.c=b} +function BLd(a,b){this.i=a;this.g=b} +function Hqd(a,b){es.call(this,a,b)} +function fEd(a,b){es.call(this,a,b)} +function IRd(a,b){this.a=a;this.b=b} +function LRd(a,b){this.a=a;this.b=b} +function iXd(a,b){this.d=a;this.e=b} +function z3d(a,b){this.a=a;this.b=b} +function X4d(a,b){this.a=a;this.b=b} +function $ce(a,b){this.d=a;this.b=b} +function ude(a,b){this.e=a;this.a=b} +function wUd(a,b){a.i=null;xUd(a,b)} +function KGd(a,b){!!a&&ejb(EGd,a,b)} +function INd(a,b){return SLd(a.a,b)} +function ucd(a,b){return Hrb(a.g,b)} +function Xkc(a,b){return Hrb(b.b,a)} +function oad(a,b){return -a.b.$e(b)} +function Bie(a){return nee(a.c,a.b)} +function ate(a,b){ete(new fKd(a),b)} +function DBd(a,b,c){wAd(b,aBd(a,c))} +function EBd(a,b,c){wAd(b,aBd(a,c))} +function vJc(a,b){aJc(a.a,JD(b,12))} +function zje(a,b){this.a=a;this.b=b} +function Cie(a,b){this.b=a;this.c=b} +function Nm(a,b){return a.Pd().Xb(b)} +function Wq(a,b){return qr(a.Jc(),b)} +function Wd(a){return !a?null:a.kd()} +function XD(a){return a==null?null:a} +function SD(a){return typeof a===hte} +function TD(a){return typeof a===ite} +function VD(a){return typeof a===jte} +function Ocb(a,b){return Lcb(a,b)==0} +function Rcb(a,b){return Lcb(a,b)>=0} +function Xcb(a,b){return Lcb(a,b)!=0} +function ahb(a,b){return a.a+=''+b,a} +function Web(a){return ''+(KDb(a),a)} +function ig(a){gg(a);return a.d.gc()} +function Pnb(a){JDb(a,0);return null} +function ZD(a){SDb(a==null);return a} +function Tgb(a,b){a.a+=''+b;return a} +function Ugb(a,b){a.a+=''+b;return a} +function bhb(a,b){a.a+=''+b;return a} +function dhb(a,b){a.a+=''+b;return a} +function ehb(a,b){a.a+=''+b;return a} +function kB(a,b){a.q.setTime(cdb(b))} +function twb(a,b){owb.call(this,a,b)} +function xwb(a,b){owb.call(this,a,b)} +function Bwb(a,b){owb.call(this,a,b)} +function Stb(a,b){Ttb(a,b,a.c.b,a.c)} +function Rtb(a,b){Ttb(a,b,a.a,a.a.a)} +function JKc(a,b){return a.j[b.p]==2} +function Ybd(a,b){a.a=b.g+1;return a} +function Pfd(a){a.a=0;a.b=0;return a} +function $rb(a){hjb(this);Ld(this,a)} +function _ub(){this.b=0;this.a=false} +function hvb(){this.b=0;this.a=false} +function vt(){this.b=new Zrb(Jv(12))} +function RJb(){RJb=ndb;QJb=gs(PJb())} +function W5b(){W5b=ndb;V5b=gs(U5b())} +function wVc(){wVc=ndb;vVc=gs(uVc())} +function OA(){OA=ndb;nA();NA=new Yrb} +function Yq(a){return Qb(a),new Bl(a)} +function mb(a,b){return XD(a)===XD(b)} +function sB(a){return a<10?'0'+a:''+a} +function $C(a){return _C(a.l,a.m,a.h)} +function Scb(a){return typeof a===ite} +function xdb(a,b){return Ggb(a.a,0,b)} +function Ueb(a){return YD((KDb(a),a))} +function Veb(a){return YD((KDb(a),a))} +function Zeb(a,b){return Xeb(a.a,b.a)} +function lfb(a,b){return ofb(a.a,b.a)} +function Ffb(a,b){return Hfb(a.a,b.a)} +function xgb(a,b){return a.indexOf(b)} +function enb(a,b){bnb(a,0,a.length,b)} +function PPd(a,b){NPd();ejb(MPd,a,b)} +function pEd(a,b){oEd.call(this,a,b)} +function ALd(a,b){cKd.call(this,a,b)} +function LYd(a,b){BLd.call(this,a,b)} +function Ufe(a,b){O0d.call(this,a,b)} +function Qfe(a,b){Nfe.call(this,a,b)} +function Mtb(){hsb.call(this,new ltb)} +function pYb(){iYb.call(this,0,0,0,0)} +function r$b(a){return bmb(a.b.b,a,0)} +function eJb(a,b){return ofb(a.g,b.g)} +function PSb(a){return a==KSb||a==NSb} +function QSb(a){return a==KSb||a==LSb} +function Ilc(a,b){return ofb(a.g,b.g)} +function vec(a,b){aec();return b.a+=a} +function xec(a,b){aec();return b.a+=a} +function wec(a,b){aec();return b.c+=a} +function Qad(a,b){Ylb(a.c,b);return a} +function Ixb(a,b){Ylb(a.a,b);return b} +function vbd(a,b){Wbd(a.a,b);return a} +function ysb(a){this.a=Nsb();this.b=a} +function Ssb(a){this.a=Nsb();this.b=a} +function Zfd(a){this.a=a.a;this.b=a.b} +function Bl(a){this.a=a;xl.call(this)} +function Hl(a){this.a=a;xl.call(this)} +function Vsd(a){return a.sh()&&a.th()} +function zld(a){return a!=vld&&a!=wld} +function pjd(a){return a==kjd||a==ljd} +function qjd(a){return a==njd||a==jjd} +function Zyc(a){return a==Vyc||a==Uyc} +function bcd(a){return Wbd(new acd,a)} +function Xpd(a){return rvd(JD(a,125))} +function h3c(a,b){return Xeb(b.f,a.f)} +function Wde(a,b){return new Nfe(b,a)} +function Xde(a,b){return new Nfe(b,a)} +function Kvd(a,b,c){Mvd(a,b);Nvd(a,c)} +function bvd(a,b,c){cvd(a,b);dvd(a,c)} +function Ivd(a,b,c){Lvd(a,b);Jvd(a,c)} +function Nwd(a,b,c){Owd(a,b);Pwd(a,c)} +function Uwd(a,b,c){Vwd(a,b);Wwd(a,c)} +function GVd(a,b){wVd(a,b);xVd(a,a.D)} +function BGd(a){wGd.call(this,a,true)} +function zfd(){Afd.call(this,0,0,0,0)} +function mzb(){hzb.call(this,'Head',1)} +function rzb(){hzb.call(this,'Tail',3)} +function bh(a,b,c){_g.call(this,a,b,c)} +function bZb(a){iYb.call(this,a,a,a,a)} +function lib(a){Whb();mib.call(this,a)} +function dHb(a){_lb(a.Qf(),new hHb(a))} +function Kub(a){return a!=null?tb(a):0} +function T$b(a,b){return PEd(b,Tzd(a))} +function U$b(a,b){return PEd(b,Tzd(a))} +function mBb(a,b){return a[a.length]=b} +function pBb(a,b){return a[a.length]=b} +function OAd(a,b){return fp(wo(a.f),b)} +function PAd(a,b){return fp(wo(a.n),b)} +function QAd(a,b){return fp(wo(a.p),b)} +function cr(a){return ur(a.b.Jc(),a.a)} +function cMd(a){return a==null?0:tb(a)} +function Wlb(a){a.c=SC(aJ,rte,1,0,5,1)} +function GAc(a,b,c){VC(a.c[b.g],b.g,c)} +function xTd(a,b,c){JD(a.c,72).Ei(b,c)} +function Npd(a,b,c){Kvd(c,c.i+a,c.j+b)} +function qEd(a,b){oEd.call(this,a.b,b)} +function q$d(a,b){YEd(rWd(a.a),t$d(b))} +function z2d(a,b){YEd(m2d(a.a),C2d(b))} +function rAb(a,b){if(iAb){return}a.b=b} +function NKd(a,b,c){VC(a,b,c);return c} +function Fbe(){Fbe=ndb;new Gbe;new imb} +function Gbe(){new Yrb;new Yrb;new Yrb} +function yse(){throw Icb(new rhb(XJe))} +function Nse(){throw Icb(new rhb(XJe))} +function Bse(){throw Icb(new rhb(YJe))} +function Qse(){throw Icb(new rhb(YJe))} +function _Nc(){_Nc=ndb;$Nc=new crb(y2)} +function Sy(){Sy=ndb;$wnd.Math.log(2)} +function q5d(){q5d=ndb;p5d=(YQd(),XQd)} +function gse(a){Tqe();Uqe.call(this,a)} +function Sg(a){this.a=a;Mg.call(this,a)} +function Ap(a){this.a=a;pf.call(this,a)} +function Hp(a){this.a=a;pf.call(this,a)} +function gmb(a,b){dnb(a.c,a.c.length,b)} +function Emb(a){return a.ab?1:0} +function Rfb(a,b){return Lcb(a,b)>0?a:b} +function _C(a,b,c){return {l:a,m:b,h:c}} +function Qub(a,b){a.a!=null&&vJc(b,a.a)} +function zbc(a){xWb(a,null);yWb(a,null)} +function nec(a,b,c){return ejb(a.g,c,b)} +function Hh(a,b){Qb(b);Gh(a).Ic(new bx)} +function EQb(){AQb();this.a=new Cbd(AO)} +function oEb(a){this.b=a;this.a=new imb} +function vMb(a){this.b=new HMb;this.a=a} +function ZXb(a){WXb.call(this);this.a=a} +function MNb(a){uNb.call(this);this.b=a} +function ozb(){hzb.call(this,'Range',2)} +function Yy(a){a.j=SC(dJ,Ote,324,0,0,1)} +function Ptb(a){a.a=new xub;a.c=new xub} +function xlc(a){a.a=new Yrb;a.e=new Yrb} +function vfd(a){return new Yfd(a.c,a.d)} +function wfd(a){return new Yfd(a.c,a.d)} +function Ifd(a){return new Yfd(a.a,a.b)} +function iad(a,b){return ejb(a.a,b.a,b)} +function FKc(a,b,c){return ejb(a.k,c,b)} +function DAc(a,b,c){return BAc(b,c,a.c)} +function $Ad(a,b){return MD(bjb(a.i,b))} +function _Ad(a,b){return MD(bjb(a.j,b))} +function $_d(a,b){return pA(a.a,b,null)} +function yie(a,b){return Rde(a.c,a.b,b)} +function RD(a,b){return a!=null&&ID(a,b)} +function fXd(a,b){uJd(a);a.Fc(JD(b,16))} +function QLd(a,b,c){a.c._c(b,JD(c,136))} +function gMd(a,b,c){a.c.Si(b,JD(c,136))} +function LKc(a,b,c){MKc(a,b,c);return c} +function _Kc(a,b){zKc();return b.n.b+=a} +function Xq(a,b){return Ar(a.Jc(),b)!=-1} +function Iv(a,b){return new Xv(a.Jc(),b)} +function yr(a){return a.Ob()?a.Pb():null} +function Ogb(a){return Pgb(a,0,a.length)} +function uPc(a){vPc(a,null);wPc(a,null)} +function Sfe(){O0d.call(this,null,null)} +function Wfe(){n1d.call(this,null,null)} +function os(){es.call(this,'INSTANCE',0)} +function Dlb(){this.a=SC(aJ,rte,1,8,5,1)} +function xie(a){this.a=a;Yrb.call(this)} +function ao(a){this.a=(Fnb(),new Qpb(a))} +function Vp(a){this.b=(Fnb(),new Apb(a))} +function Oub(){Oub=ndb;Nub=new Sub(null)} +function Xwb(){Xwb=ndb;Xwb();Wwb=new cxb} +function Ylb(a,b){nDb(a.c,b);return true} +function jtb(a,b){if(a.c){wtb(b);vtb(b)}} +function gB(a,b){a.q.setHours(b);eB(a,b)} +function dsb(a,b){return a.a.Ac(b)!=null} +function Azb(a,b){return a.a.Ac(b)!=null} +function uFc(a,b){return a.a[b.c.p][b.p]} +function FEc(a,b){return a.e[b.c.p][b.p]} +function YEc(a,b){return a.c[b.c.p][b.p]} +function QHb(a,b,c){return a.a[b.g][c.g]} +function IKc(a,b){return a.j[b.p]=WKc(b)} +function Kfd(a,b){return a.a*b.a+a.b*b.b} +function hqd(a,b){return a.a=a} +function CEc(a,b,c){return c?b!=0:b!=a-1} +function Qvb(a,b,c){a.a=b^1502;a.b=c^Mve} +function Sfd(a,b,c){a.a=b;a.b=c;return a} +function Qfd(a,b){a.a*=b;a.b*=b;return a} +function OFd(a,b,c){VC(a.g,b,c);return c} +function VHb(a,b,c,d){VC(a.a[b.g],c.g,d)} +function VXd(a,b,c){NXd.call(this,a,b,c)} +function ZXd(a,b,c){VXd.call(this,a,b,c)} +function gge(a,b,c){VXd.call(this,a,b,c)} +function jge(a,b,c){ZXd.call(this,a,b,c)} +function tge(a,b,c){NXd.call(this,a,b,c)} +function xge(a,b,c){NXd.call(this,a,b,c)} +function cge(a,b,c){Ide.call(this,a,b,c)} +function $fe(a,b,c){Ide.call(this,a,b,c)} +function ege(a,b,c){$fe.call(this,a,b,c)} +function Age(a,b,c){tge.call(this,a,b,c)} +function Rse(a){this.c=a;this.a=this.c.a} +function fKd(a){this.i=a;this.f=this.i.j} +function xf(a,b){this.a=a;pf.call(this,b)} +function gj(a,b){this.a=a;pc.call(this,b)} +function qj(a,b){this.a=a;pc.call(this,b)} +function Pj(a,b){this.a=a;pc.call(this,b)} +function Xj(a){this.a=a;yj.call(this,a.d)} +function Kg(a){a.b.Qb();--a.d.f.d;hg(a.d)} +function oLd(a){a.a=JD(fud(a.b.a,4),129)} +function wLd(a){a.a=JD(fud(a.b.a,4),129)} +function QEd(a){Mub(a,CGe);wwd(a,KEd(a))} +function Eb(a,b){return Db(a,new ihb,b).a} +function xr(a){return hub(a.a)?wr(a):null} +function bl(a){Ok.call(this,JD(Qb(a),35))} +function rl(a){Ok.call(this,JD(Qb(a),35))} +function Lb(a){if(!a){throw Icb(new gfb)}} +function Ub(a){if(!a){throw Icb(new jfb)}} +function Dr(a,b){Qb(b);return new Pr(a,b)} +function iu(a,b){return new Fu(a.a,a.b,b)} +function iD(a){return a.l+a.m*gve+a.h*hve} +function wz(a){return a==null?null:a.name} +function ygb(a,b,c){return a.indexOf(b,c)} +function Agb(a,b){return a.lastIndexOf(b)} +function Ngb(a){return a==null?vte:qdb(a)} +function Ndb(){Ndb=ndb;Ldb=false;Mdb=true} +function die(){die=ndb;Ege();cie=new eie} +function bUd(){this.Bb|=256;this.Bb|=512} +function ez(){Yy(this);$y(this);this.he()} +function $ob(a){Eob.call(this,a);this.a=a} +function npb(a){Vob.call(this,a);this.a=a} +function oqb(a){Qpb.call(this,a);this.a=a} +function Zgb(a){ydb.call(this,(KDb(a),a))} +function khb(a){ydb.call(this,(KDb(a),a))} +function Ntb(a){hsb.call(this,new mtb(a))} +function Hyb(a){this.a=a;Wkb.call(this,a)} +function Jl(a,b){this.a=b;pc.call(this,a)} +function Wo(a,b){this.a=b;Ro.call(this,a)} +function up(a,b){this.a=a;Ro.call(this,b)} +function Pr(a,b){this.a=b;Kr.call(this,a)} +function Xv(a,b){this.a=b;Kr.call(this,a)} +function Czb(a){Bzb.call(this);xe(this,a)} +function Pub(a){IDb(a.a!=null);return a.a} +function wEb(a,b){Ylb(b.a,a.a);return a.a} +function CEb(a,b){Ylb(b.b,a.a);return a.a} +function GGb(a,b){Ylb(b.a,a.a);return a.a} +function hhb(a,b,c){wdb(a,b,b,c);return a} +function fGb(a,b){++a.b;return Ylb(a.a,b)} +function gGb(a,b){++a.b;return dmb(a.a,b)} +function nLb(a,b){return Xeb(a.c.d,b.c.d)} +function zLb(a,b){return Xeb(a.c.c,b.c.c)} +function k3b(a,b){return Xeb(a.n.a,b.n.a)} +function aUb(a,b){return JD(Qc(a.b,b),16)} +function p4b(a,b){return a.n.b=(KDb(b),b)} +function q4b(a,b){return a.n.b=(KDb(b),b)} +function Hrb(a,b){return !!b&&a.b[b.g]==b} +function NZb(a){return Emb(a.a)||Emb(a.b)} +function QTc(a,b){return Xeb(a.e.b,b.e.b)} +function YTc(a,b){return Xeb(a.e.a,b.e.a)} +function zAc(a,b,c){return AAc(a,b,c,a.b)} +function CAc(a,b,c){return AAc(a,b,c,a.c)} +function yec(a){aec();return !!a&&!a.dc()} +function Ndc(){Ldc();this.b=new Tdc(this)} +function VKb(){VKb=ndb;UKb=new oEd(Pwe,0)} +function oKd(a){this.d=a;fKd.call(this,a)} +function AKd(a){this.c=a;fKd.call(this,a)} +function DKd(a){this.c=a;oKd.call(this,a)} +function hRb(a,b){iRb.call(this,a,b,null)} +function Rub(a){return a.a!=null?a.a:null} +function ADb(a){return a.$H||(a.$H=++yDb)} +function k2b(a){var b;b=a.a;a.a=a.b;a.b=b} +function O0d(a,b){L0d();this.a=a;this.b=b} +function n1d(a,b){h1d();this.b=a;this.c=b} +function Ord(a,b){wrd();this.f=b;this.d=a} +function qc(a,b){Sb(b,a);this.c=a;this.b=b} +function xj(a,b){return cn(a.c).Kd().Xb(b)} +function rm(a,b){return new _p(a,a.gc(),b)} +function ts(a){ns();return ks((ws(),vs),a)} +function Xqe(a){++Sqe;return new Ire(3,a)} +function Xu(a){bk(a,jue);return new jmb(a)} +function bA(a){Zz();return parseInt(a)||-1} +function wgb(a,b,c){return ygb(a,Mgb(b),c)} +function _bd(a,b,c){JD(sbd(a,b),22).Ec(c)} +function YMd(a,b,c){XLd(a.a,c);WLd(a.a,b)} +function $t(a,b,c){var d;d=a.dd(b);d.Rb(c)} +function Ig(a,b,c,d){wg.call(this,a,b,c,d)} +function xtb(a){ytb.call(this,a,null,null)} +function avb(a){Xub();this.b=a;this.a=true} +function ivb(a){fvb();this.b=a;this.a=true} +function Glb(a){if(!a){throw Icb(new Oqb)}} +function BDb(a){if(!a){throw Icb(new gfb)}} +function FDb(a){if(!a){throw Icb(new Fdb)}} +function IDb(a){if(!a){throw Icb(new Hub)}} +function ODb(a){if(!a){throw Icb(new jfb)}} +function etb(a){a.d=new xtb(a);a.e=new Yrb} +function Utb(a){IDb(a.b!=0);return a.a.a.c} +function Vtb(a){IDb(a.b!=0);return a.c.b.c} +function Wgb(a,b){wdb(a,b,b+1,'');return a} +function bUb(a){$Tb();_Tb(this);this.Df(a)} +function ggc(a){this.c=a;this.a=1;this.b=1} +function hxd(a){RD(a,161)&&JD(a,161).mi()} +function zyb(a){return a.b=JD(Ijb(a.a),45)} +function G_b(a,b){return JD(htb(a.a,b),35)} +function mNb(a,b){return !!a.q&&_ib(a.q,b)} +function ZNb(a,b){return a>0?b/(a*a):b*100} +function eOb(a,b){return a>0?b*b/a:b*b*100} +function cs(a){return a.f!=null?a.f:''+a.g} +function ds(a){return a.f!=null?a.f:''+a.g} +function fZc(a){XYc();return a.e.a+a.f.a/2} +function pZc(a){XYc();return a.e.b+a.f.b/2} +function rZc(a,b,c){XYc();return c.e.b-a*b} +function hZc(a,b,c){XYc();return c.e.a-a*b} +function nyc(a,b,c){gyc();return c.Lg(a,b)} +function dic(a,b){Mhc();return Rc(a,b.e,b)} +function xbd(a,b,c){return Ylb(b,zbd(a,c))} +function kcd(a,b,c){gcd();a.nf(b)&&c.Ad(a)} +function Ffd(a,b,c){a.a+=b;a.b+=c;return a} +function Ufd(a,b,c){a.a-=b;a.b-=c;return a} +function Tfd(a,b){a.a=b.a;a.b=b.b;return a} +function Nfd(a){a.a=-a.a;a.b=-a.b;return a} +function Nod(a){this.c=a;Mvd(a,0);Nvd(a,0)} +function lgd(a){aub.call(this);egd(this,a)} +function k8c(){es.call(this,'GROW_TREE',0)} +function QTd(a,b,c){BTd.call(this,a,b,c,2)} +function D1d(a,b){h1d();B1d.call(this,a,b)} +function B1d(a,b){h1d();n1d.call(this,a,b)} +function F1d(a,b){h1d();n1d.call(this,a,b)} +function c1d(a,b){L0d();O0d.call(this,a,b)} +function X6d(a,b){q5d();L6d.call(this,a,b)} +function Z6d(a,b){q5d();X6d.call(this,a,b)} +function _6d(a,b){q5d();X6d.call(this,a,b)} +function b7d(a,b){q5d();_6d.call(this,a,b)} +function l7d(a,b){q5d();L6d.call(this,a,b)} +function n7d(a,b){q5d();l7d.call(this,a,b)} +function t7d(a,b){q5d();L6d.call(this,a,b)} +function RLd(a,b){return a.c.Ec(JD(b,136))} +function RAd(a,b){return JD(bjb(a.e,b),26)} +function SAd(a,b){return JD(bjb(a.e,b),26)} +function Uce(a,b,c){return rde(Nce(a,b),c)} +function jee(a,b,c){return b.xl(a.e,a.c,c)} +function lee(a,b,c){return b.yl(a.e,a.c,c)} +function yee(a,b){return ctd(a.e,JD(b,52))} +function p$d(a,b,c){XEd(rWd(a.a),b,t$d(c))} +function y2d(a,b,c){XEd(m2d(a.a),b,C2d(c))} +function sse(a,b){return (KDb(a),a)+Xdb(b)} +function ele(a){return a==null?null:qdb(a)} +function fle(a){return a==null?null:qdb(a)} +function ble(a){return a==null?null:Goe(a)} +function Zke(a){return a==null?null:zoe(a)} +function seb(a){if(a.o!=null){return}Ieb(a)} +function LD(a){SDb(a==null||SD(a));return a} +function MD(a){SDb(a==null||TD(a));return a} +function OD(a){SDb(a==null||VD(a));return a} +function rn(a,b){return ak(a,b),new ry(a,b)} +function Kf(a,b){this.c=a;me.call(this,a,b)} +function Sf(a,b){this.a=a;Kf.call(this,a,b)} +function Ng(a,b){this.d=a;Jg(this);this.b=b} +function b4d(){FUd.call(this);this.Bb|=tve} +function T_c(){this.a=new Np;this.b=new Np} +function oB(a){this.q=new $wnd.Date(cdb(a))} +function Q$c(){Q$c=ndb;P$c=new nEd('root')} +function jOd(){jOd=ndb;iOd=new LOd;new kPd} +function rKb(){rKb=ndb;qKb=Crb((Vmd(),Umd))} +function xMb(a,b){b.a?yMb(a,b):Azb(a.a,b.b)} +function nAb(a,b){if(iAb){return}Ylb(a.a,b)} +function v_b(a,b){n_b();return OXb(b.d.i,a)} +function Z6b(a,b){G6b();return new e7b(b,a)} +function Mzb(a,b,c){return a.Le(b,c)<=0?c:b} +function Nzb(a,b,c){return a.Le(b,c)<=0?b:c} +function $cd(a,b){return JD(htb(a.b,b),144)} +function bdd(a,b){return JD(htb(a.c,b),233)} +function _fc(a){return JD(amb(a.a,a.b),295)} +function sfd(a){return new Yfd(a.c,a.d+a.a)} +function Qdb(a){return (KDb(a),a)?1231:1237} +function $Lc(a){return zKc(),Zyc(JD(a,203))} +function ZAd(a,b){return JD(bjb(a.b,b),278)} +function aHd(a,b,c){++a.j;a.oj(b,a.Xi(b,c))} +function cHd(a,b,c){++a.j;a.rj();aFd(a,b,c)} +function _g(a,b,c){jg.call(this,a,b,c,null)} +function dh(a,b,c){jg.call(this,a,b,c,null)} +function kBb(a,b){bBb.call(this,a);this.a=b} +function EBb(a,b){bBb.call(this,a);this.a=b} +function oEd(a,b){nEd.call(this,a);this.a=b} +function S4d(a,b){J4d.call(this,a);this.a=b} +function Q7d(a,b){J4d.call(this,a);this.a=b} +function _Jd(a,b){this.c=a;_Fd.call(this,b)} +function u$d(a,b){this.a=a;OZd.call(this,b)} +function D2d(a,b){this.a=a;OZd.call(this,b)} +function pwd(a,b,c){c=Gsd(a,b,3,c);return c} +function Iwd(a,b,c){c=Gsd(a,b,6,c);return c} +function Rzd(a,b,c){c=Gsd(a,b,9,c);return c} +function sIb(a,b){Mub(b,Hwe);a.f=b;return a} +function dMd(a,b){return (b<e)%a.d.length} +function zie(a,b,c){return $de(a.c,a.b,b,c)} +function Jz(a,b,c){return a.apply(b,c);var d} +function z0d(a,b,c){var d;d=a.dd(b);d.Rb(c)} +function ghb(a,b,c){a.a+=Pgb(b,0,c);return a} +function TA(a){!a.a&&(a.a=new bB);return a.a} +function xkb(a,b){var c;c=a.e;a.e=b;return c} +function Jkb(a,b){var c;c=b;return !!a.De(c)} +function Rdb(a,b){Ndb();return a==b?0:a?1:-1} +function Pjb(a,b){a.a._c(a.b,b);++a.b;a.c=-1} +function Gsb(a,b){var c;c=a[Jve];c.call(a,b)} +function Hsb(a,b){var c;c=a[Jve];c.call(a,b)} +function jCb(a,b,c){NBb();XCb(a,b.Te(a.a,c))} +function arb(a,b,c){return _qb(a,JD(b,23),c)} +function kDb(a,b){return sDb(new Array(b),a)} +function Mfb(a){return ddb(_cb(a,32))^ddb(a)} +function PD(a){return String.fromCharCode(a)} +function vz(a){return a==null?null:a.message} +function vy(a){this.a=(Fnb(),new tob(Qb(a)))} +function bq(a){this.a=(bk(a,jue),new jmb(a))} +function iq(a){this.a=(bk(a,jue),new jmb(a))} +function DNb(){this.a=new imb;this.b=new imb} +function LPb(){this.a=new TMb;this.b=new WPb} +function M_b(){this.b=new ltb;this.a=new ltb} +function AEb(){this.b=new Wfd;this.c=new imb} +function WXb(){this.n=new Wfd;this.o=new Wfd} +function rHb(){this.n=new aZb;this.i=new zfd} +function oEc(){this.b=new esb;this.a=new esb} +function HJc(){this.a=new imb;this.d=new imb} +function Mbc(){this.a=new Ckc;this.b=new Wkc} +function BSc(){this.b=new nSc;this.a=new cSc} +function RUc(){this.b=new Yrb;this.a=new Yrb} +function tHb(){rHb.call(this);this.a=new Wfd} +function qYb(a,b,c,d){iYb.call(this,a,b,c,d)} +function r4b(a,b){return a.n.a=(KDb(b),b)+10} +function s4b(a,b){return a.n.a=(KDb(b),b)+10} +function u_b(a,b){n_b();return !OXb(b.d.i,a)} +function ftb(a){hjb(a.e);a.d.b=a.d;a.d.a=a.d} +function fg(a){a.b?fg(a.b):a.f.c.yc(a.e,a.d)} +function Wgc(a,b){pjd(a.f)?Xgc(a,b):Ygc(a,b)} +function jBd(a,b,c){c!=null&&Rwd(b,QBd(a,c))} +function kBd(a,b,c){c!=null&&Swd(b,QBd(a,c))} +function E3d(a,b,c,d){A3d.call(this,a,b,c,d)} +function mge(a,b,c,d){A3d.call(this,a,b,c,d)} +function qge(a,b,c,d){mge.call(this,a,b,c,d)} +function Lge(a,b,c,d){Gge.call(this,a,b,c,d)} +function Nge(a,b,c,d){Gge.call(this,a,b,c,d)} +function Rge(a,b,c,d){Nge.call(this,a,b,c,d)} +function Tge(a,b,c,d){Gge.call(this,a,b,c,d)} +function Wge(a,b,c,d){Tge.call(this,a,b,c,d)} +function Yge(a,b,c,d){Nge.call(this,a,b,c,d)} +function _ge(a,b,c,d){Yge.call(this,a,b,c,d)} +function Bhe(a,b,c,d){uhe.call(this,a,b,c,d)} +function cKd(a,b){Cdb.call(this,BHe+a+HGe+b)} +function BWd(a,b){return b==a||RFd(qWd(b),a)} +function Fhe(a,b){return a.hk().ti().oi(a,b)} +function Ghe(a,b){return a.hk().ti().qi(a,b)} +function zk(a,b){return a.e=JD(a.d.Kb(b),162)} +function l8d(a,b){return ejb(a.a,b,'')==null} +function Seb(a,b){return KDb(a),XD(a)===XD(b)} +function sgb(a,b){return KDb(a),XD(a)===XD(b)} +function Bgb(a,b,c){return a.lastIndexOf(b,c)} +function _p(a,b,c){this.a=a;qc.call(this,b,c)} +function mCb(a){this.c=a;Bwb.call(this,Tte,0)} +function pk(a,b,c){this.c=b;this.b=c;this.a=a} +function Gfd(a,b){a.a+=b.a;a.b+=b.b;return a} +function Vfd(a,b){a.a-=b.a;a.b-=b.b;return a} +function $bd(a){qDb(a.j.c,0);a.a=-1;return a} +function Fce(a,b){var c;c=b.ni(a.a);return c} +function yzd(a,b,c){c=Gsd(a,b,11,c);return c} +function XPb(a,b,c){return Xeb(a[b.a],a[c.a])} +function Njc(a,b){return ofb(a.a.d.p,b.a.d.p)} +function Ojc(a,b){return ofb(b.a.d.p,a.a.d.p)} +function VPc(a,b){return Xeb(a.c-a.s,b.c-b.s)} +function MSc(a,b){return Xeb(a.b.e.a,b.b.e.a)} +function OSc(a,b){return Xeb(a.c.e.a,b.c.e.a)} +function sQb(a,b){return oNb(b,($xc(),Evc),a)} +function CCb(a,b){return a.b.zd(new FCb(a,b))} +function ICb(a,b){return a.b.zd(new LCb(a,b))} +function OCb(a,b){return a.b.zd(new RCb(a,b))} +function _Ld(a,b){return RD(b,16)&&bFd(a.c,b)} +function zYb(a){return !a.c?-1:bmb(a.c.a,a,0)} +function vJd(a){return a<100?null:new iJd(a)} +function yld(a){return a==rld||a==tld||a==sld} +function yTd(a,b,c){return JD(a.c,72).Uk(b,c)} +function zTd(a,b,c){return JD(a.c,72).Vk(b,c)} +function kee(a,b,c){return jee(a,JD(b,344),c)} +function mee(a,b,c){return lee(a,JD(b,344),c)} +function Gee(a,b,c){return Fee(a,JD(b,344),c)} +function Iee(a,b,c){return Hee(a,JD(b,344),c)} +function zn(a,b){return b==null?null:Ov(a.b,b)} +function sAb(a,b){if(iAb){return}!!b&&(a.d=b)} +function Mb(a,b){if(!a){throw Icb(new hfb(b))}} +function Vb(a){if(!a){throw Icb(new kfb(tte))}} +function Xdb(a){return TD(a)?(KDb(a),a):a.se()} +function Yeb(a){return !isNaN(a)&&!isFinite(a)} +function bub(a){Ptb(this);_tb(this);xe(this,a)} +function kmb(a){Wlb(this);mDb(this.c,0,a.Nc())} +function ZIc(a){zIc();this.d=a;this.a=new Dlb} +function lub(a,b,c){this.d=a;this.b=c;this.a=b} +function Krb(a,b,c){this.a=a;this.b=b;this.c=c} +function $sb(a,b,c){this.a=a;this.b=b;this.c=c} +function EKd(a,b){this.c=a;pKd.call(this,a,b)} +function Pwb(a,b){Qwb.call(this,a,a.length,b)} +function HDb(a,b){if(a!=b){throw Icb(new Oqb)}} +function fAb(a){this.a=a;nhb();Pcb(Date.now())} +function Ayb(a){Jjb(a.a);ayb(a.c,a.b);a.b=null} +function Bub(){Bub=ndb;zub=new Cub;Aub=new Eub} +function cHb(a){var b;b=new bHb;b.e=a;return b} +function iCb(a,b,c){NBb();a.a.Wd(b,c);return b} +function FKb(a,b,c){this.b=a;this.c=b;this.a=c} +function BLb(a){var b;b=new yLb;b.b=a;return b} +function BHb(a){zHb();return ks((EHb(),DHb),a)} +function kzb(a){gzb();return ks((uzb(),tzb),a)} +function EAb(a){CAb();return ks((HAb(),GAb),a)} +function gIb(a){eIb();return ks((jIb(),iIb),a)} +function ZIb(a){XIb();return ks((aJb(),_Ib),a)} +function OJb(a){JJb();return ks((RJb(),QJb),a)} +function QLb(a){OLb();return ks((TLb(),SLb),a)} +function USb(a){OSb();return ks((XSb(),WSb),a)} +function uOb(a){sOb();return ks((xOb(),wOb),a)} +function bQb(a){_Pb();return ks((eQb(),dQb),a)} +function VQb(a){TQb();return ks((YQb(),XQb),a)} +function vUb(a){tUb();return ks((yUb(),xUb),a)} +function WYb(a){UYb();return ks((ZYb(),YYb),a)} +function x2b(a){v2b();return ks((A2b(),z2b),a)} +function rYb(a){iYb.call(this,a.d,a.c,a.a,a.b)} +function cZb(a){iYb.call(this,a.d,a.c,a.a,a.b)} +function T5b(a){Q5b();return ks((W5b(),V5b),a)} +function MKd(){MKd=ndb;LKd=SC(aJ,rte,1,0,5,1)} +function RRd(){RRd=ndb;QRd=SC(aJ,rte,1,0,5,1)} +function wSd(){wSd=ndb;vSd=SC(aJ,rte,1,0,5,1)} +function A3b(){A3b=ndb;y3b=new J3b;z3b=new M3b} +function y8b(){y8b=ndb;x8b=new N8b;w8b=new S8b} +function aec(){aec=ndb;$dc=new Dec;_dc=new Fec} +function lic(a){jic();return ks((oic(),nic),a)} +function fhc(a){dhc();return ks((ihc(),hhc),a)} +function Ehc(a){Bhc();return ks((Hhc(),Ghc),a)} +function gjc(a){ejc();return ks((jjc(),ijc),a)} +function vnc(a){tnc();return ks((ync(),xnc),a)} +function Dnc(a){Bnc();return ks((Gnc(),Fnc),a)} +function Qnc(a){Lnc();return ks((Tnc(),Snc),a)} +function Znc(a){Xnc();return ks((aoc(),_nc),a)} +function poc(a){koc();return ks((soc(),roc),a)} +function xoc(a){voc();return ks((Aoc(),zoc),a)} +function Goc(a){Eoc();return ks((Joc(),Ioc),a)} +function Toc(a){Qoc();return ks((Woc(),Voc),a)} +function _oc(a){Zoc();return ks((cpc(),bpc),a)} +function lpc(a){jpc();return ks((opc(),npc),a)} +function xpc(a){vpc();return ks((Apc(),zpc),a)} +function Npc(a){Lpc();return ks((Qpc(),Ppc),a)} +function Wpc(a){Upc();return ks((Zpc(),Ypc),a)} +function dqc(a){bqc();return ks((gqc(),fqc),a)} +function mqc(a){kqc();return ks((pqc(),oqc),a)} +function uqc(a){sqc();return ks((xqc(),wqc),a)} +function Src(a){Qrc();return ks((Vrc(),Urc),a)} +function $rc(a){Yrc();return ks((bsc(),asc),a)} +function Gyc(a){Byc();return ks((Jyc(),Iyc),a)} +function Qyc(a){Nyc();return ks((Tyc(),Syc),a)} +function azc(a){Yyc();return ks((dzc(),czc),a)} +function ozc(a){jzc();return ks((rzc(),qzc),a)} +function Ezc(a){Czc();return ks((Hzc(),Gzc),a)} +function Ozc(a){Mzc();return ks((Rzc(),Qzc),a)} +function Wzc(a){Uzc();return ks((Zzc(),Yzc),a)} +function dAc(a){bAc();return ks((gAc(),fAc),a)} +function mAc(a){kAc();return ks((pAc(),oAc),a)} +function vAc(a){tAc();return ks((yAc(),xAc),a)} +function PAc(a){NAc();return ks((SAc(),RAc),a)} +function YAc(a){WAc();return ks((_Ac(),$Ac),a)} +function fBc(a){dBc();return ks((iBc(),hBc),a)} +function f8b(a){c8b();return ks((i8b(),h8b),a)} +function ZGc(a){XGc();return ks((aHc(),_Gc),a)} +function Rmc(a,b){return (KDb(a),a)+(KDb(b),b)} +function QJc(a){OJc();return ks((TJc(),SJc),a)} +function UMc(a){SMc();return ks((XMc(),WMc),a)} +function aNc(a){$Mc();return ks((dNc(),cNc),a)} +function DPc(a){BPc();return ks((GPc(),FPc),a)} +function zIc(){zIc=ndb;xIc=(mmd(),lmd);yIc=Tld} +function BRc(a){zRc();return ks((ERc(),DRc),a)} +function xSc(a){sSc();return ks((ASc(),zSc),a)} +function tVc(a){qVc();return ks((wVc(),vVc),a)} +function hWc(a){fWc();return ks((kWc(),jWc),a)} +function QXc(a){OXc();return ks((TXc(),SXc),a)} +function YXc(a){WXc();return ks((_Xc(),$Xc),a)} +function Y$c(a){T$c();return ks((_$c(),$$c),a)} +function F_c(a){C_c();return ks((I_c(),H_c),a)} +function v0c(a){s0c();return ks((y0c(),x0c),a)} +function F0c(a){C0c();return ks((I0c(),H0c),a)} +function I1c(a){F1c();return ks((L1c(),K1c),a)} +function S1c(a){P1c();return ks((V1c(),U1c),a)} +function D2c(a){B2c();return ks((G2c(),F2c),a)} +function Z2c(a){W2c();return ks((a3c(),_2c),a)} +function G3c(a){E3c();return ks((J3c(),I3c),a)} +function BFc(a){!a.e&&(a.e=new imb);return a.e} +function eXb(a,b,c){this.e=b;this.b=a;this.d=c} +function jMb(a,b,c){this.a=a;this.b=b;this.c=c} +function P0b(a,b,c){this.a=a;this.b=b;this.c=c} +function W3b(a,b,c){this.a=a;this.b=b;this.c=c} +function O4c(a,b,c){this.a=a;this.b=b;this.c=c} +function zBc(a,b,c){this.a=a;this.c=b;this.b=c} +function iWb(a,b,c){this.b=a;this.a=b;this.c=c} +function l6b(a,b,c){this.b=a;this.a=b;this.c=c} +function XPc(a,b){this.c=a;this.a=b;this.b=b-a} +function n6c(a){i6c();return ks((q6c(),p6c),a)} +function n8c(a){j8c();return ks((q8c(),p8c),a)} +function v8c(a){t8c();return ks((y8c(),x8c),a)} +function G8c(a){E8c();return ks((J8c(),I8c),a)} +function e8c(a){_7c();return ks((h8c(),g8c),a)} +function b7c(a){_6c();return ks((e7c(),d7c),a)} +function R7c(a){P7c();return ks((U7c(),T7c),a)} +function k5c(a){f5c();return ks((n5c(),m5c),a)} +function O5c(a){J5c();return ks((R5c(),Q5c),a)} +function N9c(a){I9c();return ks((Q9c(),P9c),a)} +function Y9c(a){T9c();return ks((_9c(),$9c),a)} +function Ied(a){Ged();return ks((Led(),Ked),a)} +function Wed(a){Ued();return ks((Zed(),Yed),a)} +function Wjd(a){Ujd();return ks((Zjd(),Yjd),a)} +function tjd(a){ojd();return ks((wjd(),vjd),a)} +function Djd(a){Bjd();return ks((Gjd(),Fjd),a)} +function Mjd(a){Kjd();return ks((Pjd(),Ojd),a)} +function ygd(a){wgd();return ks((Bgd(),Agd),a)} +function bhd(a){_gd();return ks((ehd(),dhd),a)} +function cld(a){_kd();return ks((fld(),eld),a)} +function nld(a){lld();return ks((qld(),pld),a)} +function Bld(a){xld();return ks((Eld(),Dld),a)} +function Pld(a){Lld();return ks((Sld(),Rld),a)} +function Okd(a){Lkd();return ks((Rkd(),Qkd),a)} +function gkd(a){ekd();return ks((jkd(),ikd),a)} +function Dkd(a){Bkd();return ks((Gkd(),Fkd),a)} +function Dnd(a){Bnd();return ks((Pnd(),Ond),a)} +function knd(a){ind();return ks((nnd(),mnd),a)} +function tnd(a){rnd();return ks((wnd(),vnd),a)} +function smd(a){mmd();return ks((vmd(),umd),a)} +function Nmd(a){Lmd();return ks((Qmd(),Pmd),a)} +function Xmd(a){Vmd();return ks(($md(),Zmd),a)} +function Vod(a){Tod();return ks((Yod(),Xod),a)} +function Iqd(a){Gqd();return ks((Lqd(),Kqd),a)} +function gEd(a){eEd();return ks((jEd(),iEd),a)} +function I5d(a,b,c){q5d();A5d.call(this,a,b,c)} +function d7d(a,b,c){q5d();M6d.call(this,a,b,c)} +function f7d(a,b,c){q5d();d7d.call(this,a,b,c)} +function h7d(a,b,c){q5d();d7d.call(this,a,b,c)} +function j7d(a,b,c){q5d();h7d.call(this,a,b,c)} +function r7d(a,b,c){q5d();p7d.call(this,a,b,c)} +function p7d(a,b,c){q5d();M6d.call(this,a,b,c)} +function v7d(a,b,c){q5d();M6d.call(this,a,b,c)} +function x7d(a,b,c){q5d();v7d.call(this,a,b,c)} +function oDd(a,b,c){this.a=a;this.c=b;this.b=c} +function wDd(a,b,c){this.a=a;this.b=b;this.c=c} +function Cad(a,b,c){this.a=a;this.b=b;this.c=c} +function Kad(a,b,c){this.a=a;this.b=b;this.c=c} +function prd(a,b,c){this.a=a;this.b=b;this.c=c} +function ZNd(a,b,c){this.a=a;this.b=b;this.c=c} +function e5d(a,b,c){this.e=a;this.a=b;this.c=c} +function Mg(a){this.d=a;Jg(this);this.b=ed(a.d)} +function xx(a,b){wx.call(this,a,Mm(new tnb(b)))} +function ek(a,b){Qb(a);Qb(b);return new fk(a,b)} +function Zq(a,b){Qb(a);Qb(b);return new dr(a,b)} +function br(a,b){Qb(a);Qb(b);return new jr(a,b)} +function ur(a,b){Qb(a);Qb(b);return new Ir(a,b)} +function Ytb(a){IDb(a.b!=0);return $tb(a,a.a.a)} +function Ztb(a){IDb(a.b!=0);return $tb(a,a.c.b)} +function oYd(a){!a.c&&(a.c=new V7d);return a.c} +function Zu(a){var b;b=new aub;Vq(b,a);return b} +function Ux(a){var b;b=new Bzb;Vq(b,a);return b} +function Rx(a){var b;b=new esb;or(b,a);return b} +function Vu(a){var b;b=new imb;or(b,a);return b} +function JD(a,b){SDb(a==null||ID(a,b));return a} +function Qwb(a,b,c){Ewb.call(this,b,c);this.a=a} +function cB(a,b){this.c=a;this.b=b;this.a=false} +function UAb(){this.a=';,;';this.b='';this.c=''} +function oBb(a,b,c){this.b=a;twb.call(this,b,c)} +function ytb(a,b,c){this.c=a;Ekb.call(this,b,c)} +function GSb(a,b,c){FSb.call(this,a,b);this.b=c} +function mDb(a,b,c){jDb(c,0,a,b,c.length,false)} +function iSb(a,b,c,d,e){a.b=b;a.c=c;a.d=d;a.a=e} +function cYb(a,b,c,d,e){a.d=b;a.c=c;a.a=d;a.b=e} +function lCb(a,b){if(b){a.b=b;a.a=(_Ab(b),b.a)}} +function CDb(a,b){if(!a){throw Icb(new hfb(b))}} +function PDb(a,b){if(!a){throw Icb(new kfb(b))}} +function GDb(a,b){if(!a){throw Icb(new Gdb(b))}} +function Dkc(a,b){qkc();return ofb(a.d.p,b.d.p)} +function nZc(a,b){XYc();return Xeb(a.e.b,b.e.b)} +function oZc(a,b){XYc();return Xeb(a.e.a,b.e.a)} +function Xic(a,b){return ofb(oZb(a.d),oZb(b.d))} +function Myb(a,b){return !!b&&Nyb(a,b.d)?b:null} +function Zfc(a,b){return b==(mmd(),lmd)?a.c:a.d} +function tfd(a){return new Yfd(a.c+a.b,a.d+a.a)} +function EQd(a){return a!=null&&!kQd(a,$Pd,_Pd)} +function BQd(a,b){return (HQd(a)<<4|HQd(b))&Bue} +function xfd(a,b,c,d,e){a.c=b;a.d=c;a.b=d;a.a=e} +function e2b(a){var b,c;b=a.b;c=a.c;a.b=c;a.c=b} +function h2b(a){var b,c;c=a.d;b=a.a;a.d=b;a.a=c} +function s4d(a,b){var c;c=a.c;r4d(a,b);return c} +function $nd(a,b){b<0?(a.g=-1):(a.g=b);return a} +function Rfd(a,b){Ofd(a);a.a*=b;a.b*=b;return a} +function NXd(a,b,c){iXd.call(this,a,b);this.c=c} +function Ide(a,b,c){iXd.call(this,a,b);this.c=c} +function xSd(a){wSd();iSd.call(this);this._h(a)} +function Wce(){pce();Xce.call(this,(WQd(),VQd))} +function Wqe(a){Tqe();++Sqe;return new Fre(0,a)} +function sie(){sie=ndb;rie=(Fnb(),new tob($Ie))} +function mx(){mx=ndb;new ox((il(),hl),(Uk(),Tk))} +function $Nb(){this.b=Reb(MD(mEd((ZOb(),TOb))))} +function Jq(a){this.b=a;this.a=bn(this.b.a).Md()} +function dr(a,b){this.b=a;this.a=b;xl.call(this)} +function jr(a,b){this.a=a;this.b=b;xl.call(this)} +function lZd(a,b,c){this.a=a;LYd.call(this,b,c)} +function qZd(a,b,c){this.a=a;LYd.call(this,b,c)} +function zAd(a,b,c){var d;d=new GC(c);kC(a,b,d)} +function pDb(a,b,c){var d;d=a[b];a[b]=c;return d} +function iDb(a){var b;b=a.slice();return XC(b,a)} +function sHb(a){var b;b=a.n;return a.a.b+b.d+b.a} +function pIb(a){var b;b=a.n;return a.e.b+b.d+b.a} +function qIb(a){var b;b=a.n;return a.e.a+b.b+b.c} +function wtb(a){a.a.b=a.b;a.b.a=a.a;a.a=a.b=null} +function Qtb(a,b){Ttb(a,b,a.c.b,a.c);return true} +function XXb(a){if(a.a){return a.a}return qWb(a)} +function SDb(a){if(!a){throw Icb(new Peb(null))}} +function MUb(a,b){return LUb(a,new FSb(b.a,b.b))} +function uWb(a){return !vWb(a)&&a.c.i.c==a.d.i.c} +function egc(a,b){return a.c=b){throw Icb(new Ddb)}} +function hjb(a){a.f=new ysb(a);a.i=new Ssb(a);++a.g} +function tvb(a){this.b=new jmb(11);this.a=(zqb(),a)} +function iyb(a){this.b=null;this.a=(zqb(),!a?wqb:a)} +function owb(a,b){this.e=a;this.d=(b&64)!=0?b|Pte:b} +function Ewb(a,b){this.c=0;this.d=a;this.b=b|64|Pte} +function hIc(a){this.a=fIc(a.a);this.b=new kmb(a.b)} +function Hjc(a,b,c,d){var e;e=a.i;e.i=b;e.a=c;e.b=d} +function rKc(a){var b;b=a;while(b.f){b=b.f}return b} +function dmc(a){if(a.e){return imc(a.e)}return null} +function Nld(a){Lld();return !a.Gc(Hld)&&!a.Gc(Jld)} +function gfd(a,b,c){bfd();return ffd(a,b)&&ffd(a,c)} +function Alc(a,b,c){return Blc(a,JD(b,12),JD(c,12))} +function MZd(a,b){return b.Sh()?ctd(a.b,JD(b,52)):b} +function ufd(a){return new Yfd(a.c+a.b/2,a.d+a.a/2)} +function myc(a,b,c){b.of(c,Reb(MD(bjb(a.b,c)))*a.a)} +function n0c(a,b){b.Tg("General 'Rotator",1);m0c(a)} +function L1d(a,b,c,d,e){M1d.call(this,a,b,c,d,e,-1)} +function _1d(a,b,c,d,e){a2d.call(this,a,b,c,d,e,-1)} +function A3d(a,b,c,d){VXd.call(this,a,b,c);this.b=d} +function Gge(a,b,c,d){NXd.call(this,a,b,c);this.b=d} +function Vbe(a){wGd.call(this,a,false);this.a=false} +function Ind(){Cnd.call(this,'LOOKAHEAD_LAYOUT',1)} +function Mnd(){Cnd.call(this,'LAYOUT_NEXT_LEVEL',3)} +function pLd(a){this.b=a;oKd.call(this,a);oLd(this)} +function xLd(a){this.b=a;DKd.call(this,a);wLd(this)} +function Rj(a,b){this.b=a;yj.call(this,a.b);this.a=b} +function H3d(a,b,c){this.a=a;E3d.call(this,b,c,5,6)} +function uhe(a,b,c,d){this.b=a;VXd.call(this,b,c,d)} +function jib(a,b,c){Whb();this.e=a;this.d=b;this.a=c} +function ctb(a,b){KDb(b);while(a.Ob()){b.Ad(a.Pb())}} +function Zqe(a,b){Tqe();++Sqe;return new $re(a,b,0)} +function _qe(a,b){Tqe();++Sqe;return new $re(6,a,b)} +function Dgb(a,b){return sgb(a.substr(0,b.length),b)} +function _ib(a,b){return VD(b)?djb(a,b):!!vsb(a.f,b)} +function qD(a){return _C(~a.l&dve,~a.m&dve,~a.h&eve)} +function WD(a){return typeof a===gte||typeof a===kte} +function Gl(a){return new Yr(new Jl(a.a.length,a.a))} +function gnb(a){return new gCb(null,fnb(a,a.length))} +function Rkb(a){if(!a){throw Icb(new Hub)}return a.d} +function zlb(a){var b;b=vlb(a);IDb(b!=null);return b} +function Alb(a){var b;b=wlb(a);IDb(b!=null);return b} +function kv(a,b){var c;c=a.a.gc();Sb(b,c);return c-b} +function bsb(a,b){var c;c=a.a.yc(b,a);return c==null} +function vzb(a,b){return a.a.yc(b,(Ndb(),Ldb))==null} +function VNb(a,b){return a>0?$wnd.Math.log(a/b):-100} +function zmc(a,b){if(!b){return false}return xe(a,b)} +function _qb(a,b,c){Erb(a.a,b);return pDb(a.b,b.g,c)} +function jxb(a,b,c){pxb(c,a.a.c.length);fmb(a.a,c,b)} +function Rmb(a,b,c,d){DDb(b,c,a.length);Vmb(a,b,c,d)} +function Vmb(a,b,c,d){var e;for(e=b;e0?1:0} +function cib(a){return a.e==0?a:new jib(-a.e,a.d,a.a)} +function $ke(a){return a==ove?gJe:a==pve?'-INF':''+a} +function ale(a){return a==ove?gJe:a==pve?'-INF':''+a} +function fnb(a,b){return nwb(b,a.length),new Kwb(a,b)} +function ugb(a,b,c,d,e){while(b=a.g} +function HIc(a,b,c){var d;d=NIc(a,b,c);return GIc(a,d)} +function uDb(a,b){var c;c=console[a];c.call(console,b)} +function vAd(a,b){var c;c=a.a.length;BB(a,c);DB(a,c,b)} +function bHd(a,b){var c;++a.j;c=a.Cj();a.pj(a.Xi(c,b))} +function Cwb(a,b){KDb(b);while(a.c=a){return new HBb}return yBb(a-1)} +function Lub(a){if(a==null){throw Icb(new Ufb)}return a} +function KDb(a){if(a==null){throw Icb(new Ufb)}return a} +function hTd(a){!a.a&&(a.a=new VXd(z6,a,4));return a.a} +function h0d(a){!a.d&&(a.d=new VXd(w6,a,1));return a.d} +function vId(a){if(a.p!=3)throw Icb(new jfb);return a.e} +function wId(a){if(a.p!=4)throw Icb(new jfb);return a.e} +function yId(a){if(a.p!=6)throw Icb(new jfb);return a.f} +function EId(a){if(a.p!=3)throw Icb(new jfb);return a.j} +function FId(a){if(a.p!=4)throw Icb(new jfb);return a.j} +function HId(a){if(a.p!=6)throw Icb(new jfb);return a.k} +function acd(){ubd.call(this);qDb(this.j.c,0);this.a=-1} +function K9c(){es.call(this,'DELAUNAY_TRIANGULATION',0)} +function us(){ns();return WC(OC(IG,1),kue,537,0,[ms])} +function Wad(a,b,c){Pad();return c.Kg(a,JD(b.jd(),147))} +function hyd(a,b){YEd((!a.a&&(a.a=new D2d(a,a)),a.a),b)} +function zqd(a,b){a.c<0||a.b.b=0?a.hi(c):atd(a,b)} +function Ceb(a,b){var c;c=yeb('',a);c.n=b;c.i=1;return c} +function wde(a){a.c==-2&&Cde(a,tce(a.g,a.b));return a.c} +function Y7d(a){!a.b&&(a.b=new n8d(new j8d));return a.b} +function qx(a,b){mx();return new ox(new rl(a),new bl(b))} +function Qu(a){bk(a,mue);return Xy(Jcb(Jcb(5,a),a/10|0))} +function Hx(){Hx=ndb;Gx=new Jx(WC(OC(LK,1),$te,45,0,[]))} +function zle(){Myd.call(this,ZIe,(Mje(),Lje));vle(this)} +function Y8d(){Myd.call(this,uIe,(hRd(),gRd));S8d(this)} +function ry(a,b){Vp.call(this,Nnb(Qb(a),Qb(b)));this.a=b} +function Vs(a,b,c,d){ap.call(this,a,b);this.d=c;this.a=d} +function ep(a,b,c,d){ap.call(this,a,c);this.a=b;this.f=d} +function qLd(a,b){this.b=a;pKd.call(this,a,b);oLd(this)} +function yLd(a,b){this.b=a;EKd.call(this,a,b);wLd(this)} +function Rlb(a){this.d=a;this.a=this.d.b;this.b=this.d.c} +function rFb(a){a.b=false;a.c=false;a.d=false;a.a=false} +function wpb(a){!a.a&&(a.a=new Xpb(a.c.vc()));return a.a} +function ypb(a){!a.b&&(a.b=new Qpb(a.c.ec()));return a.b} +function zpb(a){!a.d&&(a.d=new Eob(a.c.Bc()));return a.d} +function xfb(a,b){while(b-->0){a=a<<1|(a<0?1:0)}return a} +function GCc(a,b){var c;c=new s$b(a);nDb(b.c,c);return c} +function cMb(a,b){qMb(JD(b.b,68),a);_lb(b.a,new hMb(a))} +function fKb(a,b){a.u.Gc((Lld(),Hld))&&dKb(a,b);hKb(a,b)} +function Jub(a,b){return XD(a)===XD(b)||a!=null&&pb(a,b)} +function ejb(a,b,c){return VD(b)?fjb(a,b,c):wsb(a.f,b,c)} +function Mnb(a){Fnb();return !a?(zqb(),zqb(),yqb):a.Me()} +function f8c(){_7c();return WC(OC(P0,1),kue,477,0,[$7c])} +function o8c(){j8c();return WC(OC(Q0,1),kue,546,0,[i8c])} +function O9c(){I9c();return WC(OC(Y0,1),kue,527,0,[H9c])} +function $qb(a,b){return Grb(a.a,b)?a.b[JD(b,23).g]:null} +function Lgb(a){return String.fromCharCode.apply(null,a)} +function pgb(a,b){RDb(b,a.length);return a.charCodeAt(b)} +function ybd(a){a.j.c.length=0;ze(a.c);$bd(a.a);return a} +function yde(a){a.e==_Ie&&Ede(a,yce(a.g,a.b));return a.e} +function zde(a){a.f==_Ie&&Fde(a,zce(a.g,a.b));return a.f} +function swd(a){!a.b&&(a.b=new Wge(L3,a,4,7));return a.b} +function twd(a){!a.c&&(a.c=new Wge(L3,a,5,8));return a.c} +function Dzd(a){!a.c&&(a.c=new A3d(R3,a,9,9));return a.c} +function rvd(a){!a.n&&(a.n=new A3d(P3,a,1,7));return a.n} +function Gh(a){var b;b=a.b;!b&&(a.b=b=new Vh(a));return b} +function ze(a){var b;for(b=a.Jc();b.Ob();){b.Pb();b.Qb()}} +function Ak(a,b,c){var d;d=JD(a.d.Kb(c),162);!!d&&d.Nb(b)} +function My(a,b){return new Ky(JD(Qb(a),51),JD(Qb(b),51))} +function SBb(a,b){aBb(a);return new gCb(a,new xCb(b,a.a))} +function WBb(a,b){aBb(a);return new gCb(a,new PCb(b,a.a))} +function XBb(a,b){aBb(a);return new kBb(a,new DCb(b,a.a))} +function YBb(a,b){aBb(a);return new EBb(a,new JCb(b,a.a))} +function eBd(a,b){GEd(a,Reb(CAd(b,'x')),Reb(CAd(b,'y')))} +function rBd(a,b){GEd(a,Reb(CAd(b,'x')),Reb(CAd(b,'y')))} +function qTb(a,b){mTb();return Xeb((KDb(a),a),(KDb(b),b))} +function DFb(a,b){return Xeb(a.d.c+a.d.b/2,b.d.c+b.d.b/2)} +function vSb(a,b){return Xeb(a.g.c+a.g.b/2,b.g.c+b.g.b/2)} +function uQd(a){return a!=null&&Aob(cQd,a.toLowerCase())} +function tec(a){aec();var b;b=JD(a.g,9);b.n.a=a.d.c+b.d.b} +function qWb(a){var b;b=F_b(a);if(b){return b}return null} +function Eyd(a,b,c,d){Dyd(a,b,c,false);h_d(a,d);return a} +function Jbc(a,b,c){xkc(a.a,c);Mjc(c);Okc(a.b,c);fkc(b,c)} +function fjc(a,b,c,d){es.call(this,a,b);this.a=c;this.b=d} +function KJc(a,b,c,d){this.a=a;this.c=b;this.b=c;this.d=d} +function lLc(a,b,c,d){this.c=a;this.b=b;this.a=c;this.d=d} +function QLc(a,b,c,d){this.c=a;this.b=b;this.d=c;this.a=d} +function UWb(a,b,c,d){this.a=a;this.e=b;this.d=c;this.c=d} +function aQc(a,b,c,d){this.a=a;this.d=b;this.c=c;this.b=d} +function Afd(a,b,c,d){this.c=a;this.d=b;this.b=c;this.a=d} +function lgb(a,b,c){this.a=zue;this.d=a;this.b=b;this.c=c} +function jy(a,b){this.b=a;this.c=b;this.a=new Trb(this.b)} +function Yvb(a,b){this.d=(KDb(a),a);this.a=16449;this.c=b} +function nlc(a,b,c,d){mlc.call(this,a,c,d,false);this.f=b} +function utd(a,b,c){var d,e;d=mQd(a);e=b.qi(c,d);return e} +function syd(a){var b,c;c=(b=new q0d,b);j0d(c,a);return c} +function tyd(a){var b,c;c=(b=new q0d,b);n0d(c,a);return c} +function Bzd(a){!a.b&&(a.b=new A3d(N3,a,12,3));return a.b} +function HEc(a){this.a=new imb;this.e=SC(cE,Ote,54,a,0,2)} +function yNd(a){this.f=a;this.c=this.f.e;a.f>0&&xNd(this)} +function v5d(a,b,c,d){this.a=a;this.c=b;this.d=c;this.b=d} +function nDd(a,b,c,d){this.a=a;this.b=b;this.d=c;this.c=d} +function oCd(a,b,c,d){this.a=a;this.b=b;this.c=c;this.d=d} +function qCd(a,b,c,d){this.a=a;this.b=b;this.c=c;this.d=d} +function f5d(a,b,c,d){this.e=a;this.a=b;this.c=c;this.d=d} +function A6d(a,b,c,d){q5d();K5d.call(this,b,c,d);this.a=a} +function H6d(a,b,c,d){q5d();K5d.call(this,b,c,d);this.a=a} +function Tg(a,b){this.a=a;Ng.call(this,a,JD(a.d,16).dd(b))} +function yod(a,b){return Xeb(Hod(a)*God(a),Hod(b)*God(b))} +function zod(a,b){return Xeb(Hod(a)*God(a),Hod(b)*God(b))} +function nd(a){var b;return b=a.f,!b?(a.f=new me(a,a.c)):b} +function Fnb(){Fnb=ndb;Cnb=new Qnb;Dnb=new hob;Enb=new pob} +function zqb(){zqb=ndb;wqb=new Bqb;xqb=new Bqb;yqb=new Gqb} +function Lg(a){gg(a.d);if(a.d.d!=a.c){throw Icb(new Oqb)}} +function _tb(a){a.a.a=a.c;a.c.b=a.a;a.a.b=a.c.a=null;a.b=0} +function Ijb(a){IDb(a.b0)return Wu(a);return new imb} +function $y(a){if(a.n){a.e!==sue&&a.he();a.j=null}return a} +function bYb(a,b){a.b=b.b;a.c=b.c;a.d=b.d;a.a=b.a;return a} +function hq(a,b,c){Ylb(a.a,(ak(b,c),new ap(b,c)));return a} +function _bc(a,b){JD(lNb(a,(Krc(),Xqc)),16).Ec(b);return b} +function A9b(a,b){return Rc(a,JD(lNb(b,($xc(),Vwc)),15),b)} +function V$b(a){return vwd(a)&&Odb(LD(Pud(a,($xc(),kwc))))} +function Rdc(a,b,c){Ldc();return pFb(JD(bjb(a.e,b),516),c)} +function Tfc(a,b,c){a.i=0;a.e=0;if(b==c){return}Pfc(a,b,c)} +function Ufc(a,b,c){a.i=0;a.e=0;if(b==c){return}Qfc(a,b,c)} +function sCb(a,b,c,d){this.b=a;this.c=d;Bwb.call(this,b,c)} +function DFc(a,b){this.g=a;this.d=WC(OC(RP,1),nye,9,0,[b])} +function gmc(a,b){if(!!a.d&&!a.d.a){fmc(a.d,b);gmc(a.d,b)}} +function hmc(a,b){if(!!a.e&&!a.e.a){fmc(a.e,b);hmc(a.e,b)}} +function JPc(a,b){return pQc(a.j,b.s,b.c)+pQc(b.e,a.s,a.c)} +function xod(a,b){return -Xeb(Hod(a)*God(a),Hod(b)*God(b))} +function tqd(a){return JD(a.jd(),147).Og()+':'+qdb(a.kd())} +function Lyd(){Iyd(this,new Fxd);this.wb=(jRd(),iRd);hRd()} +function yHc(a){this.b=new JHc;this.a=a;$wnd.Math.random()} +function m1b(a){this.b=new imb;$lb(this.b,this.b);this.a=a} +function qTc(a,b){new aub;this.a=new jgd;this.b=a;this.c=b} +function Iub(){qz.call(this,'There is no more element.')} +function Oz(a){Iz();$wnd.setTimeout(function(){throw a},0)} +function $Hc(a){a.Tg('No crossing minimization',1);a.Ug()} +function Pbd(a,b){rb(a);rb(b);return bs(JD(a,23),JD(b,23))} +function xAd(a,b,c){var d,e;d=Xdb(c);e=new _B(d);kC(a,b,e)} +function b2d(a,b,c,d,e,f){a2d.call(this,a,b,c,d,e,f?-2:-1)} +function qhe(a,b,c,d){iXd.call(this,b,c);this.b=a;this.a=d} +function xu(a){this.b=a;this.c=a;a.e=null;a.c=null;this.a=1} +function Azd(a){!a.a&&(a.a=new A3d(Q3,a,10,11));return a.a} +function sWd(a){!a.q&&(a.q=new A3d(A6,a,11,10));return a.q} +function vWd(a){!a.s&&(a.s=new A3d(G6,a,21,17));return a.s} +function ND(a){SDb(a==null||WD(a)&&!(a.Rm===rdb));return a} +function Rb(a,b){if(a==null){throw Icb(new Vfb(b))}return a} +function Ky(a,b){ui.call(this,new iyb(a));this.a=a;this.b=b} +function djb(a,b){return b==null?!!vsb(a.f,null):Osb(a.i,b)} +function Qx(a){return RD(a,18)?new gsb(JD(a,18)):Rx(a.Jc())} +function Onb(a){Fnb();return RD(a,59)?new nqb(a):new $ob(a)} +function $q(a){Qb(a);return vr(new Yr(Dr(a.a.Jc(),new Dl)))} +function Ti(a){return new gj(a,a.e.Pd().gc()*a.c.Pd().gc())} +function dj(a){return new qj(a,a.e.Pd().gc()*a.c.Pd().gc())} +function Az(a){return !!a&&!!a.hashCode?a.hashCode():ADb(a)} +function udb(a){!a?vte:dz(a,a.ge());String.fromCharCode(10)} +function IRb(a,b){var c;c=dsb(a.a,b);c&&(b.d=null);return c} +function aFb(a,b,c){if(a.f){return a.f.cf(b,c)}return false} +function EAc(a,b,c,d){VC(a.c[b.g],c.g,d);VC(a.c[c.g],b.g,d)} +function HAc(a,b,c,d){VC(a.c[b.g],b.g,c);VC(a.b[b.g],b.g,d)} +function OTc(a,b,c){return Reb(MD(c.a))<=a&&Reb(MD(c.b))>=b} +function jCc(){this.d=new aub;this.b=new Yrb;this.c=new imb} +function PNc(){this.b=new esb;this.d=new aub;this.e=new Jxb} +function uNb(){this.c=new Wfd;this.d=new Wfd;this.e=new Wfd} +function BWb(){this.a=new jgd;this.b=(bk(3,jue),new jmb(3))} +function BFb(a){this.c=a;this.b=new Dzb(JD(Qb(new EFb),51))} +function tSb(a){this.c=a;this.b=new Dzb(JD(Qb(new wSb),51))} +function zMb(a){this.b=a;this.a=new Dzb(JD(Qb(new CMb),51))} +function g5d(a,b){this.e=a;this.a=aJ;this.b=nhe(b);this.c=b} +function Bfd(a){this.c=a.c;this.d=a.d;this.b=a.b;this.a=a.a} +function cJd(a,b,c,d,e,f){this.a=a;PId.call(this,b,c,d,e,f)} +function XJd(a,b,c,d,e,f){this.a=a;PId.call(this,b,c,d,e,f)} +function dee(a,b,c,d,e,f,g){return new jje(a.e,b,c,d,e,f,g)} +function Egb(a,b,c){return c>=0&&sgb(a.substr(c,b.length),b)} +function lEd(a,b){return RD(b,147)&&sgb(a.b,JD(b,147).Og())} +function Rbe(a,b){return a.a?b.Dh().Jc():JD(b.Dh(),72).Gi()} +function Vpb(a,b){var c;c=a.b.Oc(b);Wpb(c,a.b.gc());return c} +function Mub(a,b){if(a==null){throw Icb(new Vfb(b))}return a} +function xWd(a){if(!a.u){wWd(a);a.u=new u$d(a,a)}return a.u} +function bud(a){var b;b=JD(fud(a,16),29);return !b?a.fi():b} +function dz(a,b){var c;c=ueb(a.Pm);return b==null?c:c+': '+b} +function Ggb(a,b,c){QDb(b,c,a.length);return a.substr(b,c-b)} +function vIb(a,b){rHb.call(this);kIb(this);this.a=a;this.c=b} +function Knd(){Cnd.call(this,'FIXED_INTEGER_RATIO_BOXES',2)} +function Enc(){Bnc();return WC(OC(QV,1),kue,422,0,[znc,Anc])} +function yoc(){voc();return WC(OC(UV,1),kue,419,0,[toc,uoc])} +function apc(){Zoc();return WC(OC(XV,1),kue,476,0,[Yoc,Xoc])} +function vqc(){sqc();return WC(OC(cW,1),kue,420,0,[qqc,rqc])} +function _rc(){Yrc();return WC(OC(eW,1),kue,423,0,[Xrc,Wrc])} +function Xzc(){Uzc();return WC(OC(pW,1),kue,421,0,[Szc,Tzc])} +function RJc(){OJc();return WC(OC(NX,1),kue,518,0,[NJc,MJc])} +function bNc(){$Mc();return WC(OC(HY,1),kue,508,0,[YMc,ZMc])} +function VMc(){SMc();return WC(OC(GY,1),kue,509,0,[RMc,QMc])} +function EPc(){BPc();return WC(OC(cZ,1),kue,515,0,[APc,zPc])} +function CRc(){zRc();return WC(OC(xZ,1),kue,454,0,[xRc,yRc])} +function ZXc(){WXc();return WC(OC(L$,1),kue,425,0,[VXc,UXc])} +function Z$c(){T$c();return WC(OC(t_,1),kue,487,0,[R$c,S$c])} +function w0c(){s0c();return WC(OC(I_,1),kue,426,0,[q0c,r0c])} +function vOb(){sOb();return WC(OC(hO,1),kue,424,0,[qOb,rOb])} +function y2b(){v2b();return WC(OC(cR,1),kue,502,0,[u2b,t2b])} +function l5c(){f5c();return WC(OC(o0,1),kue,478,0,[d5c,e5c])} +function w8c(){t8c();return WC(OC(R0,1),kue,428,0,[s8c,r8c])} +function Z9c(){T9c();return WC(OC(Z0,1),kue,427,0,[S9c,R9c])} +function Ssd(a,b,c,d){return c>=0?a.Rh(b,c,d):a.zh(null,c,d)} +function yqd(a){if(a.b.b==0){return a.a.uf()}return Ytb(a.b)} +function xId(a){if(a.p!=5)throw Icb(new jfb);return ddb(a.f)} +function GId(a){if(a.p!=5)throw Icb(new jfb);return ddb(a.k)} +function NYd(a){XD(a.a)===XD((jWd(),iWd))&&OYd(a);return a.a} +function XQc(a,b){UQc(this,new Yfd(a.a,a.b));VQc(this,Zu(b))} +function Np(){Mp.call(this,new Zrb(Jv(12)));Lb(true);this.a=2} +function cse(a,b,c){Tqe();Uqe.call(this,a);this.b=b;this.a=c} +function A5d(a,b,c){q5d();r5d.call(this,b);this.a=a;this.b=c} +function Cz(a,b){var c=Bz[a.charCodeAt(0)];return c==null?a:c} +function Px(a,b){Rb(a,'set1');Rb(b,'set2');return new ay(a,b)} +function Mmb(a,b){EDb(b);return Omb(a,SC(cE,Pue,30,b,15,1),b)} +function R6c(a,b){a.b=b;a.c>0&&a.b>0&&(a.g=h7c(a.c,a.b,a.a))} +function S6c(a,b){a.c=b;a.c>0&&a.b>0&&(a.g=h7c(a.c,a.b,a.a))} +function vtb(a){var b;b=a.c.d.b;a.b=b;a.a=a.c.d;b.a=a.c.d.b=a} +function Xtb(a){return a.b==0?null:(IDb(a.b!=0),$tb(a,a.a.a))} +function cjb(a,b){return b==null?Wd(vsb(a.f,null)):Psb(a.i,b)} +function fyb(a,b,c,d,e){return new Oyb(a,(gzb(),ezb),b,c,d,e)} +function eKb(a,b,c,d){var e;e=new tHb;b.a[c.g]=e;_qb(a.b,d,e)} +function _xb(a,b){var c,d;c=b;d=new Kyb;byb(a,c,d);return d.d} +function rRb(a,b){var c;c=aRb(a.f,b);return Gfd(Nfd(c),a.f.d)} +function fEb(a){var b;eHb(a.a);dHb(a.a);b=new pHb(a.a);lHb(b)} +function BKb(a,b){AKb(a,true);_lb(a.e.Pf(),new FKb(a,true,b))} +function lZc(a,b){XYc();return JD(lNb(b,(DXc(),BXc)),15).a==a} +function YD(a){return Math.max(Math.min(a,lte),-2147483648)|0} +function tIb(a){rHb.call(this);kIb(this);this.a=a;this.c=true} +function Q6c(a,b,c){this.a=new imb;this.e=a;this.f=b;this.c=c} +function I6c(a,b,c){this.c=new imb;this.e=a;this.f=b;this.b=c} +function Z7c(a,b,c){this.i=new imb;this.b=a;this.g=b;this.a=c} +function ly(a){this.a=JD(Qb(a),277);this.b=(Fnb(),new oqb(a))} +function Zz(){Zz=ndb;var a,b;b=!dA();a=new lA;Yz=b?new eA:a} +function VEb(){VEb=ndb;SEb=new QEb;UEb=new vFb;TEb=new mFb} +function SMc(){SMc=ndb;RMc=new TMc(Gwe,0);QMc=new TMc(Fwe,1)} +function $Mc(){$Mc=ndb;YMc=new _Mc(Rwe,0);ZMc=new _Mc('UP',1)} +function zRc(){zRc=ndb;xRc=new ARc(Fwe,0);yRc=new ARc(Gwe,1)} +function JGd(a,b,c){GGd();!!a&&ejb(FGd,a,b);!!a&&ejb(EGd,a,c)} +function etd(a,b,c){var d;d=a.Fh(b);d>=0?a.$h(d,c):_sd(a,b,c)} +function to(a,b){var c;Qb(b);for(c=a.a;c;c=c.c){b.Wd(c.g,c.i)}} +function fB(a,b){var c;c=a.q.getHours();a.q.setDate(b);eB(a,c)} +function Sx(a){var b;b=new fsb(Jv(a.length));Gnb(b,a);return b} +function pdb(a){function b(){} +;b.prototype=a||{};return new b} +function xlb(a,b){if(rlb(a,b)){Qlb(a);return true}return false} +function iC(a,b){if(b==null){throw Icb(new Ufb)}return jC(a,b)} +function Geb(a){if(a.ye()){return null}var b=a.n;return ldb[b]} +function rwd(a){if(a.Db>>16!=3)return null;return JD(a.Cb,26)} +function Tzd(a){if(a.Db>>16!=9)return null;return JD(a.Cb,26)} +function Mwd(a){if(a.Db>>16!=6)return null;return JD(a.Cb,85)} +function Usd(a,b){var c;c=a.Fh(b);return c>=0?a.Th(c):$sd(a,b)} +function LIc(a,b,c){var d;d=MIc(a,b,c);a.b=new vIc(d.c.length)} +function fHc(a){this.a=a;this.b=SC(pX,Ote,2005,a.e.length,0,2)} +function vEb(){this.a=new Mtb;this.e=new esb;this.g=0;this.i=0} +function gz(a,b){Yy(this);this.f=b;this.g=a;$y(this);this.he()} +function aYb(a,b){a.b+=b.b;a.c+=b.c;a.d+=b.d;a.a+=b.a;return a} +function uGd(a){var b;b=a.d;b=a._i(a.f);YEd(a,b);return b.Ob()} +function dFd(a,b){var c;c=new Otb(b);Te(c,a);return new kmb(c)} +function sId(a){if(a.p!=0)throw Icb(new jfb);return Xcb(a.f,0)} +function BId(a){if(a.p!=0)throw Icb(new jfb);return Xcb(a.k,0)} +function nyd(a){if(a.Db>>16!=7)return null;return JD(a.Cb,241)} +function kzd(a){if(a.Db>>16!=7)return null;return JD(a.Cb,174)} +function iTd(a){if(a.Db>>16!=3)return null;return JD(a.Cb,158)} +function vVd(a){if(a.Db>>16!=6)return null;return JD(a.Cb,241)} +function Czd(a){if(a.Db>>16!=11)return null;return JD(a.Cb,26)} +function sUd(a){if(a.Db>>16!=17)return null;return JD(a.Cb,29)} +function bXd(a,b,c,d,e,f){return new N1d(a.e,b,a.Jj(),c,d,e,f)} +function fjb(a,b,c){return b==null?wsb(a.f,null,c):Qsb(a.i,b,c)} +function x1b(a,b){return $wnd.Math.abs(a)<$wnd.Math.abs(b)?a:b} +function K8b(a,b){y8b();return Ndb(),JD(b.a,15).a0} +function RBb(a){var b;aBb(a);b=new esb;return SBb(a,new qCb(b))} +function Eeb(a,b){var c=a.a=a.a||[];return c[b]||(c[b]=a.te(b))} +function iB(a,b){var c;c=a.q.getHours();a.q.setMonth(b);eB(a,c)} +function xWb(a,b){!!a.c&&dmb(a.c.g,a);a.c=b;!!a.c&&Ylb(a.c.g,a)} +function HYb(a,b){!!a.c&&dmb(a.c.a,a);a.c=b;!!a.c&&Ylb(a.c.a,a)} +function yWb(a,b){!!a.d&&dmb(a.d.e,a);a.d=b;!!a.d&&Ylb(a.d.e,a)} +function qZb(a,b){!!a.i&&dmb(a.i.j,a);a.i=b;!!a.i&&Ylb(a.i.j,a)} +function qEb(a,b,c){this.a=b;this.c=a;this.b=(Qb(c),new kmb(c))} +function TTb(a,b,c){this.a=b;this.c=a;this.b=(Qb(c),new kmb(c))} +function sMb(a,b){this.a=a;this.c=Ifd(this.a);this.b=new Bfd(b)} +function MDb(a,b){if(a<0||a>b){throw Icb(new Cdb(cwe+a+dwe+b))}} +function bCc(){bCc=ndb;aCc=Vbd(new acd,(TQb(),SQb),(Q5b(),H5b))} +function hCc(){hCc=ndb;gCc=Vbd(new acd,(TQb(),SQb),(Q5b(),H5b))} +function kBc(){kBc=ndb;jBc=Vbd(new acd,(TQb(),SQb),(Q5b(),H5b))} +function sBc(){sBc=ndb;rBc=Vbd(new acd,(TQb(),SQb),(Q5b(),H5b))} +function CBc(){CBc=ndb;BBc=Vbd(new acd,(TQb(),SQb),(Q5b(),H5b))} +function JBc(){JBc=ndb;IBc=Vbd(new acd,(TQb(),SQb),(Q5b(),H5b))} +function WJc(){WJc=ndb;VJc=Xbd(new acd,(TQb(),SQb),(Q5b(),f5b))} +function zKc(){zKc=ndb;yKc=Xbd(new acd,(TQb(),SQb),(Q5b(),f5b))} +function CMc(){CMc=ndb;BMc=Xbd(new acd,(TQb(),SQb),(Q5b(),f5b))} +function qNc(){qNc=ndb;pNc=Xbd(new acd,(TQb(),SQb),(Q5b(),f5b))} +function bYc(){bYc=ndb;aYc=Vbd(new acd,(sSc(),qSc),(qVc(),gVc))} +function ws(){ws=ndb;vs=gs((ns(),WC(OC(IG,1),kue,537,0,[ms])))} +function GGd(){GGd=ndb;FGd=new Yrb;EGd=new Yrb;KGd(qK,new LGd)} +function NDd(a,b){var c,d;c=b.c;d=c!=null;d&&vAd(a,new GC(b.c))} +function uad(a,b){vad(a,a.b,a.c);JD(a.b.b,68);!!b&&JD(b.b,68).b} +function JVd(a,b){RD(a.Cb,184)&&(JD(a.Cb,184).tb=null);Wxd(a,b)} +function AUd(a,b){RD(a.Cb,88)&&tYd(wWd(JD(a.Cb,88)),4);Wxd(a,b)} +function Z3d(a,b){$3d(a,b);RD(a.Cb,88)&&tYd(wWd(JD(a.Cb,88)),2)} +function F$c(a,b){return Xeb(JD(a.c,65).c.e.b,JD(b.c,65).c.e.b)} +function G$c(a,b){return Xeb(JD(a.c,65).c.e.a,JD(b.c,65).c.e.a)} +function pee(a,b){return lie(),uUd(b)?new mje(b,a):new Cie(b,a)} +function vPc(a,b){!!a.a&&dmb(a.a.k,a);a.a=b;!!a.a&&Ylb(a.a.k,a)} +function wPc(a,b){!!a.b&&dmb(a.b.f,a);a.b=b;!!a.b&&Ylb(a.b.f,a)} +function Yjb(a,b,c){NDb(b,c,a.gc());this.c=a;this.a=b;this.b=c-b} +function Ocd(a){this.c=new aub;this.b=a.b;this.d=a.c;this.a=a.a} +function Xfd(a){this.a=$wnd.Math.cos(a);this.b=$wnd.Math.sin(a)} +function xPc(a,b,c,d){this.c=a;this.d=d;vPc(this,b);wPc(this,c)} +function Wvb(a,b){this.b=(KDb(a),a);this.a=(b&qve)==0?b|64|Pte:b} +function Rvb(a,b){Qvb(a,ddb(Kcb($cb(b,24),Pve)),ddb(Kcb(b,Pve)))} +function vib(a){Whb();return Lcb(a,0)>=0?qib(a):cib(qib(Wcb(a)))} +function FAb(){CAb();return WC(OC(HL,1),kue,130,0,[zAb,AAb,BAb])} +function Vxb(a,b,c){return new Oyb(a,(gzb(),dzb),null,false,b,c)} +function gyb(a,b,c){return new Oyb(a,(gzb(),fzb),b,c,null,false)} +function emb(a,b,c){var d;NDb(b,c,a.c.length);d=c-b;oDb(a.c,b,d)} +function Iw(a,b){var c;c=JD(Ov(nd(a.a),b),18);return !c?0:c.gc()} +function cCb(a){var b;aBb(a);b=(zqb(),zqb(),xqb);return dCb(a,b)} +function wr(a){var b;while(true){b=a.Pb();if(!a.Ob()){return b}}} +function t$d(a){var b,c;c=(hRd(),b=new q0d,b);j0d(c,a);return c} +function C2d(a){var b,c;c=(hRd(),b=new q0d,b);j0d(c,a);return c} +function Odc(a){Ldc();if(RD(a.g,9)){return JD(a.g,9)}return null} +function mic(){jic();return WC(OC(HU,1),kue,368,0,[iic,hic,gic])} +function $nc(){Xnc();return WC(OC(SV,1),kue,350,0,[Unc,Wnc,Vnc])} +function Hoc(){Eoc();return WC(OC(VV,1),kue,449,0,[Coc,Boc,Doc])} +function Xpc(){Upc();return WC(OC(_V,1),kue,302,0,[Spc,Tpc,Rpc])} +function eqc(){bqc();return WC(OC(aW,1),kue,329,0,[aqc,_pc,$pc])} +function nqc(){kqc();return WC(OC(bW,1),kue,315,0,[iqc,jqc,hqc])} +function Ryc(){Nyc();return WC(OC(kW,1),kue,352,0,[Kyc,Lyc,Myc])} +function eAc(){bAc();return WC(OC(qW,1),kue,452,0,[aAc,$zc,_zc])} +function nAc(){kAc();return WC(OC(rW,1),kue,381,0,[hAc,iAc,jAc])} +function wAc(){tAc();return WC(OC(sW,1),kue,348,0,[sAc,qAc,rAc])} +function QAc(){NAc();return WC(OC(uW,1),kue,349,0,[KAc,LAc,MAc])} +function ZAc(){WAc();return WC(OC(vW,1),kue,351,0,[VAc,TAc,UAc])} +function gBc(){dBc();return WC(OC(wW,1),kue,382,0,[bBc,cBc,aBc])} +function cQb(){_Pb();return WC(OC(pO,1),kue,384,0,[ZPb,YPb,$Pb])} +function CHb(){zHb();return WC(OC(hN,1),kue,237,0,[wHb,xHb,yHb])} +function hIb(){eIb();return WC(OC(kN,1),kue,461,0,[cIb,bIb,dIb])} +function $Ib(){XIb();return WC(OC(rN,1),kue,462,0,[WIb,VIb,UIb])} +function iWc(){fWc();return WC(OC(G$,1),kue,385,0,[eWc,dWc,cWc])} +function G0c(){C0c();return WC(OC(J_,1),kue,386,0,[z0c,A0c,B0c])} +function H3c(){E3c();return WC(OC(d0,1),kue,387,0,[C3c,D3c,B3c])} +function T1c(){P1c();return WC(OC(O_,1),kue,303,0,[N1c,O1c,M1c])} +function E2c(){B2c();return WC(OC(W_,1),kue,436,0,[y2c,z2c,A2c])} +function o6c(){i6c();return WC(OC(w0,1),kue,430,0,[f6c,h6c,g6c])} +function S7c(){P7c();return WC(OC(L0,1),kue,435,0,[M7c,N7c,O7c])} +function P5c(){J5c();return WC(OC(r0,1),kue,429,0,[G5c,I5c,H5c])} +function Njd(){Kjd();return WC(OC(x2,1),kue,279,0,[Hjd,Ijd,Jjd])} +function Ekd(){Bkd();return WC(OC(C2,1),kue,347,0,[zkd,ykd,Akd])} +function Omd(){Lmd();return WC(OC(M2,1),kue,300,0,[Imd,Jmd,Kmd])} +function und(){rnd();return WC(OC(P2,1),kue,281,0,[pnd,ond,qnd])} +function lZb(a){return cgd(WC(OC(o2,1),Ote,8,0,[a.i.n,a.n,a.a]))} +function bNb(a,b,c){var d;d=new Zfd(c.d);Gfd(d,a);GEd(b,d.a,d.b)} +function nNc(a,b,c){var d;d=new mNc;d.b=b;d.a=c;++b.b;Ylb(a.d,d)} +function y6c(a,b,c){var d;d=z6c(a,b,false);return d.b<=b&&d.a<=c} +function uId(a){if(a.p!=2)throw Icb(new jfb);return ddb(a.f)&Bue} +function DId(a){if(a.p!=2)throw Icb(new jfb);return ddb(a.k)&Bue} +function JDb(a,b){if(a<0||a>=b){throw Icb(new Cdb(cwe+a+dwe+b))}} +function RDb(a,b){if(a<0||a>=b){throw Icb(new lhb(cwe+a+dwe+b))}} +function AVd(a){if(a.Db>>16!=6)return null;return JD(Hsd(a),241)} +function iv(a,b){var c,d;d=kv(a,b);c=a.a.dd(d);return new xv(a,c)} +function ls(a,b){var c;c=(KDb(a),a).g;BDb(!!c);KDb(b);return c(b)} +function vde(a){a.a==(pce(),oce)&&Bde(a,qce(a.g,a.b));return a.a} +function xde(a){a.d==(pce(),oce)&&Dde(a,uce(a.g,a.b));return a.d} +function Qi(a,b){Oi.call(this,new Zrb(Jv(a)));bk(b,Nte);this.a=b} +function Wre(a,b,c){Uqe.call(this,25);this.b=a;this.a=b;this.c=c} +function vre(a){Tqe();Uqe.call(this,a);this.c=false;this.a=false} +function iib(a,b){jib.call(this,1,2,WC(OC(cE,1),Pue,30,15,[a,b]))} +function Kcb(a,b){return Mcb(lD(Scb(a)?bdb(a):a,Scb(b)?bdb(b):b))} +function Ycb(a,b){return Mcb(rD(Scb(a)?bdb(a):a,Scb(b)?bdb(b):b))} +function fdb(a,b){return Mcb(zD(Scb(a)?bdb(a):a,Scb(b)?bdb(b):b))} +function brb(a,b){return Irb(a.a,b)?pDb(a.b,JD(b,23).g,null):null} +function Uu(a){Qb(a);return RD(a,18)?new kmb(JD(a,18)):Vu(a.Jc())} +function Ex(a){Dx();this.a=(Fnb(),RD(a,59)?new nqb(a):new $ob(a))} +function Frb(a){var b;b=JD(iDb(a.b),10);return new Krb(a.a,b,a.c)} +function nHb(a,b){var c;c=Reb(MD(a.a.mf((gjd(),Nid))));oHb(a,b,c)} +function fTb(a,b){bTb();return a.c==b.c?Xeb(b.d,a.d):Xeb(a.c,b.c)} +function gTb(a,b){bTb();return a.c==b.c?Xeb(a.d,b.d):Xeb(a.c,b.c)} +function iTb(a,b){bTb();return a.c==b.c?Xeb(a.d,b.d):Xeb(b.c,a.c)} +function hTb(a,b){bTb();return a.c==b.c?Xeb(b.d,a.d):Xeb(b.c,a.c)} +function oFb(a,b){a.b=a.b|b.b;a.c=a.c|b.c;a.d=a.d|b.d;a.a=a.a|b.a} +function Fmb(a){IDb(a.ad?1:0} +function Ggc(a,b){var c,d;c=Fgc(b);d=c;return JD(bjb(a.c,d),15).a} +function YIc(a,b,c){var d;d=a.d[b.p];a.d[b.p]=a.d[c.p];a.d[c.p]=d} +function Wnd(a,b,c){var d;if(a.n&&!!b&&!!c){d=new Bqd;Ylb(a.e,d)}} +function HRb(a,b){bsb(a.a,b);if(b.d){throw Icb(new qz(jwe))}b.d=a} +function o7c(a,b){this.a=new imb;this.d=new imb;this.f=a;this.c=b} +function Uad(){Pad();this.b=new Yrb;this.a=new Yrb;this.c=new imb} +function qQb(){this.c=new EQb;this.a=new hVb;this.b=new dWb;HVb()} +function MId(a,b,c){this.d=a;this.j=b;this.e=c;this.o=-1;this.p=3} +function NId(a,b,c){this.d=a;this.k=b;this.f=c;this.o=-1;this.p=5} +function Q1d(a,b,c,d,e,f){P1d.call(this,a,b,c,d,e);f&&(this.o=-2)} +function S1d(a,b,c,d,e,f){R1d.call(this,a,b,c,d,e);f&&(this.o=-2)} +function U1d(a,b,c,d,e,f){T1d.call(this,a,b,c,d,e);f&&(this.o=-2)} +function W1d(a,b,c,d,e,f){V1d.call(this,a,b,c,d,e);f&&(this.o=-2)} +function Y1d(a,b,c,d,e,f){X1d.call(this,a,b,c,d,e);f&&(this.o=-2)} +function $1d(a,b,c,d,e,f){Z1d.call(this,a,b,c,d,e);f&&(this.o=-2)} +function d2d(a,b,c,d,e,f){c2d.call(this,a,b,c,d,e);f&&(this.o=-2)} +function f2d(a,b,c,d,e,f){e2d.call(this,a,b,c,d,e);f&&(this.o=-2)} +function L5d(a,b,c,d){r5d.call(this,c);this.b=a;this.c=b;this.d=d} +function kde(a,b){this.f=a;this.a=(pce(),nce);this.c=nce;this.b=b} +function Hde(a,b){this.g=a;this.d=(pce(),oce);this.a=oce;this.b=b} +function Eke(a,b){!a.c&&(a.c=new See(a,0));Dee(a.c,(lke(),dke),b)} +function Mee(a,b){return Nee(a,b,RD(b,103)&&(JD(b,19).Bb&tve)!=0)} +function dB(a,b){return Hfb(Pcb(a.q.getTime()),Pcb(b.q.getTime()))} +function ej(a){return dk(a.e.Pd().gc()*a.c.Pd().gc(),16,new oj(a))} +function AWd(a){return !!a.u&&rWd(a.u.a).i!=0&&!(!!a.n&&bYd(a.n))} +function n2d(a){return !!a.a&&m2d(a.a.a).i!=0&&!(!!a.b&&m3d(a.b))} +function Lud(a,b){if(b==0){return !!a.o&&a.o.f!=0}return Tsd(a,b)} +function jub(a){IDb(a.b.b!=a.d.a);a.c=a.b=a.b.b;--a.a;return a.c.c} +function Yhb(a){while(a.d>0&&a.a[--a.d]==0);a.a[a.d++]==0&&(a.e=0)} +function Mxb(a){return !a.a?a.c:a.e.length==0?a.a.a:a.a.a+(''+a.e)} +function Qjb(a,b){this.a=a;Kjb.call(this,a);MDb(b,a.gc());this.b=b} +function Elb(a){this.a=SC(aJ,rte,1,tfb($wnd.Math.max(8,a))<<1,5,1)} +function Byb(a){Cyb.call(this,a,(gzb(),czb),null,false,null,false)} +function dyb(a,b){var c;c=1-b;a.a[c]=eyb(a.a[c],c);return eyb(a,b)} +function TDb(a,b){var c,d;d=Kcb(a,yve);c=Zcb(b,32);return Ycb(c,d)} +function Cc(a,b,c){var d;d=JD(a.Zb().xc(b),18);return !!d&&d.Gc(c)} +function Gc(a,b,c){var d;d=JD(a.Zb().xc(b),18);return !!d&&d.Kc(c)} +function rEb(a,b,c){var d;d=(Qb(a),new kmb(a));pEb(new qEb(d,b,c))} +function UTb(a,b,c){var d;d=(Qb(a),new kmb(a));STb(new TTb(d,b,c))} +function ONc(a,b,c){a.a=b;a.c=c;a.b.a.$b();_tb(a.d);qDb(a.e.a.c,0)} +function t2c(a,b){var c;a.e=new l2c;c=k_c(b);gmb(c,a.c);u2c(a,c,0)} +function UTc(a,b){return new prd(b,Ufd(Ifd(b.e),a,a),(Ndb(),true))} +function sYc(a,b){lYc();return JD(lNb(b,(DXc(),qXc)),15).a>=a.gc()} +function YKc(a){zKc();return !vWb(a)&&!(!vWb(a)&&a.c.i.c==a.d.i.c)} +function TXb(a){return JD(hmb(a,SC(CP,mye,17,a.c.length,0,1)),323)} +function m3c(a){lOd((!a.a&&(a.a=new A3d(Q3,a,10,11)),a.a),new i3c)} +function T8d(){var a,b,c;b=(c=(a=new q0d,a),c);Ylb(P8d,b);return b} +function Cyd(a,b,c,d,e,f){Dyd(a,b,c,f);CWd(a,d);DWd(a,e);return a} +function chb(a,b,c,d){a.a+=''+Ggb(b==null?vte:qdb(b),c,d);return a} +function Pb(a,b){if(a<0||a>=b){throw Icb(new Cdb(Ib(a,b)))}return a} +function Tb(a,b,c){if(a<0||bc){throw Icb(new Cdb(Kb(a,b,c)))}} +function idd(a,b,c,d){var e;e=new pdd;e.a=b;e.b=c;e.c=d;Qtb(a.b,e)} +function hdd(a,b,c,d){var e;e=new pdd;e.a=b;e.b=c;e.c=d;Qtb(a.a,e)} +function Mz(a,b,c){var d;d=Kz();try{return Jz(a,b,c)}finally{Nz(d)}} +function cdb(a){var b;if(Scb(a)){b=a;return b==-0.?0:b}return wD(a)} +function sjb(a,b){if(RD(b,45)){return Jd(a.a,JD(b,45))}return false} +function lrb(a,b){if(RD(b,45)){return Jd(a.a,JD(b,45))}return false} +function ztb(a,b){if(RD(b,45)){return Jd(a.a,JD(b,45))}return false} +function zBb(a,b){if(a.a<=a.b){b.Bd(a.a++);return true}return false} +function fx(a){if(Gh(a).dc()){return false}Hh(a,new jx);return true} +function fBb(a){var b;_Ab(a);b=new Uqb;mwb(a.a,new vBb(b));return b} +function CBb(a){var b;_Ab(a);b=new qsb;mwb(a.a,new KBb(b));return b} +function iz(b){if(!('stack' in b)){try{throw b}catch(a){}}return b} +function Yu(a){return new jmb((bk(a,mue),Xy(Jcb(Jcb(5,a),a/10|0))))} +function VXb(a){return JD(hmb(a,SC(dQ,oye,12,a.c.length,0,1)),2004)} +function Ui(a){return dk(a.e.Pd().gc()*a.c.Pd().gc(),273,new ij(a))} +function h8c(){h8c=ndb;g8c=gs((_7c(),WC(OC(P0,1),kue,477,0,[$7c])))} +function q8c(){q8c=ndb;p8c=gs((j8c(),WC(OC(Q0,1),kue,546,0,[i8c])))} +function Q9c(){Q9c=ndb;P9c=gs((I9c(),WC(OC(Y0,1),kue,527,0,[H9c])))} +function HDc(){HDc=ndb;GDc=qx(zfb(1),zfb(4));FDc=qx(zfb(1),zfb(2))} +function WXc(){WXc=ndb;VXc=new XXc('DFS',0);UXc=new XXc('BFS',1)} +function sqc(){sqc=ndb;qqc=new tqc(Cwe,0);rqc=new tqc('TOP_LEFT',1)} +function ZEc(a,b,c){this.d=new kFc(this);this.e=a;this.i=b;this.f=c} +function OId(a,b,c,d){this.d=a;this.n=b;this.g=c;this.o=d;this.p=-1} +function zWb(a,b,c){!!a.d&&dmb(a.d.e,a);a.d=b;!!a.d&&Xlb(a.d.e,c,a)} +function MBd(a,b,c){var d;d=BAd(c);xo(a.n,d,b);xo(a.o,b,c);return b} +function EAd(a,b){var c,d;c=BB(a,b);d=null;!!c&&(d=c.qe());return d} +function FAd(a,b){var c,d;c=iC(a,b);d=null;!!c&&(d=c.qe());return d} +function DAd(a,b){var c,d;c=iC(a,b);d=null;!!c&&(d=c.ne());return d} +function GAd(a,b){var c,d;c=iC(a,b);d=null;!!c&&(d=HAd(c));return d} +function Y1b(a,b){c2b(b,a);e2b(a.d);e2b(JD(lNb(a,($xc(),Ewc)),213))} +function Z1b(a,b){f2b(b,a);h2b(a.d);h2b(JD(lNb(a,($xc(),Ewc)),213))} +function olb(a,b){KDb(b);a.b=a.b-1&a.a.length-1;VC(a.a,a.b,b);tlb(a)} +function plb(a,b){KDb(b);VC(a.a,a.c,b);a.c=a.c+1&a.a.length-1;tlb(a)} +function iub(a){IDb(a.b!=a.d.c);a.c=a.b;a.b=a.b.a;++a.a;return a.c.c} +function Qo(a){if(a.e.g!=a.b){throw Icb(new Oqb)}return !!a.c&&a.d>0} +function ar(a){if(RD(a,18)){return JD(a,18).dc()}return !a.Jc().Ob()} +function hx(a){return new Wvb(Knb(JD(a.a.kd(),18).gc(),a.a.jd()),16)} +function Zhe(a){var b;b=a.Dh();this.a=RD(b,72)?JD(b,72).Gi():b.Jc()} +function H_b(a,b){var c;c=JD(htb(a.b,b),66);!c&&(c=new aub);return c} +function ebc(a,b){var c;c=b.a;xWb(c,b.c.d);yWb(c,b.d.d);hgd(c.a,a.n)} +function Vc(a,b,c,d){return RD(c,59)?new Ig(a,b,c,d):new wg(a,b,c,d)} +function ghc(){dhc();return WC(OC(yU,1),kue,413,0,[_gc,ahc,bhc,chc])} +function RLb(){OLb();return WC(OC(HN,1),kue,409,0,[NLb,KLb,LLb,MLb])} +function VSb(){OSb();return WC(OC(TO,1),kue,408,0,[KSb,NSb,LSb,MSb])} +function lzb(){gzb();return WC(OC(rL,1),kue,309,0,[czb,dzb,ezb,fzb])} +function wUb(){tUb();return WC(OC(iP,1),kue,383,0,[sUb,qUb,pUb,rUb])} +function g8b(){c8b();return WC(OC(ZR,1),kue,367,0,[b8b,_7b,a8b,$7b])} +function Rnc(){Lnc();return WC(OC(RV,1),kue,301,0,[Inc,Jnc,Hnc,Knc])} +function bzc(){Yyc();return WC(OC(lW,1),kue,203,0,[Wyc,Xyc,Vyc,Uyc])} +function Pzc(){Mzc();return WC(OC(oW,1),kue,269,0,[Jzc,Izc,Kzc,Lzc])} +function $Gc(){XGc();return WC(OC(mX,1),kue,404,0,[TGc,VGc,WGc,UGc])} +function Uhc(a){var b;return a.j==(mmd(),jmd)&&(b=Vhc(a),Hrb(b,Tld))} +function ySc(){sSc();return WC(OC(IZ,1),kue,398,0,[oSc,pSc,qSc,rSc])} +function Akc(a,b){return JD(Pub(ZBb(JD(Qc(a.k,b),16).Mc(),pkc)),113)} +function Bkc(a,b){return JD(Pub($Bb(JD(Qc(a.k,b),16).Mc(),pkc)),113)} +function JSc(a,b){return Kfd(new Yfd(b.e.a+b.f.a/2,b.e.b+b.f.b/2),a)} +function $2c(){W2c();return WC(OC($_,1),kue,401,0,[V2c,S2c,U2c,T2c])} +function J1c(){F1c();return WC(OC(N_,1),kue,354,0,[E1c,C1c,D1c,B1c])} +function RXc(){OXc();return WC(OC(K$,1),kue,353,0,[NXc,LXc,MXc,KXc])} +function Ejd(){Bjd();return WC(OC(w2,1),kue,278,0,[yjd,xjd,zjd,Ajd])} +function Xjd(){Ujd();return WC(OC(y2,1),kue,222,0,[Tjd,Rjd,Qjd,Sjd])} +function Pkd(){Lkd();return WC(OC(E2,1),kue,292,0,[Kkd,Hkd,Ikd,Jkd])} +function End(){Bnd();return WC(OC(U2,1),kue,288,0,[xnd,And,ynd,znd])} +function Ymd(){Vmd();return WC(OC(N2,1),kue,380,0,[Tmd,Umd,Smd,Rmd])} +function Wod(){Tod();return WC(OC(Z2,1),kue,326,0,[Sod,Pod,Rod,Qod])} +function Jqd(){Gqd();return WC(OC(v3,1),kue,407,0,[Dqd,Eqd,Cqd,Fqd])} +function Jsd(a,b,c){return b<0?$sd(a,c):JD(c,69).uk().zk(a,a.ei(),b)} +function LBd(a,b,c){var d;d=BAd(c);xo(a.f,d,b);ejb(a.g,b,c);return b} +function NBd(a,b,c){var d;d=BAd(c);xo(a.p,d,b);ejb(a.q,b,c);return b} +function HEd(a){var b,c;b=(ksd(),c=new ywd,c);!!a&&wwd(b,a);return b} +function YFd(a){var b;b=a.$i(a.i);a.i>0&&ohb(a.g,0,b,0,a.i);return b} +function Pdc(a){Ldc();if(RD(a.g,156)){return JD(a.g,156)}return null} +function IGd(a){GGd();return _ib(FGd,a)?JD(bjb(FGd,a),342).Pg():null} +function CNc(a){a.a=null;a.e=null;qDb(a.b.c,0);qDb(a.f.c,0);a.c=null} +function rbd(a,b){var c;for(c=a.j.c.length;c>24} +function CId(a){if(a.p!=1)throw Icb(new jfb);return ddb(a.k)<<24>>24} +function IId(a){if(a.p!=7)throw Icb(new jfb);return ddb(a.k)<<16>>16} +function zId(a){if(a.p!=7)throw Icb(new jfb);return ddb(a.f)<<16>>16} +function bib(a,b){if(b.e==0||a.e==0){return Vhb}return Sib(),Tib(a,b)} +function Nd(a,b){return XD(b)===XD(a)?'(this Map)':b==null?vte:qdb(b)} +function aEb(a,b,c){return Qeb(MD(Wd(vsb(a.f,b))),MD(Wd(vsb(a.f,c))))} +function mec(a,b,c){var d;d=JD(bjb(a.g,c),60);Ylb(a.a.c,new ard(b,d))} +function vx(a,b){var c;c=new jhb;a.Ed(c);c.a+='..';b.Fd(c);return c.a} +function Br(a){var b;b=0;while(a.Ob()){a.Pb();b=Jcb(b,1)}return Xy(b)} +function NPc(a,b,c,d,e){var f;f=IPc(e,c,d);Ylb(b,nPc(e,f));RPc(a,e,b)} +function Rfc(a,b,c){a.i=0;a.e=0;if(b==c){return}Qfc(a,b,c);Pfc(a,b,c)} +function Kk(a,b,c,d){this.e=null;this.c=a;this.d=b;this.a=c;this.b=d} +function _lc(a,b,c,d,e){this.i=a;this.a=b;this.e=c;this.j=d;this.f=e} +function JNb(a,b){uNb.call(this);this.a=a;this.b=b;Ylb(this.a.b,this)} +function hib(a,b){Whb();jib.call(this,a,1,WC(OC(cE,1),Pue,30,15,[b]))} +function hee(a,b,c){return iee(a,b,c,RD(b,103)&&(JD(b,19).Bb&tve)!=0)} +function aee(a,b,c){return bee(a,b,c,RD(b,103)&&(JD(b,19).Bb&tve)!=0)} +function Oee(a,b,c){return Pee(a,b,c,RD(b,103)&&(JD(b,19).Bb&tve)!=0)} +function DKc(a,b){return a==(UYb(),RYb)&&b==RYb?4:a==RYb||b==RYb?8:32} +function IQd(a,b){return JD(b==null?Wd(vsb(a.f,null)):Psb(a.i,b),290)} +function Spd(a,b){var c;c=b;while(c){Ffd(a,c.i,c.j);c=Czd(c)}return a} +function rWd(a){if(!a.n){wWd(a);a.n=new fYd(a,w6,a);xWd(a)}return a.n} +function mie(a,b){lie();var c;c=JD(a,69).tk();I4d(c,b);return c.vl(b)} +function Srb(a){IDb(a.a'+LNb(a.d):'e_'+ADb(a)} +function SQd(a,b){var c;return c=b!=null?cjb(a,b):Wd(vsb(a.f,b)),ZD(c)} +function bRd(a,b){var c;return c=b!=null?cjb(a,b):Wd(vsb(a.f,b)),ZD(c)} +function Wpb(a,b){var c;for(c=0;c=0&&a.a[c]===b[c];c--);return c<0} +function mgc(a,b){var c,d;d=false;do{c=pgc(a,b);d=d|c}while(c);return d} +function OJc(){OJc=ndb;NJc=new PJc('UPPER',0);MJc=new PJc('LOWER',1)} +function Yrc(){Yrc=ndb;Xrc=new Zrc(cye,0);Wrc=new Zrc('ALTERNATING',1)} +function Bnd(){Bnd=ndb;xnd=new Gnd;And=new Ind;ynd=new Knd;znd=new Mnd} +function Gnc(){Gnc=ndb;Fnc=gs((Bnc(),WC(OC(QV,1),kue,422,0,[znc,Anc])))} +function Aoc(){Aoc=ndb;zoc=gs((voc(),WC(OC(UV,1),kue,419,0,[toc,uoc])))} +function cpc(){cpc=ndb;bpc=gs((Zoc(),WC(OC(XV,1),kue,476,0,[Yoc,Xoc])))} +function xqc(){xqc=ndb;wqc=gs((sqc(),WC(OC(cW,1),kue,420,0,[qqc,rqc])))} +function bsc(){bsc=ndb;asc=gs((Yrc(),WC(OC(eW,1),kue,423,0,[Xrc,Wrc])))} +function Zzc(){Zzc=ndb;Yzc=gs((Uzc(),WC(OC(pW,1),kue,421,0,[Szc,Tzc])))} +function TJc(){TJc=ndb;SJc=gs((OJc(),WC(OC(NX,1),kue,518,0,[NJc,MJc])))} +function dNc(){dNc=ndb;cNc=gs(($Mc(),WC(OC(HY,1),kue,508,0,[YMc,ZMc])))} +function XMc(){XMc=ndb;WMc=gs((SMc(),WC(OC(GY,1),kue,509,0,[RMc,QMc])))} +function GPc(){GPc=ndb;FPc=gs((BPc(),WC(OC(cZ,1),kue,515,0,[APc,zPc])))} +function ERc(){ERc=ndb;DRc=gs((zRc(),WC(OC(xZ,1),kue,454,0,[xRc,yRc])))} +function _Xc(){_Xc=ndb;$Xc=gs((WXc(),WC(OC(L$,1),kue,425,0,[VXc,UXc])))} +function _$c(){_$c=ndb;$$c=gs((T$c(),WC(OC(t_,1),kue,487,0,[R$c,S$c])))} +function y0c(){y0c=ndb;x0c=gs((s0c(),WC(OC(I_,1),kue,426,0,[q0c,r0c])))} +function n5c(){n5c=ndb;m5c=gs((f5c(),WC(OC(o0,1),kue,478,0,[d5c,e5c])))} +function y8c(){y8c=ndb;x8c=gs((t8c(),WC(OC(R0,1),kue,428,0,[s8c,r8c])))} +function _9c(){_9c=ndb;$9c=gs((T9c(),WC(OC(Z0,1),kue,427,0,[S9c,R9c])))} +function xOb(){xOb=ndb;wOb=gs((sOb(),WC(OC(hO,1),kue,424,0,[qOb,rOb])))} +function A2b(){A2b=ndb;z2b=gs((v2b(),WC(OC(cR,1),kue,502,0,[u2b,t2b])))} +function Tvb(a){Lvb();Qvb(this,ddb(Kcb($cb(a,24),Pve)),ddb(Kcb(a,Pve)))} +function r0b(a){return (a.k==(UYb(),RYb)||a.k==NYb)&&mNb(a,(Krc(),Jqc))} +function JQd(a,b,c){return JD(b==null?wsb(a.f,null,c):Qsb(a.i,b,c),290)} +function ujd(){ojd();return WC(OC(v2,1),kue,86,0,[mjd,ljd,kjd,jjd,njd])} +function tmd(){mmd();return WC(OC(J2,1),eye,64,0,[kmd,Uld,Tld,jmd,lmd])} +function Lz(b){Iz();return function(){return Mz(b,this,arguments);var a}} +function le(a,b){var c;c=b.jd();return new ap(c,a.e.pc(c,JD(b.kd(),18)))} +function Ikb(a,b){var c,d;c=b.jd();d=a.De(c);return !!d&&Jub(d.e,b.kd())} +function Efb(a,b){var c,d;KDb(b);for(d=a.Jc();d.Ob();){c=d.Pb();b.Ad(c)}} +function fmb(a,b,c){var d;d=(JDb(b,a.c.length),a.c[b]);a.c[b]=c;return d} +function tIc(a,b){var c,d;c=b;d=0;while(c>0){d+=a.a[c];c-=c&-c}return d} +function Tpd(a,b){var c;c=b;while(c){Ffd(a,-c.i,-c.j);c=Czd(c)}return a} +function usb(a,b){var c;c=a.a.get(b);return c==null?SC(aJ,rte,1,0,5,1):c} +function OBb(a,b){return (aBb(a),eCb(new gCb(a,new xCb(b,a.a)))).zd(MBb)} +function WQb(){TQb();return WC(OC(AO,1),kue,363,0,[OQb,PQb,QQb,RQb,SQb])} +function rVb(a){oVb();_Tb(this);this.a=new aub;pVb(this,a);Qtb(this.a,a)} +function NUb(){Wlb(this);this.b=new Yfd(ove,ove);this.a=new Yfd(pve,pve)} +function tAb(a){lAb();if(iAb){return}this.c=a;this.e=true;this.a=new imb} +function lAb(){lAb=ndb;iAb=true;gAb=false;hAb=false;kAb=false;jAb=false} +function f5c(){f5c=ndb;d5c=new h5c(Vye,0);e5c=new h5c('TARGET_WIDTH',1)} +function G_c(){C_c();return WC(OC(y_,1),kue,364,0,[A_c,x_c,B_c,y_c,z_c])} +function Fhc(){Bhc();return WC(OC(GU,1),kue,371,0,[xhc,zhc,Ahc,yhc,whc])} +function pzc(){jzc();return WC(OC(mW,1),kue,328,0,[izc,fzc,gzc,ezc,hzc])} +function Trc(){Qrc();return WC(OC(dW,1),kue,165,0,[Prc,Lrc,Mrc,Nrc,Orc])} +function c7c(){_6c();return WC(OC(A0,1),kue,369,0,[X6c,W6c,Z6c,Y6c,$6c])} +function H8c(){E8c();return WC(OC(S0,1),kue,330,0,[z8c,A8c,D8c,B8c,C8c])} +function Jed(){Ged();return WC(OC(g2,1),kue,160,0,[Eed,Ded,Bed,Fed,Ced])} +function old(){lld();return WC(OC(G2,1),kue,257,0,[ild,kld,gld,hld,jld])} +function cdd(a,b){var c;c=JD(htb(a.d,b),21);return c?c:JD(htb(a.e,b),21)} +function lLd(a){this.b=a;fKd.call(this,a);this.a=JD(fud(this.b.a,4),129)} +function uLd(a){this.b=a;AKd.call(this,a);this.a=JD(fud(this.b.a,4),129)} +function ABb(a,b){this.c=0;this.b=b;xwb.call(this,a,17493);this.a=this.c} +function O1d(a,b,c,d,e){QId.call(this,b,d,e);H1d(this);this.c=a;this.b=c} +function T1d(a,b,c,d,e){MId.call(this,b,d,e);H1d(this);this.c=a;this.a=c} +function X1d(a,b,c,d,e){NId.call(this,b,d,e);H1d(this);this.c=a;this.a=c} +function e2d(a,b,c,d,e){QId.call(this,b,d,e);H1d(this);this.c=a;this.a=c} +function zEc(a,b,c){a.a.c.length=0;DEc(a,b,c);a.a.c.length==0||wEc(a,b)} +function qo(a){a.i=0;Tmb(a.b,null);Tmb(a.c,null);a.a=null;a.e=null;++a.g} +function zc(a){a.e=3;a.d=a.Yb();if(a.e!=2){a.e=0;return true}return false} +function tcd(a,b){if(RD(b,144)){return sgb(a.c,JD(b,144).c)}return false} +function W3d(a){var b;if(!a.c){b=a.r;RD(b,88)&&(a.c=JD(b,29))}return a.c} +function wWd(a){if(!a.t){a.t=new uYd(a);XEd(new Abe(a),0,a.t)}return a.t} +function vWb(a){if(!a.c||!a.d){return false}return !!a.c.i&&a.c.i==a.d.i} +function eib(a,b){if(b==0||a.e==0){return a}return b>0?xib(a,b):Aib(a,-b)} +function fib(a,b){if(b==0||a.e==0){return a}return b>0?Aib(a,b):xib(a,-b)} +function Xr(a){if(Wr(a)){a.c=a.a;return a.a.Pb()}else{throw Icb(new Hub)}} +function rgb(a){var b;b=a.length;return sgb(sve.substr(sve.length-b,b),a)} +function U7b(a){var b,c;b=a.c.i;c=a.d.i;return b.k==(UYb(),NYb)&&c.k==NYb} +function ZC(a){var b,c,d;b=a&dve;c=a>>22&dve;d=a<0?eve:0;return _C(b,c,d)} +function Tc(a,b){var c,d;c=JD(Pv(a.c,b),18);if(c){d=c.gc();c.$b();a.d-=d}} +function Nz(a){a&&Uz((Sz(),Rz));--Fz;if(a){if(Hz!=-1){Pz(Hz);Hz=-1}}} +function Kdb(a){Idb.call(this,a==null?vte:qdb(a),RD(a,80)?JD(a,80):null)} +function TVb(a){var b;b=new BWb;jNb(b,a);oNb(b,($xc(),nwc),null);return b} +function Osd(a,b,c){var d;return d=a.Fh(b),d>=0?a.Ih(d,c,true):Zsd(a,b,c)} +function WTc(a,b,c){return Xeb(Kfd(FSc(a),Ifd(b.b)),Kfd(FSc(a),Ifd(c.b)))} +function XTc(a,b,c){return Xeb(Kfd(FSc(a),Ifd(b.e)),Kfd(FSc(a),Ifd(c.e)))} +function r7c(a,b){return $wnd.Math.min(Jfd(b.a,a.d.d.c),Jfd(b.b,a.d.d.c))} +function wie(a,b,c){var d;d=new xie(a.a);Ld(d,a.a.a);wsb(d.f,b,c);a.a.a=d} +function OHb(a,b,c,d){var e;for(e=0;eb){throw Icb(new Cdb(Jb(a,b,'index')))}return a} +function Tqb(a){var b;b=a.e+a.f;if(isNaN(b)&&Yeb(a.d)){return a.d}return b} +function hB(a,b){var c;c=a.q.getHours()+(b/60|0);a.q.setMinutes(b);eB(a,c)} +function qgb(a,b){var c,d;c=(KDb(a),a);d=(KDb(b),b);return c==d?0:cb.p){return -1}return 0} +function m8d(a,b){if(_ib(a.a,b)){gjb(a.a,b);return true}else{return false}} +function fd(a){var b,c;b=a.jd();c=JD(a.kd(),18);return ek(c.Lc(),new hh(b))} +function vTc(a){var b;b=a.b;if(b.b==0){return null}return JD(au(b,0),65).b} +function Dwb(a,b){KDb(b);if(a.c=0,'Initial capacity must not be negative')} +function _ed(){_ed=ndb;$ed=new nEd('org.eclipse.elk.labels.labelManager')} +function R7b(){R7b=ndb;Q7b=new oEd('separateLayerConnections',(c8b(),b8b))} +function BPc(){BPc=ndb;APc=new CPc('REGULAR',0);zPc=new CPc('CRITICAL',1)} +function t8c(){t8c=ndb;s8c=new u8c('FIXED',0);r8c=new u8c('CENTER_NODE',1)} +function Bnc(){Bnc=ndb;znc=new Cnc('QUADRATIC',0);Anc=new Cnc('SCANLINE',1)} +function aoc(){aoc=ndb;_nc=gs((Xnc(),WC(OC(SV,1),kue,350,0,[Unc,Wnc,Vnc])))} +function Joc(){Joc=ndb;Ioc=gs((Eoc(),WC(OC(VV,1),kue,449,0,[Coc,Boc,Doc])))} +function Zpc(){Zpc=ndb;Ypc=gs((Upc(),WC(OC(_V,1),kue,302,0,[Spc,Tpc,Rpc])))} +function gqc(){gqc=ndb;fqc=gs((bqc(),WC(OC(aW,1),kue,329,0,[aqc,_pc,$pc])))} +function pqc(){pqc=ndb;oqc=gs((kqc(),WC(OC(bW,1),kue,315,0,[iqc,jqc,hqc])))} +function oic(){oic=ndb;nic=gs((jic(),WC(OC(HU,1),kue,368,0,[iic,hic,gic])))} +function Tyc(){Tyc=ndb;Syc=gs((Nyc(),WC(OC(kW,1),kue,352,0,[Kyc,Lyc,Myc])))} +function gAc(){gAc=ndb;fAc=gs((bAc(),WC(OC(qW,1),kue,452,0,[aAc,$zc,_zc])))} +function pAc(){pAc=ndb;oAc=gs((kAc(),WC(OC(rW,1),kue,381,0,[hAc,iAc,jAc])))} +function yAc(){yAc=ndb;xAc=gs((tAc(),WC(OC(sW,1),kue,348,0,[sAc,qAc,rAc])))} +function SAc(){SAc=ndb;RAc=gs((NAc(),WC(OC(uW,1),kue,349,0,[KAc,LAc,MAc])))} +function _Ac(){_Ac=ndb;$Ac=gs((WAc(),WC(OC(vW,1),kue,351,0,[VAc,TAc,UAc])))} +function iBc(){iBc=ndb;hBc=gs((dBc(),WC(OC(wW,1),kue,382,0,[bBc,cBc,aBc])))} +function kWc(){kWc=ndb;jWc=gs((fWc(),WC(OC(G$,1),kue,385,0,[eWc,dWc,cWc])))} +function I0c(){I0c=ndb;H0c=gs((C0c(),WC(OC(J_,1),kue,386,0,[z0c,A0c,B0c])))} +function V1c(){V1c=ndb;U1c=gs((P1c(),WC(OC(O_,1),kue,303,0,[N1c,O1c,M1c])))} +function G2c(){G2c=ndb;F2c=gs((B2c(),WC(OC(W_,1),kue,436,0,[y2c,z2c,A2c])))} +function R5c(){R5c=ndb;Q5c=gs((J5c(),WC(OC(r0,1),kue,429,0,[G5c,I5c,H5c])))} +function q6c(){q6c=ndb;p6c=gs((i6c(),WC(OC(w0,1),kue,430,0,[f6c,h6c,g6c])))} +function U7c(){U7c=ndb;T7c=gs((P7c(),WC(OC(L0,1),kue,435,0,[M7c,N7c,O7c])))} +function J3c(){J3c=ndb;I3c=gs((E3c(),WC(OC(d0,1),kue,387,0,[C3c,D3c,B3c])))} +function eQb(){eQb=ndb;dQb=gs((_Pb(),WC(OC(pO,1),kue,384,0,[ZPb,YPb,$Pb])))} +function HAb(){HAb=ndb;GAb=gs((CAb(),WC(OC(HL,1),kue,130,0,[zAb,AAb,BAb])))} +function EHb(){EHb=ndb;DHb=gs((zHb(),WC(OC(hN,1),kue,237,0,[wHb,xHb,yHb])))} +function jIb(){jIb=ndb;iIb=gs((eIb(),WC(OC(kN,1),kue,461,0,[cIb,bIb,dIb])))} +function aJb(){aJb=ndb;_Ib=gs((XIb(),WC(OC(rN,1),kue,462,0,[WIb,VIb,UIb])))} +function Pjd(){Pjd=ndb;Ojd=gs((Kjd(),WC(OC(x2,1),kue,279,0,[Hjd,Ijd,Jjd])))} +function wnd(){wnd=ndb;vnd=gs((rnd(),WC(OC(P2,1),kue,281,0,[pnd,ond,qnd])))} +function Gkd(){Gkd=ndb;Fkd=gs((Bkd(),WC(OC(C2,1),kue,347,0,[zkd,ykd,Akd])))} +function Qmd(){Qmd=ndb;Pmd=gs((Lmd(),WC(OC(M2,1),kue,300,0,[Imd,Jmd,Kmd])))} +function Qud(a,b){return !a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0)),SLd(a.o,b)} +function nMd(a){!a.g&&(a.g=new hOd);!a.g.d&&(a.g.d=new lNd(a));return a.g.d} +function eMd(a){!a.g&&(a.g=new hOd);!a.g.b&&(a.g.b=new fNd(a));return a.g.b} +function fMd(a){!a.g&&(a.g=new hOd);!a.g.c&&(a.g.c=new JNd(a));return a.g.c} +function $Ld(a){!a.g&&(a.g=new hOd);!a.g.a&&(a.g.a=new rNd(a));return a.g.a} +function z7d(a,b,c,d){!!c&&(d=c.Oh(b,zWd(c.Ah(),a.c.sk()),null,d));return d} +function A7d(a,b,c,d){!!c&&(d=c.Qh(b,zWd(c.Ah(),a.c.sk()),null,d));return d} +function Jib(a,b,c,d){var e;e=SC(cE,Pue,30,b+1,15,1);Kib(e,a,b,c,d);return e} +function SC(a,b,c,d,e,f){var g;g=TC(e,d);e!=10&&WC(OC(a,f),b,c,e,g);return g} +function Yde(a,b,c){var d,e;e=new Nfe(b,a);for(d=0;dc||b=0?a.Ih(c,true,true):Zsd(a,b,true)} +function x6c(a,b){var c,d,e;e=a.r;d=a.d;c=z6c(a,b,true);return c.b!=e||c.a!=d} +function nhc(a,b){gtb(a.e,b)||itb(a.e,b,new thc(b));return JD(htb(a.e,b),113)} +function yAb(a,b,c,d){KDb(a);KDb(b);KDb(c);KDb(d);return new IAb(a,b,new Szb)} +function Tce(a,b,c){var d,e;e=(d=L3d(a.b,b),d);return !e?null:rde(Nce(a,e),c)} +function sBd(a,b,c){var d,e,f;d=iC(a,c);e=null;!!d&&(e=HAd(d));f=e;OBd(b,c,f)} +function tBd(a,b,c){var d,e,f;d=iC(a,c);e=null;!!d&&(e=HAd(d));f=e;OBd(b,c,f)} +function BTd(a,b,c,d){this.$j();this.a=b;this.b=a;this.c=new uhe(this,b,c,d)} +function M1d(a,b,c,d,e,f){OId.call(this,b,d,e,f);H1d(this);this.c=a;this.b=c} +function a2d(a,b,c,d,e,f){OId.call(this,b,d,e,f);H1d(this);this.c=a;this.a=c} +function Elc(a,b,c,d,e){xlc(this);this.b=a;this.d=b;this.f=c;this.g=d;this.c=e} +function xCb(a,b){Bwb.call(this,b.xd(),b.wd()&-16449);KDb(a);this.a=a;this.c=b} +function nTb(a,b){if(a.a.Le(b.d,a.b)>0){Ylb(a.c,new GSb(b.c,b.d,a.d));a.b=b.d}} +function sIc(a){a.a=SC(cE,Pue,30,a.b+1,15,1);a.c=SC(cE,Pue,30,a.b,15,1);a.d=0} +function CIc(a,b,c){var d;d=MIc(a,b,c);a.b=new vIc(d.c.length);return EIc(a,d)} +function Pse(a){if(a.b<=0)throw Icb(new Hub);--a.b;a.a-=a.c.c;return zfb(a.a)} +function REd(a){var b;if(!a.a){throw Icb(new Iub)}b=a.a;a.a=Czd(a.a);return b} +function gXd(a){var b;if(a.ll()){for(b=a.i-1;b>=0;--b){SFd(a,b)}}return YFd(a)} +function Er(a){var b;Qb(a);if(RD(a,204)){b=JD(a,204);return b}return new Fr(a)} +function kCb(a){while(!a.a){if(!OCb(a.c,new oCb(a))){return false}}return true} +function PFd(a,b){if(a.g==null||b>=a.i)throw Icb(new ALd(b,a.i));return a.g[b]} +function NZd(a,b,c){iFd(a,c);if(c!=null&&!a.dk(c)){throw Icb(new Fdb)}return c} +function XC(a,b){PC(b)!=10&&WC(rb(b),b.Qm,b.__elementTypeId$,PC(b),a);return a} +function Zi(a,b){var c,d;d=b/a.c.Pd().gc()|0;c=b%a.c.Pd().gc();return Si(a,d,c)} +function bnb(a,b,c,d){var e;d=(zqb(),!d?wqb:d);e=a.slice(b,c);cnb(e,a,b,c,-b,d)} +function Isd(a,b,c,d,e){return b<0?Zsd(a,c,d):JD(c,69).uk().wk(a,a.ei(),b,d,e)} +function p3b(a,b){return Xeb(Reb(MD(lNb(a,(Krc(),qrc)))),Reb(MD(lNb(b,qrc))))} +function uzb(){uzb=ndb;tzb=gs((gzb(),WC(OC(rL,1),kue,309,0,[czb,dzb,ezb,fzb])))} +function gzb(){gzb=ndb;czb=new hzb('All',0);dzb=new mzb;ezb=new ozb;fzb=new rzb} +function eIb(){eIb=ndb;cIb=new fIb(Fwe,0);bIb=new fIb(Cwe,1);dIb=new fIb(Gwe,2)} +function Xke(){Xke=ndb;xxd();Uke=ove;Tke=pve;Wke=new $eb(ove);Vke=new $eb(pve)} +function gcd(){gcd=ndb;dcd=new mcd;fcd=new ocd;ecd=sn((gjd(),tid),dcd,$hd,fcd)} +function icd(a){gcd();JD(a.mf((gjd(),uid)),182).Ec((Lld(),Ild));a.of(tid,null)} +function F8d(a){if(RD(a,180)){return ''+JD(a,180).a}return a==null?null:qdb(a)} +function G8d(a){if(RD(a,180)){return ''+JD(a,180).a}return a==null?null:qdb(a)} +function Rxb(a){var b,c;if(!a.b){return null}c=a.b;while(b=c.a[0]){c=b}return c} +function Sxb(a){var b,c;if(!a.b){return null}c=a.b;while(b=c.a[1]){c=b}return c} +function smc(a){var b;for(b=a.p+1;b=0?Msd(a,c,true,true):Zsd(a,b,true)} +function Nrd(a,b){yld(JD(JD(a.f,26).mf((gjd(),qid)),102))&&lOd(Dzd(JD(a.f,26)),b)} +function xBd(a,b){Mvd(a,b==null||Yeb((KDb(b),b))||isNaN((KDb(b),b))?0:(KDb(b),b))} +function yBd(a,b){Nvd(a,b==null||Yeb((KDb(b),b))||isNaN((KDb(b),b))?0:(KDb(b),b))} +function zBd(a,b){Lvd(a,b==null||Yeb((KDb(b),b))||isNaN((KDb(b),b))?0:(KDb(b),b))} +function ABd(a,b){Jvd(a,b==null||Yeb((KDb(b),b))||isNaN((KDb(b),b))?0:(KDb(b),b))} +function rqd(a){(!this.q?(Fnb(),Fnb(),Dnb):this.q).zc(!a.q?(Fnb(),Fnb(),Dnb):a.q)} +function WFd(a,b,c){var d;d=a.g[b];OFd(a,b,a.Xi(b,c));a.Pi(b,c,d);a.Li();return d} +function fFd(a,b){var c;c=a.bd(b);if(c>=0){a.ed(c);return true}else{return false}} +function uUd(a){var b;if(a.d!=a.r){b=UTd(a);a.e=!!b&&b.jk()==XHe;a.d=b}return a.e} +function or(a,b){var c;Qb(a);Qb(b);c=false;while(b.Ob()){c=c|a.Ec(b.Pb())}return c} +function htb(a,b){var c;c=JD(bjb(a.e,b),393);if(c){jtb(a,c);return c.e}return null} +function aB(a){var b,c;b=a/60|0;c=a%60;if(c==0){return ''+b}return ''+b+':'+(''+c)} +function UBb(a,b){var c,d;aBb(a);d=new PCb(b,a.a);c=new mCb(d);return new gCb(a,c)} +function BB(d,a){var b=d.a[a];var c=(zC(),yC)[typeof b];return c?c(b):FC(typeof b)} +function jec(a,b){var c,d,e;e=b.c.i;c=JD(bjb(a.f,e),60);d=c.d.c-c.e.c;ggd(b.a,d,0)} +function MA(a,b,c){var d,e;d=10;for(e=0;e=0){++b[0]}} +function Sre(a,b,c,d){Tqe();Uqe.call(this,26);this.c=a;this.a=b;this.d=c;this.b=d} +function N1d(a,b,c,d,e,f,g){PId.call(this,b,d,e,f,g);H1d(this);this.c=a;this.b=c} +function wTb(a){this.g=a;this.f=new imb;this.a=$wnd.Math.min(this.g.c.c,this.g.d.c)} +function bTb(){bTb=ndb;$Sb=new yTb;_Sb=new CTb;YSb=new GTb;ZSb=new KTb;aTb=new OTb} +function sOb(){sOb=ndb;qOb=new tOb('EADES',0);rOb=new tOb('FRUCHTERMAN_REINGOLD',1)} +function voc(){voc=ndb;toc=new woc('READING_DIRECTION',0);uoc=new woc('ROTATION',1)} +function Hhc(){Hhc=ndb;Ghc=gs((Bhc(),WC(OC(GU,1),kue,371,0,[xhc,zhc,Ahc,yhc,whc])))} +function rzc(){rzc=ndb;qzc=gs((jzc(),WC(OC(mW,1),kue,328,0,[izc,fzc,gzc,ezc,hzc])))} +function Vrc(){Vrc=ndb;Urc=gs((Qrc(),WC(OC(dW,1),kue,165,0,[Prc,Lrc,Mrc,Nrc,Orc])))} +function I_c(){I_c=ndb;H_c=gs((C_c(),WC(OC(y_,1),kue,364,0,[A_c,x_c,B_c,y_c,z_c])))} +function e7c(){e7c=ndb;d7c=gs((_6c(),WC(OC(A0,1),kue,369,0,[X6c,W6c,Z6c,Y6c,$6c])))} +function J8c(){J8c=ndb;I8c=gs((E8c(),WC(OC(S0,1),kue,330,0,[z8c,A8c,D8c,B8c,C8c])))} +function YQb(){YQb=ndb;XQb=gs((TQb(),WC(OC(AO,1),kue,363,0,[OQb,PQb,QQb,RQb,SQb])))} +function wjd(){wjd=ndb;vjd=gs((ojd(),WC(OC(v2,1),kue,86,0,[mjd,ljd,kjd,jjd,njd])))} +function Led(){Led=ndb;Ked=gs((Ged(),WC(OC(g2,1),kue,160,0,[Eed,Ded,Bed,Fed,Ced])))} +function qld(){qld=ndb;pld=gs((lld(),WC(OC(G2,1),kue,257,0,[ild,kld,gld,hld,jld])))} +function vmd(){vmd=ndb;umd=gs((mmd(),WC(OC(J2,1),eye,64,0,[kmd,Uld,Tld,jmd,lmd])))} +function amc(a){var b;b=JD(lNb(a,(Krc(),Aqc)),317);if(b){return b.a==a}return false} +function bmc(a){var b;b=JD(lNb(a,(Krc(),Aqc)),317);if(b){return b.i==a}return false} +function Vvb(a,b){KDb(b);Uvb(a);if(a.d.Ob()){b.Ad(a.d.Pb());return true}return false} +function Xy(a){if(Lcb(a,lte)>0){return lte}if(Lcb(a,rue)<0){return rue}return ddb(a)} +function Kfc(a,b){var c;c=Ty(a.e.c,b.e.c);if(c==0){return Xeb(a.e.d,b.e.d)}return c} +function Sad(a,b){var c;c=JD(bjb(a.a,b),150);if(!c){c=new pNb;ejb(a.a,b,c)}return c} +function kC(a,b,c){var d;if(b==null){throw Icb(new Ufb)}d=iC(a,b);lC(a,b,c);return d} +function Q6b(a,b){var c,d;d=b.c;for(c=d+1;c<=b.f;c++){a.a[c]>a.a[d]&&(d=c)}return d} +function HNc(a,b,c){var d;d=a.a.e[JD(b.a,9).p]-a.a.e[JD(c.a,9).p];return YD(Sfb(d))} +function L_b(a,b,c){var d,e;for(e=new Hmb(c);e.a0?b-1:b;return Xnd(Ynd(Znd($nd(new _nd,c),a.n),a.j),a.k)} +function Sde(a,b,c,d){var e;a.j=-1;qJd(a,eee(a,b,c),(lie(),e=JD(b,69).tk(),e.vl(d)))} +function RVb(a,b,c,d,e,f){var g;g=TVb(d);xWb(g,e);yWb(g,f);Rc(a.a,d,new iWb(g,b,c.f))} +function dCb(a,b){var c;aBb(a);c=new sCb(a,a.a.xd(),a.a.wd()|4,b);return new gCb(a,c)} +function je(a,b){var c,d;c=JD(Ov(a.d,b),18);if(!c){return null}d=b;return a.e.pc(d,c)} +function tWd(a,b){var c;c=(a.i==null&&pWd(a),a.i);return b>=0&&b=-0.01&&a.a<=Lwe&&(a.a=0);a.b>=-0.01&&a.b<=Lwe&&(a.b=0);return a} +function nfd(a){bfd();var b,c;c=xCe;for(b=0;bc&&(c=a[b])}return c} +function r6b(a){var b;b=Reb(MD(lNb(a,($xc(),bwc))));if(b<0){b=0;oNb(a,bwc,b)}return b} +function dXb(a,b){yld(JD(lNb(JD(a.e,9),($xc(),bxc)),102))&&(Fnb(),gmb(JD(a.e,9).j,b))} +function v7b(a,b){var c,d;for(d=a.Jc();d.Ob();){c=JD(d.Pb(),70);oNb(c,(Krc(),$qc),b)}} +function ax(a,b){var c,d,e;d=b.a.jd();c=JD(b.a.kd(),18).gc();for(e=0;ea||a>b){throw Icb(new Edb('fromIndex: 0, toIndex: '+a+Qve+b))}} +function v5c(a,b){Rud(a,(A3c(),w3c),b.f);Rud(a,t3c,b.e);Rud(a,v3c,b.d);Rud(a,s3c,b.c)} +function _lb(a,b){var c,d,e,f;KDb(b);for(d=a.c,e=0,f=d.length;e0){a.a/=b;a.b/=b}return a} +function NMc(a,b,c){var d,e;d=b;do{e=Reb(a.p[d.p])+c;a.p[d.p]=e;d=a.a[d.p]}while(d!=b)} +function zVd(a){var b;if(a.w){return a.w}else{b=AVd(a);!!b&&!b.Sh()&&(a.w=b);return b}} +function Uy(a,b){Sy();Wy(que);return $wnd.Math.abs(a-b)<=que||a==b||isNaN(a)&&isNaN(b)} +function E8d(a){var b;if(a==null){return null}else{b=JD(a,195);return zxd(b,b.length)}} +function SFd(a,b){if(a.g==null||b>=a.i)throw Icb(new ALd(b,a.i));return a.Ui(b,a.g[b])} +function zHb(){zHb=ndb;wHb=new AHb('BEGIN',0);xHb=new AHb(Cwe,1);yHb=new AHb('END',2)} +function Kjd(){Kjd=ndb;Hjd=new Ljd(Cwe,0);Ijd=new Ljd('HEAD',1);Jjd=new Ljd('TAIL',2)} +function lYc(){lYc=ndb;kYc=Ubd(Ubd(Ubd(Zbd(new acd,(sSc(),pSc)),(qVc(),pVc)),iVc),mVc)} +function XYc(){XYc=ndb;WYc=Ubd(Ubd(Ubd(Zbd(new acd,(sSc(),rSc)),(qVc(),kVc)),fVc),jVc)} +function uo(a,b){return Rv(Ao(a,b,ddb(Vcb(due,xfb(ddb(Vcb(b==null?0:tb(b),eue)),15)))))} +function HEb(a,b){return Sy(),Wy(que),$wnd.Math.abs(a-b)<=que||a==b||isNaN(a)&&isNaN(b)} +function j0d(a,b){var c,d;d=a.a;c=k0d(a,b,null);d!=b&&!a.e&&(c=m0d(a,b,c));!!c&&c.mj()} +function aRb(a,b){var c;c=Vfd(Ifd(JD(bjb(a.g,b),8)),vfd(JD(bjb(a.f,b),460).b));return c} +function odb(a,b,c){var d=function(){return a.apply(d,arguments)};b.apply(d,c);return d} +function KD(a){var b;SDb(a==null||Array.isArray(a)&&(b=PC(a),!(b>=14&&b<=16)));return a} +function kIb(a){a.b=(eIb(),bIb);a.f=(XIb(),VIb);a.d=(bk(2,jue),new jmb(2));a.e=new Wfd} +function Mod(a){this.b=(Qb(a),new kmb(a));this.a=new imb;this.d=new imb;this.e=new Wfd} +function bCb(a){aBb(a);PDb(true,'n may not be negative');return new gCb(a,new TCb(a.a))} +function Knb(a,b){Fnb();var c,d;d=new imb;for(c=0;c0){return JD(amb(c.a,d-1),9)}return null} +function Wy(a){if(!(a>=0)){throw Icb(new hfb('tolerance ('+a+') must be >= 0'))}return a} +function gdd(){if(!Zcd){Zcd=new fdd;edd(Zcd,WC(OC(E1,1),rte,148,0,[new hjd]))}return Zcd} +function WAc(){WAc=ndb;VAc=new XAc('NO',0);TAc=new XAc(Vye,1);UAc=new XAc('LOOK_BACK',2)} +function bAc(){bAc=ndb;aAc=new cAc(Kwe,0);$zc=new cAc('INPUT',1);_zc=new cAc('OUTPUT',2)} +function Xnc(){Xnc=ndb;Unc=new Ync('ARD',0);Wnc=new Ync('MSD',1);Vnc=new Ync('MANUAL',2)} +function qoc(){koc();return WC(OC(TV,1),kue,267,0,[eoc,coc,goc,hoc,foc,ioc,joc,doc,boc])} +function Hyc(){Byc();return WC(OC(jW,1),kue,268,0,[zyc,wyc,xyc,tyc,vyc,Ayc,yyc,syc,uyc])} +function lnd(){ind();return WC(OC(O2,1),kue,266,0,[bnd,dnd,and,end,fnd,hnd,gnd,cnd,_md])} +function hdb(){idb();var a=gdb;for(var b=0;bc)throw Icb(new cKd(b,c));return new EKd(a,b)} +function Nc(a){var b,c;for(c=a.c.Bc().Jc();c.Ob();){b=JD(c.Pb(),18);b.$b()}a.c.$b();a.d=0} +function Xi(a){var b,c,d,e;for(c=a.a,d=0,e=c.length;d=0);if(ylb(a.d,a.c)<0){a.a=a.a-1&a.d.a.length-1;a.b=a.d.c}a.c=-1} +function TCb(a){Bwb.call(this,a.yd(64)?Rfb(0,adb(a.xd(),1)):Tte,a.wd());this.b=1;this.a=a} +function FUd(){bUd.call(this);this.n=-1;this.g=null;this.i=null;this.j=null;this.Bb|=GHe} +function Ahe(a,b,c,d){this.$j();this.a=b;this.b=a;this.c=null;this.c=new Bhe(this,b,c,d)} +function PId(a,b,c,d,e){this.d=a;this.n=b;this.g=c;this.o=d;this.p=-1;e||(this.o=-2-d-1)} +function dRb(a){$Qb();this.g=new Yrb;this.f=new Yrb;this.b=new Yrb;this.c=new Np;this.i=a} +function EWb(){this.f=new Wfd;this.d=new dZb;this.c=new Wfd;this.a=new imb;this.b=new imb} +function eHb(a){var b,c;for(c=new Hmb(Hrd(a));c.a=0} +function sCc(){sCc=ndb;rCc=Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),X4b)),PQb,u5b),QQb,t5b)} +function DCc(){DCc=ndb;CCc=Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),X4b)),PQb,u5b),QQb,t5b)} +function XCc(){XCc=ndb;WCc=Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),X4b)),PQb,u5b),QQb,t5b)} +function qDc(){qDc=ndb;pDc=Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),X4b)),PQb,u5b),QQb,t5b)} +function yDc(){yDc=ndb;xDc=Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),X4b)),PQb,u5b),QQb,t5b)} +function WDc(){WDc=ndb;VDc=Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),X4b)),PQb,u5b),QQb,t5b)} +function bGc(){bGc=ndb;aGc=Vbd(Xbd(Xbd(new acd,(TQb(),QQb),(Q5b(),x5b)),RQb,n5b),SQb,w5b)} +function Dfb(){Dfb=ndb;Cfb=WC(OC(cE,1),Pue,30,15,[0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15])} +function eAd(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,0,c,a.b))} +function fAd(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,1,c,a.c))} +function N_d(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,4,c,a.c))} +function r4d(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,1,c,a.c))} +function lTd(a,b){var c;c=a.d;a.d=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,1,c,a.d))} +function svd(a,b){var c;c=a.k;a.k=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,2,c,a.k))} +function HVd(a,b){var c;c=a.D;a.D=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,2,c,a.D))} +function Rwd(a,b){var c;c=a.f;a.f=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,8,c,a.f))} +function Swd(a,b){var c;c=a.i;a.i=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,7,c,a.i))} +function mzd(a,b){var c;c=a.a;a.a=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,8,c,a.a))} +function q4d(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,0,c,a.b))} +function Are(a,b,c){var d;a.b=b;a.a=c;d=(a.a&512)==512?new Epe:new Roe;a.c=Loe(d,a.b,a.a)} +function Eee(a,b){return oie(a.e,b)?(lie(),uUd(b)?new mje(b,a):new Cie(b,a)):new zje(b,a)} +function yBb(a){var b,c;if(0>a){return new HBb}b=a+1;c=new ABb(b,a);return new EBb(null,c)} +function Nnb(a,b){Fnb();var c;c=new Zrb(1);VD(a)?fjb(c,a,b):wsb(c.f,a,b);return new Apb(c)} +function Ead(a,b){var c;c=new LMb;JD(b.b,68);JD(b.b,68);JD(b.b,68);_lb(b.a,new Kad(a,c,b))} +function Lfd(a,b){var c;if(RD(b,8)){c=JD(b,8);return a.a==c.a&&a.b==c.b}else{return false}} +function F_b(a){var b;b=lNb(a,(Krc(),hrc));if(RD(b,174)){return E_b(JD(b,174))}return null} +function Qp(a){var b;a=$wnd.Math.max(a,2);b=tfb(a);if(a>b){b<<=1;return b>0?b:iue}return b} +function xc(a){Ub(a.e!=3);switch(a.e){case 2:return false;case 0:return true;}return zc(a)} +function N0d(a){var b;if(a.b==null){return h1d(),h1d(),g1d}b=a.sl()?a.rl():a.ql();return b} +function iMd(a,b){var c,d;for(d=b.vc().Jc();d.Ob();){c=JD(d.Pb(),45);hMd(a,c.jd(),c.kd())}} +function Qwd(a,b){var c;c=a.d;a.d=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,11,c,a.d))} +function xUd(a,b){var c;c=a.j;a.j=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,13,c,a.j))} +function _3d(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,21,c,a.b))} +function Vnd(a,b){if(a.r>0&&a.c0&&a.g!=0&&Vnd(a.i,b/a.r*a.i.d)}} +function slb(a,b,c){var d,e,f;f=a.a.length-1;for(e=a.b,d=0;d0?1:0}return (!a.c&&(a.c=vib(Pcb(a.f))),a.c).e} +function EVd(a,b){if(b){if(a.B==null){a.B=a.D;a.D=null}}else if(a.B!=null){a.D=a.B;a.B=null}} +function N_b(a,b){b.Tg(Bye,1);VBb(UBb(new gCb(null,new Wvb(a.b,16)),new R_b),new T_b);b.Ug()} +function Cyb(a,b,c,d,e,f){var g;this.c=a;g=new imb;Wxb(a,g,b,a.b,c,d,e,f);this.a=new Qjb(g,0)} +function Ayd(a,b,c,d,e,f,g,h,i,j,k,l,m){Hyd(a,b,c,d,e,f,g,h,i,j,k,l,m);iVd(a,false);return a} +function kdb(a,b){typeof window===gte&&typeof window['$gwt']===gte&&(window['$gwt'][a]=b)} +function zib(a,b,c){var d,e,f;d=0;for(e=0;e>>31}d!=0&&(a[c]=d)} +function gYc(a,b,c){c.Tg('DFS Treeifying phase',1);fYc(a,b);dYc(a,b);a.a=null;a.b=null;c.Ug()} +function V_c(a,b){var c;b.Tg('General Compactor',1);c=D0c(JD(Pud(a,(u1c(),c1c)),386));c.Bg(a)} +function n2c(a,b){var c,d;c=JD(Pud(a,(u1c(),j1c)),15);d=JD(Pud(b,j1c),15);return ofb(c.a,d.a)} +function ggd(a,b,c){var d,e;for(e=Wtb(a,0);e.b!=e.d.c;){d=JD(iub(e),8);d.a+=b;d.b+=c}return a} +function CBd(a,b,c,d){var e;e=new mC;xAd(e,'x',XAd(a,b,d.a));xAd(e,'y',YAd(a,b,d.b));vAd(c,e)} +function FBd(a,b,c,d){var e;e=new mC;xAd(e,'x',XAd(a,b,d.a));xAd(e,'y',YAd(a,b,d.b));vAd(c,e)} +function Fzc(){Czc();return WC(OC(nW,1),kue,243,0,[Azc,vzc,yzc,wzc,xzc,szc,zzc,Bzc,tzc,uzc])} +function Opc(){Lpc();return WC(OC($V,1),kue,261,0,[Cpc,Epc,Fpc,Gpc,Hpc,Ipc,Kpc,Bpc,Dpc,Jpc])} +function jWd(){jWd=ndb;gWd=new g_d;iWd=WC(OC(G6,1),fIe,179,0,[]);hWd=WC(OC(A6,1),gIe,62,0,[])} +function G6b(){G6b=ndb;F6b=new oEd('edgelabelcenterednessanalysis.includelabel',(Ndb(),Ldb))} +function Imc(a,b){return Reb(MD(Pub(aCb(WBb(new gCb(null,new Wvb(a.c.b,16)),new $mc(a)),b))))} +function Lmc(a,b){return Reb(MD(Pub(aCb(WBb(new gCb(null,new Wvb(a.c.b,16)),new Ymc(a)),b))))} +function tb(a){return VD(a)?vgb(a):TD(a)?Ueb(a):SD(a)?Qdb(a):QD(a)?a.Hb():UC(a)?ADb(a):Az(a)} +function _Jb(a,b){return Sy(),Wy(Lwe),$wnd.Math.abs(0-b)<=Lwe||0==b||isNaN(0)&&isNaN(b)?0:a/b} +function TSb(a,b){OSb();return a==KSb&&b==LSb||a==KSb&&b==MSb||a==NSb&&b==MSb||a==NSb&&b==LSb} +function SSb(a,b){OSb();return a==KSb&&b==NSb||a==NSb&&b==KSb||a==MSb&&b==LSb||a==LSb&&b==MSb} +function kZb(){kZb=ndb;hZb=new UZb;fZb=new ZZb;gZb=new b$b;eZb=new f$b;iZb=new j$b;jZb=new n$b} +function DBb(a){var b;b=CBb(a);if(Ocb(b.a,0)){return fvb(),fvb(),evb}return fvb(),new ivb(b.b)} +function gBb(a){var b;b=fBb(a);if(Ocb(b.a,0)){return Xub(),Xub(),Wub}return Xub(),new avb(b.b)} +function hBb(a){var b;b=fBb(a);if(Ocb(b.a,0)){return Xub(),Xub(),Wub}return Xub(),new avb(b.c)} +function gWb(a){if(a.b.c.i.k==(UYb(),NYb)){return JD(lNb(a.b.c.i,(Krc(),hrc)),12)}return a.b.c} +function hWb(a){if(a.b.d.i.k==(UYb(),NYb)){return JD(lNb(a.b.d.i,(Krc(),hrc)),12)}return a.b.d} +function W1b(a){switch(a.g){case 2:return mmd(),lmd;case 4:return mmd(),Tld;default:return a;}} +function X1b(a){switch(a.g){case 1:return mmd(),jmd;case 3:return mmd(),Uld;default:return a;}} +function Epd(a,b){var c;c=Jpd(a);return Dpd(new Yfd(c.c,c.d),new Yfd(c.b,c.a),a.Kf(),b,a.$f())} +function i4b(a,b){b.Tg(Bye,1);lHb(kHb(new pHb((JWb(),new UWb(a,false,false,new AXb)))));b.Ug()} +function oGc(){oGc=ndb;nGc=Ubd(Ybd(Xbd(Xbd(new acd,(TQb(),QQb),(Q5b(),x5b)),RQb,n5b),SQb),w5b)} +function ZHc(){ZHc=ndb;YHc=Ubd(Ybd(Xbd(Xbd(new acd,(TQb(),QQb),(Q5b(),x5b)),RQb,n5b),SQb),w5b)} +function cgc(a,b,c){this.g=a;this.d=b;this.e=c;this.a=new imb;agc(this);Fnb();gmb(this.a,null)} +function MJb(a,b,c,d,e,f,g){es.call(this,a,b);this.d=c;this.e=d;this.c=e;this.b=f;this.a=Wu(g)} +function aGd(a){this.i=a.gc();if(this.i>0){this.g=this.$i(this.i+(this.i/8|0)+1);a.Oc(this.g)}} +function Ld(a,b){var c,d;KDb(b);for(d=b.vc().Jc();d.Ob();){c=JD(d.Pb(),45);a.yc(c.jd(),c.kd())}} +function cee(a,b,c){var d;for(d=c.Jc();d.Ob();){if(!aee(a,b,d.Pb())){return false}}return true} +function Ao(a,b,c){var d;for(d=a.b[c&a.f];d;d=d.b){if(c==d.a&&Hb(b,d.g)){return d}}return null} +function Bo(a,b,c){var d;for(d=a.c[c&a.f];d;d=d.d){if(c==d.f&&Hb(b,d.i)){return d}}return null} +function qr(a,b){var c;Qb(b);while(a.Ob()){c=a.Pb();if(!KOc(JD(c,9))){return false}}return true} +function Q4d(a,b,c,d,e){var f;if(c){f=zWd(b.Ah(),a.c);e=c.Oh(b,-1-(f==-1?d:f),null,e)}return e} +function R4d(a,b,c,d,e){var f;if(c){f=zWd(b.Ah(),a.c);e=c.Qh(b,-1-(f==-1?d:f),null,e)}return e} +function _hb(a){var b;if(a.b==-2){if(a.e==0){b=-1}else{for(b=0;a.a[b]==0;b++);}a.b=b}return a.b} +function Thc(a){var b,c,d;return a.j==(mmd(),Uld)&&(b=Vhc(a),c=Hrb(b,Tld),d=Hrb(b,lmd),d||d&&c)} +function H6b(a){var b,c,d;d=0;for(c=new Hmb(a.b);c.ae&&b.af&&b.be?(c=e):RDb(b,c+1);a.a=Ggb(a.a,0,b)+(''+d)+Fgb(a.a,c)} +function Dyd(a,b,c,d){RD(a.Cb,184)&&(JD(a.Cb,184).tb=null);Wxd(a,c);!!b&&FVd(a,b);d&&a.el(true)} +function K6b(a,b){var c,d;for(d=new Hmb(b.b);d.a1||a.Ob()){++a.a;a.g=0;b=a.i;a.Ob();return b}else{throw Icb(new Hub)}} +function Vgc(a,b){var c,d;for(d=new Hmb(b);d.a>22);e=a.h+b.h+(d>>22);return _C(c&dve,d&dve,e&eve)} +function vD(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(c>>22);e=a.h-b.h+(d>>22);return _C(c&dve,d&dve,e&eve)} +function h_c(a){var b,c,d,e;e=new imb;for(d=a.Jc();d.Ob();){c=JD(d.Pb(),26);b=k_c(c);$lb(e,b)}return e} +function M9b(a){var b;wWb(a,true);b=hue;mNb(a,($xc(),kxc))&&(b+=JD(lNb(a,kxc),15).a);oNb(a,kxc,zfb(b))} +function had(a,b,c){var d;hjb(a.a);_lb(c.i,new sad(a));d=new oEb(JD(bjb(a.a,b.b),68));gad(a,d,b);c.f=d} +function IEd(a){var b,c;c=(ksd(),b=new Ywd,b);!!a&&YEd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a),c);return c} +function vQd(a,b){var c,d;d=0;if(a<64&&a<=b){b=b<64?b:63;for(c=a;c<=b;c++){d=Ycb(d,Zcb(1,c))}}return d} +function Ar(a,b){var c,d;Rb(b,'predicate');for(d=0;a.Ob();d++){c=a.Pb();if(b.Lb(c)){return d}}return -1} +function Nud(a,b){switch(b){case 0:!a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0));a.o.c.$b();return;}htd(a,b)} +function Mkd(a){switch(a.g){case 1:return Ikd;case 2:return Hkd;case 3:return Jkd;default:return Kkd;}} +function Inb(a){Fnb();var b,c,d;d=0;for(c=a.Jc();c.Ob();){b=c.Pb();d=d+(b!=null?tb(b):0);d=d|0}return d} +function _A(a){var b;b=new XA;b.a=a;b.b=ZA(a);b.c=SC(hJ,Ote,2,2,6,1);b.c[0]=$A(a);b.c[1]=$A(a);return b} +function c8b(){c8b=ndb;b8b=new e8b(cye,0);_7b=new e8b(Hye,1);a8b=new e8b(Iye,2);$7b=new e8b('BOTH',3)} +function OSb(){OSb=ndb;KSb=new RSb('Q1',0);NSb=new RSb('Q4',1);LSb=new RSb('Q2',2);MSb=new RSb('Q3',3)} +function bqc(){bqc=ndb;aqc=new cqc('ONLY_WITHIN_GROUP',0);_pc=new cqc(dye,1);$pc=new cqc('ENFORCED',2)} +function Eoc(){Eoc=ndb;Coc=new Foc(cye,0);Boc=new Foc('INCOMING_ONLY',1);Doc=new Foc('OUTGOING_ONLY',2)} +function Pad(){Pad=ndb;new nEd('org.eclipse.elk.addLayoutConfig');Nad=new _ad;Mad=new bbd;Oad=new Zad} +function zC(){zC=ndb;yC={'boolean':AC,'number':BC,'string':DC,'object':CC,'function':CC,'undefined':EC}} +function Hzc(){Hzc=ndb;Gzc=gs((Czc(),WC(OC(nW,1),kue,243,0,[Azc,vzc,yzc,wzc,xzc,szc,zzc,Bzc,tzc,uzc])))} +function Qpc(){Qpc=ndb;Ppc=gs((Lpc(),WC(OC($V,1),kue,261,0,[Cpc,Epc,Fpc,Gpc,Hpc,Ipc,Kpc,Bpc,Dpc,Jpc])))} +function sn(a,b,c,d){return new Jx(WC(OC(LK,1),$te,45,0,[(ak(a,b),new ap(a,b)),(ak(c,d),new ap(c,d))]))} +function t7c(a,b){var c,d;c=JD(JD(bjb(a.g,b.a),49).a,68);d=JD(JD(bjb(a.g,b.b),49).a,68);return rMb(c,d)} +function ZEd(a,b,c){var d;d=a.gc();if(b>d)throw Icb(new cKd(b,d));a.Qi()&&(c=dFd(a,c));return a.Ci(b,c)} +function F1b(a){var b,c,d;c=a.n;d=a.o;b=a.d;return new Afd(c.a-b.b,c.b-b.d,d.a+(b.b+b.c),d.b+(b.d+b.a))} +function tMb(a,b){if(!a||!b||a==b){return false}return Ty(a.b.c,b.b.c+b.b.b)<0&&Ty(b.b.c,a.b.c+a.b.b)<0} +function xQd(a,b,c){if(a>=128)return false;return a<64?Xcb(Kcb(Zcb(1,a),c),0):Xcb(Kcb(Zcb(1,a-64),b),0)} +function qFb(a,b,c){switch(c.g){case 2:a.b=b;break;case 1:a.c=b;break;case 4:a.d=b;break;case 3:a.a=b;}} +function nNb(a,b,c){return c==null?(!a.q&&(a.q=new Yrb),gjb(a.q,b)):(!a.q&&(a.q=new Yrb),ejb(a.q,b,c)),a} +function oNb(a,b,c){c==null?(!a.q&&(a.q=new Yrb),gjb(a.q,b)):(!a.q&&(a.q=new Yrb),ejb(a.q,b,c));return a} +function $Mb(a){var b,c;c=new HNb;jNb(c,a);oNb(c,(iPb(),gPb),a);b=new Yrb;aNb(a,c,b);_Mb(a,c,b);return c} +function cfd(a){bfd();var b,c,d;c=SC(o2,Ote,8,2,0,1);d=0;for(b=0;b<2;b++){d+=0.5;c[b]=jfd(d,a)}return c} +function pgc(a,b){var c,d,e,f;c=false;d=a.a[b].length;for(f=0;fa.f;c=a.u+a.e[a.o.p]*a.d>a.f*a.s*a.d;return b||c} +function Y3d(a){var b;if(!a.c||(a.Bb&1)==0&&(a.c.Db&64)!=0){b=UTd(a);RD(b,88)&&(a.c=JD(b,29))}return a.c} +function tfb(a){var b;if(a<0){return rue}else if(a==0){return 0}else{for(b=iue;(b&a)==0;b>>=1);return b}} +function ZA(a){var b;if(a==0){return 'Etc/GMT'}if(a<0){a=-a;b='Etc/GMT-'}else{b='Etc/GMT+'}return b+aB(a)} +function gD(a){var b,c;c=ufb(a.h);if(c==32){b=ufb(a.m);return b==32?ufb(a.l)+32:b+20-10}else{return c-12}} +function fD(a){var b,c,d;b=~a.l+1&dve;c=~a.m+(b==0?1:0)&dve;d=~a.h+(b==0&&c==0?1:0)&eve;a.l=b;a.m=c;a.h=d} +function vlb(a){var b;b=a.a[a.b];if(b==null){return null}VC(a.a,a.b,null);a.b=a.b+1&a.a.length-1;return b} +function web(){++reb;this.o=null;this.k=null;this.j=null;this.d=null;this.b=null;this.n=null;this.a=null} +function nj(a,b){this.c=a;this.d=b;this.b=this.d/this.c.c.Pd().gc()|0;this.a=this.d%this.c.c.Pd().gc()} +function PYd(a,b){this.b=a;LYd.call(this,(JD(SFd(vWd((jRd(),iRd).o),10),19),b.i),b.g);this.a=(jWd(),iWd)} +function nB(a,b,c){this.q=new $wnd.Date;this.q.setFullYear(a+Oue,b,c);this.q.setHours(0,0,0,0);eB(this,0)} +function $xb(a,b,c){var d,e;d=new Jyb(b,c);e=new Kyb;a.b=Yxb(a,a.b,d,e);e.b||++a.c;a.b.b=false;return e.d} +function Gnb(a,b){Fnb();var c,d,e,f,g;g=false;for(d=b,e=0,f=d.length;eg||d+e>f){throw Icb(new Bdb)}} +function Igc(a,b,c){var d,e,f,g;g=wIc(b,c);f=0;for(e=g.Jc();e.Ob();){d=JD(e.Pb(),12);ejb(a.c,d,zfb(f++))}} +function $Rb(a){var b,c;for(c=new Hmb(a.a.b);c.a=0,'Negative initial capacity');CDb(b>=0,'Non-positive load factor');hjb(this)} +function Xb(a,b){var c;for(c=0;c1||b>=0&&a.b<3} +function dre(){Tqe();var a;if(Aqe)return Aqe;a=Xqe(fre('M',true));a=Yqe(fre('M',false),a);Aqe=a;return Aqe} +function a8c(a){switch(a.g){case 0:return new Had;default:throw Icb(new hfb(UDe+(a.f!=null?a.f:''+a.g)));}} +function J9c(a){switch(a.g){case 0:return new bad;default:throw Icb(new hfb(UDe+(a.f!=null?a.f:''+a.g)));}} +function Mud(a,b,c){switch(b){case 0:!a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0));ATd(a.o,c);return;}dtd(a,b,c)} +function xTc(a,b,c){this.g=a;this.e=new Wfd;this.f=new Wfd;this.d=new aub;this.b=new aub;this.a=b;this.c=c} +function C6c(a,b,c,d){this.b=new imb;this.n=new imb;this.i=d;this.j=c;this.s=a;this.t=b;this.r=0;this.d=0} +function mlc(a,b,c,d){this.b=new Yrb;this.g=new Yrb;this.d=(Nyc(),Myc);this.c=a;this.e=b;this.d=c;this.a=d} +function iFd(a,b){if(!a.Ji()&&b==null){throw Icb(new hfb("The 'no null' constraint is violated"))}return b} +function XRc(a){switch(a.g){case 1:return qCe;default:case 2:return 0;case 3:return rCe;case 4:return sCe;}} +function iyc(a){Ylb(a.c,(Pad(),Nad));if(Uy(a.a,Reb(MD(mEd((qyc(),oyc)))))){return new npd}return new ppd(a)} +function Vr(a){while(!a.d||!a.d.Ob()){if(!!a.b&&!ulb(a.b)){a.d=JD(zlb(a.b),50)}else{return null}}return a.d} +function vgb(a){var b,c;b=0;for(c=0;cd?1:0} +function Qxb(a,b){var c,d,e;e=a.b;while(e){c=a.a.Le(b,e.d);if(c==0){return e}d=c<0?0:1;e=e.a[d]}return null} +function ow(a,b){var c;if(b===a){return true}if(RD(b,229)){c=JD(b,229);return pb(a.Zb(),c.Zb())}return false} +function pVb(a,b){if(qVb(a,b)){Rc(a.b,JD(lNb(b,(Krc(),Lqc)),22),b);Qtb(a.a,b);return true}else{return false}} +function M8b(a,b){if(mNb(a,(Krc(),grc))&&mNb(b,grc)){return JD(lNb(b,grc),15).a-JD(lNb(a,grc),15).a}return 0} +function R8b(a,b){if(mNb(a,(Krc(),grc))&&mNb(b,grc)){return JD(lNb(a,grc),15).a-JD(lNb(b,grc),15).a}return 0} +function pAb(a){if(iAb){return SC(AL,Xve,567,0,0,1)}return JD(hmb(a.a,SC(AL,Xve,567,a.a.c.length,0,1)),840)} +function rb(a){return VD(a)?hJ:TD(a)?LI:SD(a)?GI:QD(a)?a.Pm:UC(a)?a.Pm:a.Pm||Array.isArray(a)&&OC(ZH,1)||ZH} +function iyd(a,b,c){var d,e;e=(d=new o2d,d);Fyd(e,b,c);YEd((!a.q&&(a.q=new A3d(A6,a,11,10)),a.q),e);return e} +function Exd(a){var b,c,d,e;e=tdb(wxd,a);c=e.length;d=SC(hJ,Ote,2,c,6,1);for(b=0;b=a.b.c.length){return}nvb(a,2*b+1);c=2*b+2;c0){b.Ad(c);c.i&&EGc(c)}}} +function Lib(a,b,c){var d;for(d=c-1;d>=0&&a[d]===b[d];d--);return d<0?0:Tcb(Kcb(a[d],yve),Kcb(b[d],yve))?-1:1} +function RIc(a,b){var c;if(!a||a==b||!mNb(b,(Krc(),Wqc))){return false}c=JD(lNb(b,(Krc(),Wqc)),9);return c!=a} +function zfe(a){switch(a.i){case 2:{return true}case 1:{return false}case -1:{++a.c}default:{return a.Yl()}}} +function kgc(a,b,c){if(!a.d[b.p][c.p]){jgc(a,b,c);a.d[b.p][c.p]=true;a.d[c.p][b.p]=true}return a.a[b.p][c.p]} +function _s(a,b,c){var d,e;this.g=a;this.c=b;this.a=this;this.d=this;e=Qp(c);d=SC(MG,fue,227,e,0,1);this.b=d} +function Dc(a,b){var c,d;for(d=a.Zb().Bc().Jc();d.Ob();){c=JD(d.Pb(),18);if(c.Gc(b)){return true}}return false} +function _t(a,b,c){var d,e,f,g;KDb(c);g=false;f=a.dd(b);for(e=c.Jc();e.Ob();){d=e.Pb();f.Rb(d);g=true}return g} +function PKd(a,b){var c,d;d=JD(fud(a.a,4),129);c=SC(l5,CHe,415,b,0,1);d!=null&&ohb(d,0,c,0,d.length);return c} +function fQd(a,b){var c;c=new jQd((a.f&256)!=0,a.i,a.a,a.d,(a.f&16)!=0,a.j,a.g,b);a.e!=null||(c.c=a);return c} +function Kv(a,b){var c;if(a===b){return true}else if(RD(b,92)){c=JD(b,92);return Nx(bn(a),c.vc())}return false} +function ajb(a,b,c){var d,e;for(e=c.Jc();e.Ob();){d=JD(e.Pb(),45);if(a.ze(b,d.kd())){return true}}return false} +function Gqd(){Gqd=ndb;Dqd=new Hqd('ELK',0);Eqd=new Hqd('JSON',1);Cqd=new Hqd('DOT',2);Fqd=new Hqd('SVG',3)} +function OXc(){OXc=ndb;NXc=new PXc(dye,0);LXc=new PXc(DCe,1);MXc=new PXc('FAN',2);KXc=new PXc('CONSTRAINT',3)} +function fWc(){fWc=ndb;eWc=new gWc(cye,0);dWc=new gWc('MIDDLE_TO_MIDDLE',1);cWc=new gWc('AVOID_OVERLAP',2)} +function C0c(){C0c=ndb;z0c=new E0c(cye,0);A0c=new E0c('RADIAL_COMPACTION',1);B0c=new E0c('WEDGE_COMPACTION',2)} +function tAc(){tAc=ndb;sAc=new uAc('STACKED',0);qAc=new uAc('REVERSE_STACKED',1);rAc=new uAc('SEQUENCED',2)} +function CAb(){CAb=ndb;zAb=new DAb('CONCURRENT',0);AAb=new DAb('IDENTITY_FINISH',1);BAb=new DAb('UNORDERED',2)} +function Bkd(){Bkd=ndb;zkd=new Ckd(iFe,0);ykd=new Ckd('INCLUDE_CHILDREN',1);Akd=new Ckd('SEPARATE_CHILDREN',2)} +function rkd(){rkd=ndb;pkd=new bZb(15);okd=new qEd((gjd(),cid),pkd);qkd=zid;kkd=jhd;lkd=Vhd;nkd=Yhd;mkd=Xhd} +function mRb(){mRb=ndb;kRb=Sx(WC(OC(v2,1),kue,86,0,[(ojd(),kjd),ljd]));lRb=Sx(WC(OC(v2,1),kue,86,0,[njd,jjd]))} +function igd(a){var b,c,d;b=0;d=SC(o2,Ote,8,a.b,0,1);c=Wtb(a,0);while(c.b!=c.d.c){d[b++]=JD(iub(c),8)}return d} +function fgd(a,b,c){var d,e,f;d=new aub;for(f=Wtb(c,0);f.b!=f.d.c;){e=JD(iub(f),8);Qtb(d,new Zfd(e))}_t(a,b,d)} +function jyc(a,b){var c;c=mEd((qyc(),oyc))!=null&&b.Rg()!=null?Reb(MD(b.Rg()))/Reb(MD(mEd(oyc))):1;ejb(a.b,b,c)} +function ke(a,b){var c,d;c=JD(a.d.Ac(b),18);if(!c){return null}d=a.e.hc();d.Fc(c);a.e.d-=c.gc();c.$b();return d} +function uIc(a,b){var c,d;d=a.c[b];if(d==0){return}a.c[b]=0;a.d-=d;c=b+1;while(c0){return pxb(b-1,a.a.c.length),cmb(a.a,b-1)}else{throw Icb(new Xqb)}} +function tbd(a,b,c){if(b<0){throw Icb(new Cdb(nEe+b))}if(bb){throw Icb(new hfb(_ve+a+awe+b))}if(a<0||b>c){throw Icb(new Edb(_ve+a+bwe+b+Qve+c))}} +function ced(a){if(!a.a||(a.a.i&8)==0){throw Icb(new kfb('Enumeration class expected for layout option '+a.f))}} +function ifb(a){gz.call(this,'The given string does not match the expected format for individual spacings.',a)} +function Afe(a){switch(a.i){case -2:{return true}case -1:{return false}case 1:{--a.c}default:{return a.Zl()}}} +function $p(a){switch(a.c){case 0:return Lx(),Kx;case 1:return new xy(zr(new Trb(a)));default:return new Zp(a);}} +function _n(a){switch(a.gc()){case 0:return Lx(),Kx;case 1:return new xy(a.Jc().Pb());default:return new Mx(a);}} +function w_d(a){var b;b=(!a.a&&(a.a=new A3d(t6,a,9,5)),a.a);if(b.i!=0){return L_d(JD(SFd(b,0),684))}return null} +function Vy(a,b){var c;c=Jcb(a,b);if(Tcb(fdb(a,b),0)|Rcb(fdb(a,c),0)){return c}return Jcb(Tte,fdb(_cb(c,63),1))} +function Zlb(a,b,c){var d,e;MDb(b,a.c.length);d=c.Nc();e=d.length;if(e==0){return false}mDb(a.c,b,d);return true} +function Clb(a,b){var c,d;c=a.a.length-1;while(b!=a.b){d=b-1&c;VC(a.a,b,a.a[d]);b=d}VC(a.a,a.b,null);a.b=a.b+1&c} +function Blb(a,b){var c,d;c=a.a.length-1;a.c=a.c-1&c;while(b!=a.c){d=b+1&c;VC(a.a,b,a.a[d]);b=d}VC(a.a,a.c,null)} +function wVd(a,b){if(a.D==null&&a.B!=null){a.D=a.B;a.B=null}HVd(a,b==null?null:(KDb(b),b));!!a.C&&a.fl(null)} +function dGb(a){if(a.c!=a.b.b||a.i!=a.g.b){qDb(a.a.c,0);$lb(a.a,a.b);$lb(a.a,a.g);a.c=a.b.b;a.i=a.g.b}return a.a} +function XFd(a){var b;++a.j;if(a.i==0){a.g=null}else if(a.ie){N6c(b.q,e);d=c!=b.q.d}}return d} +function Y_c(a,b){var c,d,e,f,g,h,i,j;i=b.i;j=b.j;d=a.f;e=d.i;f=d.j;g=i-e;h=j-f;c=$wnd.Math.sqrt(g*g+h*h);return c} +function wyd(a,b){var c,d;d=Qsd(a);if(!d){!fyd&&(fyd=new J3d);c=(eQd(),lQd(b));d=new Qbe(c);YEd(d.Cl(),a)}return d} +function Sc(a,b){var c,d;c=JD(a.c.Ac(b),18);if(!c){return a.jc()}d=a.hc();d.Fc(c);a.d-=c.gc();c.$b();return a.mc(d)} +function Ose(a){var b;if(!(a.c.c<0?a.a>=a.c.b:a.a<=a.c.b)){throw Icb(new Hub)}b=a.a;a.a+=a.c.c;++a.b;return zfb(b)} +function FQd(a){var b,c;if(a==null)return false;for(b=0,c=a.length;b=d||b=0?b:-b;while(d>0){if(d%2==0){c*=c;d=d/2|0}else{e*=c;d-=1}}return b<0?1/e:e} +function pfd(a,b){var c,d,e;e=1;c=a;d=b>=0?b:-b;while(d>0){if(d%2==0){c*=c;d=d/2|0}else{e*=c;d-=1}}return b<0?1/e:e} +function ctd(a,b){var c,d,e,f;f=(e=a?Qsd(a):null,Nhe((d=b,e?e.El():null,d)));if(f==b){c=Qsd(a);!!c&&c.El()}return f} +function yxd(a,b,c){var d,e;e=a.a;a.a=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new L1d(a,1,1,e,b);!c?(c=d):c.lj(d)}return c} +function c0d(a,b,c){var d,e;e=a.b;a.b=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new L1d(a,1,3,e,b);!c?(c=d):c.lj(d)}return c} +function e0d(a,b,c){var d,e;e=a.f;a.f=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new L1d(a,1,0,e,b);!c?(c=d):c.lj(d)}return c} +function ULd(a){var b,c,d,e;if(a!=null){for(c=0;c-129&&a<128){return kgb(),b=a+128,c=jgb[b],!c&&(c=jgb[b]=new cgb(a)),c}return new cgb(a)} +function zfb(a){var b,c;if(a>-129&&a<128){return Bfb(),b=a+128,c=Afb[b],!c&&(c=Afb[b]=new mfb(a)),c}return new mfb(a)} +function Uib(a,b,c,d,e){if(b==0||d==0){return}b==1?(e[d]=Wib(e,c,d,a[0])):d==1?(e[b]=Wib(e,a,b,c[0])):Vib(a,c,e,b,d)} +function _2b(a,b){var c;if(a.c.length==0){return}c=JD(hmb(a,SC(RP,nye,9,a.c.length,0,1)),199);enb(c,new l3b);Y2b(c,b)} +function f3b(a,b){var c;if(a.c.length==0){return}c=JD(hmb(a,SC(RP,nye,9,a.c.length,0,1)),199);enb(c,new q3b);Y2b(c,b)} +function lUb(a,b){var c;if(a.a.c.length>0){c=JD(amb(a.a,a.a.c.length-1),565);if(pVb(c,b)){return}}Ylb(a.a,new rVb(b))} +function uec(a){aec();var b,c;b=a.d.c-a.e.c;c=JD(a.g,156);_lb(c.b,new Pec(b));_lb(c.c,new Rec(b));Efb(c.i,new Tec(b))} +function Lfc(a){var b;b=new ihb;b.a+='VerticalSegment ';dhb(b,a.e);b.a+=' ';ehb(b,Eb(new Gb,new Hmb(a.k)));return b.a} +function Dhb(a,b){var c;a.c=b;a.a=wib(b);a.a<54&&(a.f=(c=b.d>1?TDb(b.a[0],b.a[1]):TDb(b.a[0],0),cdb(b.e>0?c:Wcb(c))))} +function Egc(a,b){var c,d,e;c=0;for(e=CYb(a,b).Jc();e.Ob();){d=JD(e.Pb(),12);c+=lNb(d,(Krc(),prc))!=null?1:0}return c} +function pQc(a,b,c){var d,e,f;d=0;for(f=Wtb(a,0);f.b!=f.d.c;){e=Reb(MD(iub(f)));if(e>c){break}else e>=b&&++d}return d} +function ndd(a){var b;b=JD(htb(a.c.c,''),233);if(!b){b=new Ocd(Xcd(Wcd(new Ycd,''),'Other'));itb(a.c.c,'',b)}return b} +function Xxd(a){var b;if((a.Db&64)!=0)return jtd(a);b=new Zgb(jtd(a));b.a+=' (name: ';Ugb(b,a.zb);b.a+=')';return b.a} +function oyd(a,b,c){var d,e;e=a.sb;a.sb=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new L1d(a,1,4,e,b);!c?(c=d):c.lj(d)}return c} +function MFd(a,b,c){var d;a.Zi(a.i+1);d=a.Xi(b,c);b!=a.i&&ohb(a.g,b,a.g,b+1,a.i-b);VC(a.g,b,d);++a.i;a.Ki(b,c);a.Li()} +function XTd(a,b,c){var d,e;e=a.r;a.r=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new L1d(a,1,8,e,a.r);!c?(c=d):c.lj(d)}return c} +function n3d(a,b,c){var d,e;d=new N1d(a.e,3,13,null,(e=b.c,e?e:(HRd(),uRd)),dXd(a,b),false);!c?(c=d):c.lj(d);return c} +function o3d(a,b,c){var d,e;d=new N1d(a.e,4,13,(e=b.c,e?e:(HRd(),uRd)),null,dXd(a,b),false);!c?(c=d):c.lj(d);return c} +function xbe(a,b){var c,d,e,f;b.cj(a.a);f=JD(fud(a.a,8),1997);if(f!=null){for(c=f,d=0,e=c.length;d>1&1431655765;a=(a>>2&858993459)+(a&858993459);a=(a>>4)+a&252645135;a+=a>>8;a+=a>>16;return a&63} +function Ohe(a){return !a?null:(a.i&1)!=0?a==Fcb?GI:a==cE?UI:a==bE?QI:a==aE?LI:a==dE?XI:a==Ecb?cJ:a==$D?HI:II:a} +function pb(a,b){return VD(a)?sgb(a,b):TD(a)?Seb(a,b):SD(a)?(KDb(a),XD(a)===XD(b)):QD(a)?a.Fb(b):UC(a)?mb(a,b):zz(a,b)} +function Khb(a){var b;Lcb(a,0)<0&&(a=Mcb(qD(Scb(a)?bdb(a):a)));return b=ddb(_cb(a,32)),64-(b!=0?ufb(b):ufb(ddb(a))+32)} +function aCb(a,b){var c;c=new YCb;if(!a.a.zd(c)){_Ab(a);return Oub(),Oub(),Nub}return Oub(),new Sub(KDb(_Bb(a,c.a,b)))} +function wIc(a,b){switch(b.g){case 2:case 1:return CYb(a,b);case 3:case 4:return $u(CYb(a,b));}return Fnb(),Fnb(),Cnb} +function Lxb(a,b){var c;if(b.a){c=b.a.a.length;!a.a?(a.a=new khb(a.d)):ehb(a.a,a.b);chb(a.a,b.a,b.d.length,c)}return a} +function NJb(a){JJb();var b,c,d,e;for(c=PJb(),d=0,e=c.length;dc){throw Icb(new Cdb(_ve+a+bwe+b+', size: '+c))}if(a>b){throw Icb(new hfb(_ve+a+awe+b))}} +function Lsd(a,b,c){if(b<0){atd(a,c)}else{if(!c.pk()){throw Icb(new hfb(EFe+c.ve()+FFe))}JD(c,69).uk().Ck(a,a.ei(),b)}} +function WRc(a,b,c){if($wnd.Math.abs(b-a)pCe?a-c>pCe:c-a>pCe} +function lvd(a,b,c,d){switch(b){case 1:return !a.n&&(a.n=new A3d(P3,a,1,7)),a.n;case 2:return a.k;}return Jud(a,b,c,d)} +function mTd(a){var b;if((a.Db&64)!=0)return jtd(a);b=new Zgb(jtd(a));b.a+=' (source: ';Ugb(b,a.d);b.a+=')';return b.a} +function ZTd(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,2,c,b))} +function CWd(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,8,c,b))} +function DWd(a,b){var c;c=(a.Bb&512)!=0;b?(a.Bb|=512):(a.Bb&=-513);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,9,c,b))} +function $Td(a,b){var c;c=(a.Bb&512)!=0;b?(a.Bb|=512):(a.Bb&=-513);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,3,c,b))} +function h_d(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,8,c,b))} +function k0d(a,b,c){var d,e;e=a.a;a.a=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new L1d(a,1,5,e,a.a);!c?(c=d):qId(c,d)}return c} +function ije(a,b){var c;if(a.b==-1&&!!a.a){c=a.a.nk();a.b=!c?zWd(a.c.Ah(),a.a):a.c.Eh(a.a.Jj(),c)}return a.c.vh(a.b,b)} +function r$d(a,b){var c,d;for(d=new fKd(a);d.e!=d.i.gc();){c=JD(dKd(d),29);if(XD(b)===XD(c)){return true}}return false} +function HQd(a){if(a>=65&&a<=70){return a-65+10}if(a>=97&&a<=102){return a-97+10}if(a>=48&&a<=57){return a-48}return 0} +function I2b(a){var b,c;b=a.k;if(b==(UYb(),NYb)){c=JD(lNb(a,(Krc(),Oqc)),64);return c==(mmd(),Uld)||c==jmd}return false} +function eBb(a){var b;b=fBb(a);if(Ocb(b.a,0)){return Xub(),Xub(),Wub}return Xub(),new avb(Qcb(b.a,0)?Tqb(b)/cdb(b.a):0)} +function Fsd(a,b){var c;c=uWd(a,b);if(RD(c,335)){return JD(c,38)}throw Icb(new hfb(EFe+b+"' is not a valid attribute"))} +function XEd(a,b,c){var d;d=a.gc();if(b>d)throw Icb(new cKd(b,d));if(a.Qi()&&a.Gc(c)){throw Icb(new hfb(FGe))}a.Ei(b,c)} +function A2d(a,b){var c,d;for(d=new fKd(a);d.e!=d.i.gc();){c=JD(dKd(d),143);if(XD(b)===XD(c)){return true}}return false} +function Gce(a,b,c){var d,e,f;f=(e=L3d(a.b,b),e);if(f){d=JD(rde(Nce(a,f),''),29);if(d){return Pce(a,d,b,c)}}return null} +function Jce(a,b,c){var d,e,f;f=(e=L3d(a.b,b),e);if(f){d=JD(rde(Nce(a,f),''),29);if(d){return Qce(a,d,b,c)}}return null} +function Boe(a){var b,c,d;d=0;c=a.length;for(b=0;b=0?qib(a):cib(qib(Wcb(a)))))} +function fWb(a,b,c,d,e,f){this.e=new imb;this.f=(bAc(),aAc);Ylb(this.e,a);this.d=b;this.a=c;this.b=d;this.f=e;this.c=f} +function Xeb(a,b){if(ab){return 1}if(a==b){return a==0?Xeb(1/a,1/b):0}return isNaN(a)?isNaN(b)?0:1:-1} +function wlb(a){var b;b=a.a[a.c-1&a.a.length-1];if(b==null){return null}a.c=a.c-1&a.a.length-1;VC(a.a,a.c,null);return b} +function SGb(a){var b,c;for(c=a.p.a.ec().Jc();c.Ob();){b=JD(c.Pb(),217);if(b.f&&a.b[b.c]<-1.0E-10){return b}}return null} +function PUb(a){var b,c,d;b=new imb;for(d=new Hmb(a.b);d.a=1?ljd:jjd}return c} +function Hhe(a){var b,c;for(c=Ihe(zVd(a)).Jc();c.Ob();){b=OD(c.Pb());if(ixd(a,b)){return SQd((RQd(),QQd),b)}}return null} +function MDc(a,b,c){var d,e;for(e=a.a.ec().Jc();e.Ob();){d=JD(e.Pb(),9);if(Ae(c,JD(amb(b,d.p),18))){return d}}return null} +function ree(a,b,c){var d,e;e=RD(b,103)&&(JD(b,19).Bb&tve)!=0?new Qfe(b,a):new Nfe(b,a);for(d=0;d>10)+uve&Bue;b[1]=(a&1023)+56320&Bue;return Pgb(b,0,b.length)} +function a4d(a,b){var c;c=(a.Bb&tve)!=0;b?(a.Bb|=tve):(a.Bb&=-65537);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,20,c,b))} +function yUd(a,b){var c;c=(a.Bb&Pte)!=0;b?(a.Bb|=Pte):(a.Bb&=-16385);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,16,c,b))} +function iVd(a,b){var c;c=(a.Bb&KFe)!=0;b?(a.Bb|=KFe):(a.Bb&=-32769);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,18,c,b))} +function $3d(a,b){var c;c=(a.Bb&KFe)!=0;b?(a.Bb|=KFe):(a.Bb&=-32769);(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new O1d(a,1,18,c,b))} +function CYb(a,b){var c;a.i||uYb(a);c=JD($qb(a.g,b),49);return !c?(Fnb(),Fnb(),Cnb):new Yjb(a.j,JD(c.a,15).a,JD(c.b,15).a)} +function xEd(a,b,c){var d,e;d=JD(b.mf(a.a),35);e=JD(c.mf(a.a),35);return d!=null&&e!=null?Sdb(d,e):d!=null?-1:e!=null?1:0} +function GEd(a,b,c){var d,e;d=(ksd(),e=new evd,e);cvd(d,b);dvd(d,c);!!a&&YEd((!a.a&&(a.a=new VXd(K3,a,5)),a.a),d);return d} +function QYc(a,b,c){var d;d=0;!!b&&(qjd(a.a)?(d+=b.f.a/2):(d+=b.f.b/2));!!c&&(qjd(a.a)?(d+=c.f.a/2):(d+=c.f.b/2));return d} +function Qsb(a,b,c){var d;d=a.a.get(b);a.a.set(b,c===undefined?null:c);if(d===undefined){++a.c;++a.b.g}else{++a.d}return d} +function tvd(a){var b;if((a.Db&64)!=0)return jtd(a);b=new Zgb(jtd(a));b.a+=' (identifier: ';Ugb(b,a.k);b.a+=')';return b.a} +function Mm(a){var b;switch(a.gc()){case 0:return Dx(),Cx;case 1:return new vy(Qb(a.Xb(0)));default:b=a;return new Ex(b);}} +function Lbc(a){switch(JD(lNb(a,($xc(),Wvc)),222).g){case 1:return new nkc;case 3:return new elc;default:return new hkc;}} +function efb(a){var b;b=Udb(a);if(b>3.4028234663852886E38){return ove}else if(b<-3.4028234663852886E38){return pve}return b} +function Jcb(a,b){var c;if(Scb(a)&&Scb(b)){c=a+b;if(jveb){jub(c);break}}gub(c,b)} +function mdd(a,b){var c,d,e,f,g;c=b.f;itb(a.c.d,c,b);if(b.g!=null){for(e=b.g,f=0,g=e.length;fb&&d.Le(a[f-1],a[f])>0;--f){g=a[f];VC(a,f,a[f-1]);VC(a,f-1,g)}}} +function Ksd(a,b,c,d){if(b<0){_sd(a,c,d)}else{if(!c.pk()){throw Icb(new hfb(EFe+c.ve()+FFe))}JD(c,69).uk().Ak(a,a.ei(),b,d)}} +function btd(a,b){var c;c=uWd(a.Ah(),b);if(RD(c,103)){return JD(c,19)}throw Icb(new hfb(EFe+b+"' is not a valid reference"))} +function RFb(a,b){if(b==a.d){return a.e}else if(b==a.e){return a.d}else{throw Icb(new hfb('Node '+b+' not part of edge '+a))}} +function Evd(a,b,c,d){switch(b){case 3:return a.f;case 4:return a.g;case 5:return a.i;case 6:return a.j;}return lvd(a,b,c,d)} +function phc(a){if(a.k!=(UYb(),RYb)){return false}return OBb(new gCb(null,new Xvb(new Yr(Dr(BYb(a).a.Jc(),new Dl)))),new qhc)} +function Qrc(){Qrc=ndb;Prc=new Rrc(cye,0);Lrc=new Rrc('FIRST',1);Mrc=new Rrc(Hye,2);Nrc=new Rrc('LAST',3);Orc=new Rrc(Iye,4)} +function Lnc(){Lnc=ndb;Inc=new Nnc('LAYER_SWEEP',0);Jnc=new Nnc('MEDIAN_LAYER_SWEEP',1);Hnc=new Nnc(Uye,2);Knc=new Nnc(cye,3)} +function E3c(){E3c=ndb;C3c=new F3c('ASPECT_RATIO_DRIVEN',0);D3c=new F3c('MAX_SCALE_DRIVEN',1);B3c=new F3c('AREA_DRIVEN',2)} +function Tod(){Tod=ndb;Sod=new Uod(WBe,0);Pod=new Uod('GROUP_DEC',1);Rod=new Uod('GROUP_MIXED',2);Qod=new Uod('GROUP_INC',3)} +function LSc(a,b){return sgb(!!b.b&&!!b.c?wTc(b.b)+'->'+wTc(b.c):'e_'+tb(b),!!a.b&&!!a.c?wTc(a.b)+'->'+wTc(a.c):'e_'+tb(a))} +function NSc(a,b){return sgb(!!b.b&&!!b.c?wTc(b.b)+'->'+wTc(b.c):'e_'+tb(b),!!a.b&&!!a.c?wTc(a.b)+'->'+wTc(a.c):'e_'+tb(a))} +function Ty(a,b){Sy();return Wy(que),$wnd.Math.abs(a-b)<=que||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Rdb(isNaN(a),isNaN(b))} +function ryc(a){qyc();this.c=Wu(WC(OC(j1,1),rte,829,0,[fyc]));this.b=new Yrb;this.a=a;ejb(this.b,oyc,1);_lb(pyc,new lpd(this))} +function crb(a){var b;this.a=(b=JD(a.e&&a.e(),10),new Krb(b,JD(kDb(b,b.length),10),0));this.b=SC(aJ,rte,1,this.a.a.length,5,1)} +function qdb(a){var b;if(Array.isArray(a)&&a.Rm===rdb){return ueb(rb(a))+'@'+(b=tb(a)>>>0,b.toString(16))}return a.toString()} +function DQd(a){var b;if(a==null)return true;b=a.length;return b>0&&(RDb(b-1,a.length),a.charCodeAt(b-1)==58)&&!kQd(a,$Pd,_Pd)} +function kQd(a,b,c){var d,e;for(d=0,e=a.length;d=e){return b.c+c}}return b.c+b.b.gc()} +function lOd(a,b){jOd();var c,d,e,f;d=gXd(a);e=b;bnb(d,0,d.length,e);for(c=0;c0){d+=e;++c}}c>1&&(d+=a.d*(c-1));return d} +function hFd(a){var b,c,d;d=new Xgb;d.a+='[';for(b=0,c=a.gc();b=0;--d){b=c[d];for(e=0;e>5;b=a&31;d=SC(cE,Pue,30,c+1,15,1);d[c]=1<0){if(b.lengtha.i&&VC(b,a.i,null);return b} +function KVd(a){var b;if((a.Db&64)!=0)return Xxd(a);b=new Zgb(Xxd(a));b.a+=' (instanceClassName: ';Ugb(b,a.D);b.a+=')';return b.a} +function wQd(a){var b,c,d,e;e=0;for(c=0,d=a.length;c0){a.Zj();d=b==null?0:tb(b);e=(d<e)%a.d.length;c=ZLd(a,e,d,b);return c!=-1}else{return false}} +function sJd(a,b,c){var d,e,f;if(a.Nj()){d=a.i;f=a.Oj();MFd(a,d,b);e=a.Gj(3,null,b,d,f);!c?(c=e):c.lj(e)}else{MFd(a,a.i,b)}return c} +function aMd(a,b){var c,d,e;if(a.f>0){a.Zj();d=b==null?0:tb(b);e=(d<e)%a.d.length;c=YLd(a,e,d,b);if(c){return c.kd()}}return null} +function cYd(a,b,c){var d,e;d=new N1d(a.e,3,10,null,(e=b.c,RD(e,88)?JD(e,29):(HRd(),xRd)),dXd(a,b),false);!c?(c=d):c.lj(d);return c} +function dYd(a,b,c){var d,e;d=new N1d(a.e,4,10,(e=b.c,RD(e,88)?JD(e,29):(HRd(),xRd)),null,dXd(a,b),false);!c?(c=d):c.lj(d);return c} +function Xe(a,b){var c,d,e;if(RD(b,45)){c=JD(b,45);d=c.jd();e=Ov(a.Pc(),d);return Hb(e,c.kd())&&(e!=null||a.Pc()._b(d))}return false} +function Hvd(a,b){switch(b){case 3:Jvd(a,0);return;case 4:Lvd(a,0);return;case 5:Mvd(a,0);return;case 6:Nvd(a,0);return;}qvd(a,b)} +function DYb(a,b){switch(b.g){case 1:return Zq(a.j,(kZb(),fZb));case 2:return Zq(a.j,(kZb(),hZb));default:return Fnb(),Fnb(),Cnb;}} +function qib(a){Whb();var b,c;c=ddb(a);b=ddb(_cb(a,32));if(b!=0){return new iib(c,b)}if(c>10||c<0){return new hib(1,c)}return Shb[c]} +function _yc(a){Yyc();var b;(!a.q?(Fnb(),Fnb(),Dnb):a.q)._b(($xc(),Kwc))?(b=JD(lNb(a,Kwc),203)):(b=JD(lNb(xYb(a),Lwc),203));return b} +function GA(a,b,c,d){var e,f;f=c-b;if(f<3){while(f<3){a*=10;++f}}else{e=1;while(f>3){e*=10;--f}a=(a+(e>>1))/e|0}d.i=a;return true} +function YHb(a,b,c){MHb();HHb.call(this);this.a=QC(gN,[Ote,Ewe],[592,216],0,[LHb,KHb],2);this.c=new zfd;this.g=a;this.f=b;this.d=c} +function lIc(a){this.e=SC(cE,Pue,30,a.length,15,1);this.c=SC(Fcb,zwe,30,a.length,16,1);this.b=SC(Fcb,zwe,30,a.length,16,1);this.f=0} +function eEc(a){var b,c;a.j=SC(aE,vve,30,a.p.c.length,15,1);for(c=new Hmb(a.p);c.a>5;b&=31;e=a.d+c+(b==0?0:1);d=SC(cE,Pue,30,e,15,1);yib(d,a.a,c,b);f=new jib(a.e,e,d);Yhb(f);return f} +function Txb(a,b,c){var d,e,f;e=null;f=a.b;while(f){d=a.a.Le(b,f.d);if(c&&d==0){return f}if(d>=0){f=f.a[1]}else{e=f;f=f.a[0]}}return e} +function Uxb(a,b,c){var d,e,f;e=null;f=a.b;while(f){d=a.a.Le(b,f.d);if(c&&d==0){return f}if(d<=0){f=f.a[0]}else{e=f;f=f.a[1]}}return e} +function Leb(a,b){var c=0;while(!b[c]||b[c]==''){c++}var d=b[c++];for(;c0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return 'stack' in new Error} +function c7b(a){var b;b=a.a;do{b=JD(Xr(new Yr(Dr(BYb(b).a.Jc(),new Dl))),17).d.i;b.k==(UYb(),PYb)&&Ylb(a.e,b)}while(b.k==(UYb(),PYb))} +function ECc(a,b){var c,d,e;for(d=new Yr(Dr(BYb(a).a.Jc(),new Dl));Wr(d);){c=JD(Xr(d),17);e=c.d.i;if(e.c==b){return false}}return true} +function Rkc(a,b,c){var d,e,f,g;e=JD(bjb(a.b,c),171);d=0;for(g=new Hmb(b.j);g.ab?1:Rdb(isNaN(a),isNaN(b)))>0} +function KEb(a,b){return Sy(),Sy(),Wy(que),($wnd.Math.abs(a-b)<=que||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Rdb(isNaN(a),isNaN(b)))<0} +function JEb(a,b){return Sy(),Sy(),Wy(que),($wnd.Math.abs(a-b)<=que||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Rdb(isNaN(a),isNaN(b)))<=0} +function LJb(a){switch(a.g){case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:return true;default:return false;}} +function V6c(a,b,c,d,e,f){this.a=a;this.c=b;this.b=c;this.f=d;this.d=e;this.e=f;this.c>0&&this.b>0&&(this.g=h7c(this.c,this.b,this.a))} +function jC(f,a){var b=f.a;var c;a=String(a);b.hasOwnProperty(a)&&(c=b[a]);var d=(zC(),yC)[typeof c];var e=d?d(c):FC(typeof c);return e} +function BAd(a){var b,c,d;d=null;b=oGe in a.a;c=!b;if(c){throw Icb(new JAd('Every element must have an id.'))}d=AAd(iC(a,oGe));return d} +function Ooe(a){var b,c;c=Poe(a);b=null;while(a.c==2){Koe(a);if(!b){b=(Tqe(),Tqe(),++Sqe,new gse(2));fse(b,c);c=b}c.Hm(Poe(a))}return c} +function lMd(a,b){var c,d,e;a.Zj();d=b==null?0:tb(b);e=(d<e)%a.d.length;c=YLd(a,e,d,b);if(c){jMd(a,c);return c.kd()}else{return null}} +function Pgb(a,b,c){var d,e,f,g;f=b+c;QDb(b,f,a.length);g='';for(e=b;eb.e){return 1}if(a.eb.d){return a.e}if(a.d=48&&a<48+$wnd.Math.min(10,10)){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1} +function ZDc(a,b){if(b.c==a){return b.d}else if(b.d==a){return b.c}throw Icb(new hfb('Input edge is not connected to the input port.'))} +function Ubd(a,b){if(a.a<0){throw Icb(new kfb('Did not call before(...) or after(...) before calling add(...).'))}_bd(a,a.a,b);return a} +function HGd(a){GGd();if(RD(a,166)){return JD(bjb(EGd,qK),296).Qg(a)}if(_ib(EGd,rb(a))){return JD(bjb(EGd,rb(a)),296).Qg(a)}return null} +function dud(a){var b,c;if((a.Db&32)==0){c=(b=JD(fud(a,16),29),yWd(!b?a.fi():b)-yWd(a.fi()));c!=0&&hud(a,32,SC(aJ,rte,1,c,5,1))}return a} +function hud(a,b,c){var d;if((a.Db&b)!=0){if(c==null){gud(a,b)}else{d=eud(a,b);d==-1?(a.Eb=c):VC(KD(a.Eb),d,c)}}else c!=null&&aud(a,b,c)} +function PPc(a,b,c,d){var e,f;if(b.c.length==0){return}e=LPc(c,d);f=KPc(b);VBb(dCb(new gCb(null,new Wvb(f,1)),new YPc),new aQc(a,c,e,d))} +function ylb(a,b){var c,d,e,f;d=a.a.length-1;c=b-a.b&d;f=a.c-b&d;e=a.c-a.b&d;Glb(c=f){Blb(a,b);return -1}else{Clb(a,b);return 1}} +function tA(a,b){var c,d;c=(RDb(b,a.length),a.charCodeAt(b));d=b+1;while(db.e){return 1}else if(a.fb.f){return 1}return tb(a)-tb(b)} +function Se(a,b){var c;if(XD(b)===XD(a)){return true}if(!RD(b,22)){return false}c=JD(b,22);if(c.gc()!=a.gc()){return false}return a.Hc(c)} +function tgb(a,b){KDb(a);if(b==null){return false}if(sgb(a,b)){return true}return a.length==b.length&&sgb(a.toLowerCase(),b.toLowerCase())} +function Ofb(a){var b,c;if(Lcb(a,-129)>0&&Lcb(a,128)<0){return Qfb(),b=ddb(a)+128,c=Pfb[b],!c&&(c=Pfb[b]=new Gfb(a)),c}return new Gfb(a)} +function tUb(){tUb=ndb;sUb=new uUb(cye,0);qUb=new uUb('INSIDE_PORT_SIDE_GROUPS',1);pUb=new uUb('GROUP_MODEL_ORDER',2);rUb=new uUb(dye,3)} +function Qsd(a){var b,c,d;d=a.Gh();if(!d){b=0;for(c=a.Mh();c;c=c.Mh()){if(++b>wve){return c.Nh()}d=c.Gh();if(!!d||c==a){break}}}return d} +function sde(a){var b;a.b||tde(a,(b=Fce(a.e,a.a),!b||!sgb(uEe,aMd((!b.b&&(b.b=new QTd((HRd(),DRd),K7,b)),b.b),'qualified'))));return a.c} +function jhc(a){var b,c;for(c=new Hmb(a.a.b);c.a2000){Gz=a;Hz=$wnd.setTimeout(Qz,10)}}if(Fz++==0){Tz((Sz(),Rz));return true}return false} +function qAb(a,b,c){var d;(gAb?(oAb(a),true):hAb?(Xzb(),true):kAb?(Xzb(),true):jAb&&(Xzb(),false))&&(d=new fAb(b),d.b=c,mAb(a,d),undefined)} +function QKb(a,b){var c;c=!a.A.Gc((Vmd(),Umd))||a.q==(xld(),sld);a.u.Gc((Lld(),Hld))?c?OKb(a,b):SKb(a,b):a.u.Gc(Jld)&&(c?PKb(a,b):TKb(a,b))} +function Ngc(a,b,c){var d,e;XIc(a.e,b,c,(mmd(),lmd));XIc(a.i,b,c,Tld);if(a.a){e=JD(lNb(b,(Krc(),hrc)),12);d=JD(lNb(c,hrc),12);YIc(a.g,e,d)}} +function hbd(a){var b;if(XD(Pud(a,(gjd(),Chd)))===XD((Bkd(),zkd))){if(!Czd(a)){Rud(a,Chd,Akd)}else{b=JD(Pud(Czd(a),Chd),347);Rud(a,Chd,b)}}} +function HUb(a,b,c){return new Afd($wnd.Math.min(a.a,b.a)-c/2,$wnd.Math.min(a.b,b.b)-c/2,$wnd.Math.abs(a.a-b.a)+c,$wnd.Math.abs(a.b-b.b)+c)} +function $gc(a){var b;this.d=new imb;this.j=new Wfd;this.g=new Wfd;b=a.g.b;this.f=JD(lNb(xYb(b),($xc(),Pvc)),86);this.e=Reb(MD(LXb(b,zxc)))} +function ohc(a){this.d=new imb;this.e=new ltb;this.c=SC(cE,Pue,30,(mmd(),WC(OC(J2,1),eye,64,0,[kmd,Uld,Tld,jmd,lmd])).length,15,1);this.b=a} +function ckc(a,b,c){var d;d=c[a.g][b];switch(a.g){case 1:case 3:return new Yfd(0,d);case 2:case 4:return new Yfd(d,0);default:return null;}} +function TAd(a,b){var c;c=uo(a.o,b);if(c==null){throw Icb(new JAd('Node did not exist in input.'))}JBd(a,b);IBd(a,b);TBd(a,b,c);return null} +function snb(a,b){var c,d;d=a.a.length;b.lengthd&&VC(b,d,null);return b} +function hmb(a,b){var c,d;d=a.c.length;b.lengthd&&VC(b,d,null);return b} +function qQd(a,b,c,d){var e;e=a.length;if(b>=e)return e;for(b=b>0?b:0;b0){Ylb(a.b,new cB(b.a,c));d=b.a.length;0d&&(b.a+=Ogb(SC(_D,Aue,30,-d,15,1)))}} +function _Fb(a,b,c){var d,e,f;if(c[b.d]){return}c[b.d]=true;for(e=new Hmb(dGb(b));e.a=a.b>>1){d=a.c;for(c=a.b;c>b;--c){d=d.b}}else{d=a.a.a;for(c=0;c=0?a.Th(e):$sd(a,d)):c<0?$sd(a,d):JD(d,69).uk().zk(a,a.ei(),c)} +function Oud(a){var b,c,d;d=(!a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0)),a.o);for(c=d.c.Jc();c.e!=c.i.gc();){b=JD(c.Wj(),45);b.kd()}return fMd(d)} +function mEd(a){var b;if(RD(a.a,4)){b=HGd(a.a);if(b==null){throw Icb(new kfb(vEe+a.b+"'. "+rEe+(seb(j5),j5.k)+sEe))}return b}else{return a.a}} +function gle(a){var b;if(a==null)return null;b=yoe(lse(a,true));if(b==null){throw Icb(new Kje("Invalid base64Binary value: '"+a+"'"))}return b} +function dKd(b){var c;try{c=b.i.Xb(b.e);b.Vj();b.g=b.e++;return c}catch(a){a=Hcb(a);if(RD(a,99)){b.Vj();throw Icb(new Hub)}else throw Icb(a)}} +function zKd(b){var c;try{c=b.c.Ti(b.e);b.Vj();b.g=b.e++;return c}catch(a){a=Hcb(a);if(RD(a,99)){b.Vj();throw Icb(new Hub)}else throw Icb(a)}} +function tQd(a){var b,c,d,e;e=0;for(c=0,d=a.length;c=64&&b<128&&(e=Ycb(e,Zcb(1,b-64)))}return e} +function LXb(a,b){var c,d;d=null;if(mNb(a,(gjd(),Lid))){c=JD(lNb(a,Lid),105);c.nf(b)&&(d=c.mf(b))}d==null&&!!xYb(a)&&(d=lNb(xYb(a),b));return d} +function JVb(a,b){var c;c=JD(lNb(a,($xc(),nwc)),78);if(Xq(b,GVb)){if(!c){c=new jgd;oNb(a,nwc,c)}else{_tb(c)}}else !!c&&oNb(a,nwc,null);return c} +function T6b(a,b){var c,d,e;e=new jmb(b.gc());for(d=b.Jc();d.Ob();){c=JD(d.Pb(),294);c.c==c.f?I6b(a,c,c.c):J6b(a,c)||(nDb(e.c,c),true)}return e} +function aLb(a,b){var c,d,e;c=a.o;for(e=JD(JD(Qc(a.r,b),22),83).Jc();e.Ob();){d=JD(e.Pb(),115);d.e.a=WKb(d,c.a);d.e.b=c.b*Reb(MD(d.b.mf(UKb)))}} +function P2b(a,b){var c,d,e,f;e=a.k;c=Reb(MD(lNb(a,(Krc(),qrc))));f=b.k;d=Reb(MD(lNb(b,qrc)));return f!=(UYb(),NYb)?-1:e!=NYb?1:c==d?0:cc.b){return true}}}return false} +function JYb(a){var b;b=new ihb;b.a+='n';a.k!=(UYb(),RYb)&&ehb(ehb((b.a+='(',b),ds(a.k).toLowerCase()),')');ehb((b.a+='_',b),wYb(a));return b.a} +function jzc(){jzc=ndb;izc=new lzc(WBe,0);fzc=new lzc(Uye,1);gzc=new lzc('LINEAR_SEGMENTS',2);ezc=new lzc('BRANDES_KOEPF',3);hzc=new lzc(VBe,4)} +function Rsd(a,b,c,d){var e;if(c>=0){return a.Ph(b,c,d)}else{!!a.Mh()&&(d=(e=a.Ch(),e>=0?a.xh(d):a.Mh().Qh(a,-1-e,null,d)));return a.zh(b,c,d)}} +function ewd(a,b){switch(b){case 7:!a.e&&(a.e=new Wge(N3,a,7,4));uJd(a.e);return;case 8:!a.d&&(a.d=new Wge(N3,a,8,5));uJd(a.d);return;}Hvd(a,b)} +function Rud(a,b,c){c==null?(!a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0)),lMd(a.o,b)):(!a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0)),hMd(a.o,b,c));return a} +function au(b,c){var d;d=b.dd(c);try{return d.Pb()}catch(a){a=Hcb(a);if(RD(a,112)){throw Icb(new Cdb("Can't get element "+c))}else throw Icb(a)}} +function gKb(a,b){var c;c=JD($qb(a.b,b),127).n;switch(b.g){case 1:a.t>=0&&(c.d=a.t);break;case 3:a.t>=0&&(c.a=a.t);}if(a.C){c.b=a.C.b;c.c=a.C.c}} +function b7b(a){var b;b=a.a;do{b=JD(Xr(new Yr(Dr(yYb(b).a.Jc(),new Dl))),17).c.i;b.k==(UYb(),PYb)&&a.b.Ec(b)}while(b.k==(UYb(),PYb));a.b=$u(a.b)} +function ZCc(a,b){var c,d,e;e=a;for(d=new Yr(Dr(yYb(b).a.Jc(),new Dl));Wr(d);){c=JD(Xr(d),17);!!c.c.i.c&&(e=$wnd.Math.max(e,c.c.i.c.p))}return e} +function iLb(a,b){var c,d,e;e=0;d=JD(JD(Qc(a.r,b),22),83).Jc();while(d.Ob()){c=JD(d.Pb(),115);e+=c.d.d+c.b.Kf().b+c.d.a;d.Ob()&&(e+=a.w)}return e} +function aKb(a,b){var c,d,e;e=0;d=JD(JD(Qc(a.r,b),22),83).Jc();while(d.Ob()){c=JD(d.Pb(),115);e+=c.d.b+c.b.Kf().a+c.d.c;d.Ob()&&(e+=a.w)}return e} +function i_c(a){var b,c,d,e;d=0;e=k_c(a);if(e.c.length==0){return 1}else{for(c=new Hmb(e);c.a=0?a.Ih(g,c,true):Zsd(a,f,c)):JD(f,69).uk().wk(a,a.ei(),e,c,d)} +function CKb(a,b,c,d){var e,f;f=b.nf((gjd(),Thd))?JD(b.mf(Thd),22):a.j;e=NJb(f);if(e==(JJb(),IJb)){return}if(c&&!LJb(e)){return}lIb(EKb(a,e,d),b)} +function ID(a,b){if(VD(a)){return !!HD[b]}else if(a.Qm){return !!a.Qm[b]}else if(TD(a)){return !!GD[b]}else if(SD(a)){return !!FD[b]}return false} +function E0b(a){switch(a.g){case 1:return OLb(),NLb;case 3:return OLb(),KLb;case 2:return OLb(),MLb;case 4:return OLb(),LLb;default:return null;}} +function jgc(a,b,c){if(a.e){switch(a.b){case 1:Tfc(a.c,b,c);break;case 0:Ufc(a.c,b,c);}}else{Rfc(a.c,b,c)}a.a[b.p][c.p]=a.c.i;a.a[c.p][b.p]=a.c.e} +function fIc(a){var b,c;if(a==null){return null}c=SC(RP,Ote,199,a.length,0,2);for(b=0;bf?1:0}return 0} +function Yyc(){Yyc=ndb;Wyc=new $yc(cye,0);Xyc=new $yc('PORT_POSITION',1);Vyc=new $yc('NODE_SIZE_WHERE_SPACE_PERMITS',2);Uyc=new $yc('NODE_SIZE',3)} +function _Vc(a,b){var c,d,e;b.Tg('Untreeify',1);c=JD(lNb(a,(MWc(),GWc)),16);for(e=c.Jc();e.Ob();){d=JD(e.Pb(),65);Qtb(d.b.d,d);Qtb(d.c.b,d)}b.Ug()} +function wgd(){wgd=ndb;qgd=new xgd('AUTOMATIC',0);tgd=new xgd(Fwe,1);ugd=new xgd(Gwe,2);vgd=new xgd('TOP',3);rgd=new xgd(Iwe,4);sgd=new xgd(Cwe,5)} +function gFd(a,b,c){var d,e;e=a.gc();if(b>=e)throw Icb(new cKd(b,e));if(a.Qi()){d=a.bd(c);if(d>=0&&d!=b){throw Icb(new hfb(FGe))}}return a.Vi(b,c)} +function dXd(a,b){var c,d,e;e=TFd(a,b);if(e>=0)return e;if(a.ml()){for(d=0;d0||a==(Uk(),Tk)||b==(il(),hl)){throw Icb(new hfb('Invalid range: '+vx(a,b)))}} +function Wib(a,b,c,d){Sib();var e,f;e=0;for(f=0;f0);if((b&-b)==b){return YD(b*Ovb(a,31)*4.6566128730773926E-10)}do{c=Ovb(a,31);d=c%b}while(c-d+(b-1)<0);return YD(d)} +function $Fb(a,b){var c,d,e;c=GGb(new IGb,a);for(e=new Hmb(b);e.a1&&(f=$Fb(a,b));return f} +function iEc(a){var b,c,d;b=0;for(d=new Hmb(a.c.a);d.a102)return -1;if(a<=57)return a-48;if(a<65)return -1;if(a<=70)return a-65+10;if(a<97)return -1;return a-97+10} +function ak(a,b){if(a==null){throw Icb(new Vfb('null key in entry: null='+b))}else if(b==null){throw Icb(new Vfb('null value in entry: '+a+'=null'))}} +function CIb(a,b){var c;c=WC(OC(aE,1),vve,30,15,[IHb(a.a[0],b),IHb(a.a[1],b),IHb(a.a[2],b)]);if(a.d){c[0]=$wnd.Math.max(c[0],c[2]);c[2]=c[0]}return c} +function DIb(a,b){var c;c=WC(OC(aE,1),vve,30,15,[JHb(a.a[0],b),JHb(a.a[1],b),JHb(a.a[2],b)]);if(a.d){c[0]=$wnd.Math.max(c[0],c[2]);c[2]=c[0]}return c} +function AEc(a,b,c){if(!yld(JD(lNb(b,($xc(),bxc)),102))){zEc(a,b,FYb(b,c));zEc(a,b,FYb(b,(mmd(),jmd)));zEc(a,b,FYb(b,Uld));Fnb();gmb(b.j,new OEc(a))}} +function OQc(a){var b,c;a.c||RQc(a);c=new jgd;b=new Hmb(a.a);Fmb(b);while(b.a0&&(RDb(0,b.length),b.charCodeAt(0)==43)?(RDb(1,b.length+1),b.substr(1)):b))} +function ole(a){var b;return a==null?null:new lib((b=lse(a,true),b.length>0&&(RDb(0,b.length),b.charCodeAt(0)==43)?(RDb(1,b.length+1),b.substr(1)):b))} +function Wxb(a,b,c,d,e,f,g,h){var i,j;if(!d){return}i=d.a[0];!!i&&Wxb(a,b,c,i,e,f,g,h);Xxb(a,c,d.d,e,f,g,h)&&b.Ec(d);j=d.a[1];!!j&&Wxb(a,b,c,j,e,f,g,h)} +function De(a,b){var c,d,e,f;f=a.gc();b.lengthf&&VC(b,f,null);return b} +function Tu(a,b){var c,d;d=a.gc();if(b==null){for(c=0;c0&&(i+=e);j[k]=g;g+=h*(i+d)}} +function Llc(a){var b;for(b=0;b0?a.c:0);++e}a.b=d;a.d=f} +function THb(a,b){var c;c=WC(OC(aE,1),vve,30,15,[SHb(a,(zHb(),wHb),b),SHb(a,xHb,b),SHb(a,yHb,b)]);if(a.f){c[0]=$wnd.Math.max(c[0],c[2]);c[2]=c[0]}return c} +function a2b(a){var b;if(!mNb(a,($xc(),Fwc))){return}b=JD(lNb(a,Fwc),22);if(b.Gc((_kd(),Tkd))){b.Kc(Tkd);b.Ec(Vkd)}else if(b.Gc(Vkd)){b.Kc(Vkd);b.Ec(Tkd)}} +function b2b(a){var b;if(!mNb(a,($xc(),Fwc))){return}b=JD(lNb(a,Fwc),22);if(b.Gc((_kd(),$kd))){b.Kc($kd);b.Ec(Ykd)}else if(b.Gc(Ykd)){b.Kc(Ykd);b.Ec($kd)}} +function skc(a,b,c,d){var e,f,g,h;a.a==null&&vkc(a,b);g=b.b.j.c.length;f=c.d.p;h=d.d.p;e=h-1;e<0&&(e=g-1);return f<=e?a.a[e]-a.a[f]:a.a[g-1]-a.a[f]+a.a[e]} +function Mlc(a){var b;for(b=0;b0&&(e.b+=b);return e} +function hUb(a,b){var c,d,e;e=new Wfd;for(d=a.Jc();d.Ob();){c=JD(d.Pb(),37);XTb(c,0,e.b);e.b+=c.f.b+b;e.a=$wnd.Math.max(e.a,c.f.a)}e.a>0&&(e.a+=b);return e} +function jIc(a,b){var c,d;if(b.length==0){return 0}c=HIc(a.a,b[0],(mmd(),lmd));c+=HIc(a.a,b[b.length-1],Tld);for(d=0;d>16==6){return a.Cb.Qh(a,5,B6,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?a.fi():c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function cA(a){Zz();var b=a.e;if(b&&b.stack){var c=b.stack;var d=b+'\n';c.substring(0,d.length)==d&&(c=c.substring(d.length));return c.split('\n')}return []} +function wfb(a){var b;b=(Dfb(),Cfb);return b[a>>>28]|b[a>>24&15]<<4|b[a>>20&15]<<8|b[a>>16&15]<<12|b[a>>12&15]<<16|b[a>>8&15]<<20|b[a>>4&15]<<24|b[a&15]<<28} +function tlb(a){var b,c,d;if(a.b!=a.c){return}d=a.a.length;c=tfb($wnd.Math.max(8,d))<<1;if(a.b!=0){b=kDb(a.a,c);slb(a,b,d);a.a=b;a.b=0}else{qDb(a.a,c)}a.c=d} +function WKb(a,b){var c;c=a.b;return c.nf((gjd(),pid))?c.$f()==(mmd(),lmd)?-c.Kf().a-Reb(MD(c.mf(pid))):b+Reb(MD(c.mf(pid))):c.$f()==(mmd(),lmd)?-c.Kf().a:b} +function wYb(a){var b;if(a.b.c.length!=0&&!!JD(amb(a.b,0),70).a){return JD(amb(a.b,0),70).a}b=qWb(a);if(b!=null){return b}return ''+(!a.c?-1:bmb(a.c.a,a,0))} +function nZb(a){var b;if(a.f.c.length!=0&&!!JD(amb(a.f,0),70).a){return JD(amb(a.f,0),70).a}b=qWb(a);if(b!=null){return b}return ''+(!a.i?-1:bmb(a.i.j,a,0))} +function hec(a,b){var c,d;if(b<0||b>=a.gc()){return null}for(c=b;c0?a.c:0);e=$wnd.Math.max(e,b.d);++d}a.e=f;a.b=e} +function Zrd(a){var b,c;if(!a.b){a.b=Yu(JD(a.f,125).jh().i);for(c=new fKd(JD(a.f,125).jh());c.e!=c.i.gc();){b=JD(dKd(c),157);Ylb(a.b,new Krd(b))}}return a.b} +function cFd(a,b){var c,d,e;if(b.dc()){return jOd(),jOd(),iOd}else{c=new _Jd(a,b.gc());for(e=new fKd(a);e.e!=e.i.gc();){d=dKd(e);b.Gc(d)&&YEd(c,d)}return c}} +function Jud(a,b,c,d){if(b==0){return d?(!a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0)),a.o):(!a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0)),fMd(a.o))}return Msd(a,b,c,d)} +function yyd(a){var b,c;if(a.rb){for(b=0,c=a.rb.i;b>22);e+=d>>22;if(e<0){return false}a.l=c&dve;a.m=d&dve;a.h=e&eve;return true} +function Xxb(a,b,c,d,e,f,g){var h,i;if(b.Re()&&(i=a.a.Le(c,d),i<0||!e&&i==0)){return false}if(b.Se()&&(h=a.a.Le(c,f),h>0||!g&&h==0)){return false}return true} +function nac(a,b){gac();var c;c=a.j.g-b.j.g;if(c!=0){return 0}switch(a.j.g){case 2:return qac(b,fac)-qac(a,fac);case 4:return qac(a,eac)-qac(b,eac);}return 0} +function Roc(a){switch(a.g){case 0:return Koc;case 1:return Loc;case 2:return Moc;case 3:return Noc;case 4:return Ooc;case 5:return Poc;default:return null;}} +function jyd(a,b,c){var d,e;d=(e=new P3d,WTd(e,b),Wxd(e,c),YEd((!a.c&&(a.c=new A3d(C6,a,12,10)),a.c),e),e);YTd(d,0);_Td(d,1);$Td(d,true);ZTd(d,true);return d} +function VFd(a,b){var c,d;if(b>=a.i)throw Icb(new ALd(b,a.i));++a.j;c=a.g[b];d=a.i-b-1;d>0&&ohb(a.g,b+1,a.g,b,d);VC(a.g,--a.i,null);a.Oi(b,c);a.Li();return c} +function qUd(a,b){var c,d;if(a.Db>>16==17){return a.Cb.Qh(a,21,p6,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?a.fi():c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function pEb(a){var b,c,d,e;Fnb();gmb(a.c,a.a);for(e=new Hmb(a.c);e.ac.a.c.length)){throw Icb(new hfb('index must be >= 0 and <= layer node count'))}!!a.c&&dmb(a.c.a,a);a.c=c;!!c&&Xlb(c.a,b,a)} +function lNc(a,b){this.c=new Yrb;this.a=a;this.b=b;this.d=JD(lNb(a,(Krc(),yrc)),316);XD(lNb(a,($xc(),Gwc)))===XD((Zoc(),Xoc))?(this.e=new XNc):(this.e=new QNc)} +function nod(a,b){var c,d,e,f;f=0;for(d=new Hmb(a);d.a0?b:0);++c}return new Yfd(d,e)} +function y$b(a,b){var c,d;a.b=0;a.d=new Jxb;for(d=new Hmb(b.a);d.a>16==6){return a.Cb.Qh(a,6,N3,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(ysd(),qsd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function jzd(a,b){var c,d;if(a.Db>>16==7){return a.Cb.Qh(a,1,O3,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(ysd(),ssd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function Szd(a,b){var c,d;if(a.Db>>16==9){return a.Cb.Qh(a,9,Q3,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(ysd(),usd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function K_d(a,b){var c,d;if(a.Db>>16==5){return a.Cb.Qh(a,9,u6,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(HRd(),rRd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function xyd(a,b){var c,d;if(a.Db>>16==7){return a.Cb.Qh(a,6,B6,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(HRd(),ARd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function gTd(a,b){var c,d;if(a.Db>>16==3){return a.Cb.Qh(a,0,x6,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(HRd(),kRd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function qwd(a,b){var c,d;if(a.Db>>16==3){return a.Cb.Qh(a,12,Q3,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(ysd(),psd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function kOd(a,b,c){var d,e,f;c<0&&(c=0);f=a.i;for(e=c;ewve){return Mhe(a,d)}if(d==a){return true}}}return false} +function $Kb(a){VKb();switch(a.q.g){case 5:XKb(a,(mmd(),Uld));XKb(a,jmd);break;case 4:YKb(a,(mmd(),Uld));YKb(a,jmd);break;default:ZKb(a,(mmd(),Uld));ZKb(a,jmd);}} +function cLb(a){VKb();switch(a.q.g){case 5:_Kb(a,(mmd(),Tld));_Kb(a,lmd);break;case 4:aLb(a,(mmd(),Tld));aLb(a,lmd);break;default:bLb(a,(mmd(),Tld));bLb(a,lmd);}} +function fNb(a){var b,c;b=JD(lNb(a,(ZOb(),NOb)),15);if(b){c=b.a;c==0?oNb(a,(iPb(),hPb),new Svb):oNb(a,(iPb(),hPb),new Tvb(c))}else{oNb(a,(iPb(),hPb),new Tvb(1))}} +function CXb(a,b){var c;c=a.i;switch(b.g){case 1:return -(a.n.b+a.o.b);case 2:return a.n.a-c.o.a;case 3:return a.n.b-c.o.b;case 4:return -(a.n.a+a.o.a);}return 0} +function d8b(a,b){switch(a.g){case 0:return b==(Qrc(),Mrc)?_7b:a8b;case 1:return b==(Qrc(),Mrc)?_7b:$7b;case 2:return b==(Qrc(),Mrc)?$7b:a8b;default:return $7b;}} +function m7c(a,b){var c,d,e;dmb(a.a,b);a.e-=b.r+(a.a.c.length==0?0:a.c);e=eCe;for(d=new Hmb(a.a);d.a>16==11){return a.Cb.Qh(a,10,Q3,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(ysd(),tsd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function l2d(a,b){var c,d;if(a.Db>>16==10){return a.Cb.Qh(a,11,p6,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(HRd(),yRd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function O3d(a,b){var c,d;if(a.Db>>16==10){return a.Cb.Qh(a,12,A6,b)}return d=X3d(JD(tWd((c=JD(fud(a,16),29),!c?(HRd(),BRd):c),a.Db>>16),19)),a.Cb.Qh(a,d.n,d.f,b)} +function oBd(a,b){var c,d,e,f,g;if(b){e=b.a.length;c=new vse(e);for(g=(c.b-c.a)*c.c<0?(use(),tse):new Rse(c);g.Ob();){f=JD(g.Pb(),15);d=EAd(b,f.a);!!d&&XBd(a,d)}}} +function _8d(){R8d();var a,b;V8d((jRd(),iRd));U8d(iRd);yyd(iRd);b0d=(HRd(),uRd);for(b=new Hmb(P8d);b.a>19;j=b.h>>19;if(i!=j){return j-i}e=a.h;h=b.h;if(e!=h){return e-h}d=a.m;g=b.m;if(d!=g){return d-g}c=a.l;f=b.l;return c-f} +function dkc(a,b,c){var d,e,f,g,h;e=a[c.g];for(h=new Hmb(b.d);h.a0?a.b:0);++c}b.b=d;b.e=e} +function zo(a){var b,c,d;d=a.b;if(Rp(a.i,d.length)){c=d.length*2;a.b=SC(QF,fue,308,c,0,1);a.c=SC(QF,fue,308,c,0,1);a.f=c-1;a.i=0;for(b=a.a;b;b=b.c){vo(a,b,b)}++a.g}} +function LUb(a,b){a.b.a=$wnd.Math.min(a.b.a,b.c);a.b.b=$wnd.Math.min(a.b.b,b.d);a.a.a=$wnd.Math.max(a.a.a,b.c);a.a.b=$wnd.Math.max(a.a.b,b.d);return nDb(a.c,b),true} +function Hmc(a,b,c){var d;d=b.c.i;if(d.k==(UYb(),PYb)){oNb(a,(Krc(),brc),JD(lNb(d,brc),12));oNb(a,crc,JD(lNb(d,crc),12))}else{oNb(a,(Krc(),brc),b.c);oNb(a,crc,c.d)}} +function efd(a,b,c){bfd();var d,e,f,g,h,i;g=b/2;f=c/2;d=$wnd.Math.abs(a.a);e=$wnd.Math.abs(a.b);h=1;i=1;d>g&&(h=g/d);e>f&&(i=f/e);Qfd(a,$wnd.Math.min(h,i));return a} +function Vxd(){xxd();var b,c;try{c=JD(K3d((WQd(),VQd),UFe),2075);if(c){return c}}catch(a){a=Hcb(a);if(RD(a,101)){b=a;WGd((Fbe(),b))}else throw Icb(a)}return new Rxd} +function O8d(){xxd();var b,c;try{c=JD(K3d((WQd(),VQd),uIe),2002);if(c){return c}}catch(a){a=Hcb(a);if(RD(a,101)){b=a;WGd((Fbe(),b))}else throw Icb(a)}return new K8d} +function tle(){Xke();var b,c;try{c=JD(K3d((WQd(),VQd),ZIe),2084);if(c){return c}}catch(a){a=Hcb(a);if(RD(a,101)){b=a;WGd((Fbe(),b))}else throw Icb(a)}return new ple} +function d0d(a,b,c){var d,e;e=a.e;a.e=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new L1d(a,1,4,e,b);!c?(c=d):c.lj(d)}e!=b&&(b?(c=m0d(a,i0d(a,b),c)):(c=m0d(a,a.a,c)));return c} +function vB(){mB.call(this);this.e=-1;this.a=false;this.p=rue;this.k=-1;this.c=-1;this.b=-1;this.g=false;this.f=-1;this.j=-1;this.n=-1;this.i=-1;this.d=-1;this.o=rue} +function xFb(a,b){var c,d,e;d=a.b.d.d;a.a||(d+=a.b.d.a);e=b.b.d.d;b.a||(e+=b.b.d.a);c=Xeb(d,e);if(c==0){if(!a.a&&b.a){return -1}else if(!b.a&&a.a){return 1}}return c} +function wMb(a,b){var c,d,e;d=a.b.b.d;a.a||(d+=a.b.b.a);e=b.b.b.d;b.a||(e+=b.b.b.a);c=Xeb(d,e);if(c==0){if(!a.a&&b.a){return -1}else if(!b.a&&a.a){return 1}}return c} +function qSb(a,b){var c,d,e;d=a.b.g.d;a.a||(d+=a.b.g.a);e=b.b.g.d;b.a||(e+=b.b.g.a);c=Xeb(d,e);if(c==0){if(!a.a&&b.a){return -1}else if(!b.a&&a.a){return 1}}return c} +function AQb(){AQb=ndb;xQb=Vbd(Xbd(Xbd(Xbd(new acd,(TQb(),RQb),(Q5b(),k5b)),RQb,o5b),SQb,v5b),SQb,$4b);zQb=Xbd(Xbd(new acd,RQb,Q4b),RQb,_4b);yQb=Vbd(new acd,SQb,b5b)} +function p0b(a){var b,c,d,e,f;b=JD(lNb(a,(Krc(),Jqc)),92);f=a.n;for(d=b.Bc().Jc();d.Ob();){c=JD(d.Pb(),318);e=c.i;e.c+=f.a;e.d+=f.b;c.c?mIb(c):oIb(c)}oNb(a,Jqc,null)} +function $jc(a,b,c){var d,e;e=a.b;d=e.d;switch(b.g){case 1:return -d.d-c;case 2:return e.o.a+d.c+c;case 3:return e.o.b+d.a+c;case 4:return -d.b-c;default:return -1;}} +function WEc(a,b){var c,d;for(d=new Hmb(b);d.a0){g=(f<e)%a.d.length;e=YLd(a,g,f,b);if(e){h=e.ld(c);return h}}d=a.ak(f,b,c);a.c.Ec(d);return null} +function Rce(a,b){var c,d,e,f;switch(Mce(a,b).Il()){case 3:case 2:{c=kWd(b);for(e=0,f=c.i;e=0;d--){if(sgb(a[d].d,b)||sgb(a[d].d,c)){a.length>=d+1&&a.splice(0,d+1);break}}return a} +function Ncb(a,b){var c;if(Scb(a)&&Scb(b)){c=a/b;if(jve0){a.b+=2;a.a+=d}}else{a.b+=1;a.a+=$wnd.Math.min(d,e)}} +function wAd(a,b){var c,d;d=false;if(VD(b)){d=true;vAd(a,new GC(OD(b)))}if(!d){if(RD(b,242)){d=true;vAd(a,(c=Xdb(JD(b,242)),new _B(c)))}}if(!d){throw Icb(new Hdb(nGe))}} +function eYd(a,b,c,d){var e,f,g;e=new N1d(a.e,1,10,(g=b.c,RD(g,88)?JD(g,29):(HRd(),xRd)),(f=c.c,RD(f,88)?JD(f,29):(HRd(),xRd)),dXd(a,b),false);!d?(d=e):d.lj(e);return d} +function AYb(a){var b,c;switch(JD(lNb(xYb(a),($xc(),mwc)),420).g){case 0:b=a.n;c=a.o;return new Yfd(b.a+c.a/2,b.b+c.b/2);case 1:return new Zfd(a.n);default:return null;}} +function jpc(){jpc=ndb;gpc=new kpc(cye,0);fpc=new kpc('LEFTUP',1);ipc=new kpc('RIGHTUP',2);epc=new kpc('LEFTDOWN',3);hpc=new kpc('RIGHTDOWN',4);dpc=new kpc('BALANCED',5)} +function iGc(a,b,c){var d,e,f;d=Xeb(a.a[b.p],a.a[c.p]);if(d==0){e=JD(lNb(b,(Krc(),Xqc)),16);f=JD(lNb(c,Xqc),16);if(e.Gc(c)){return -1}else if(f.Gc(b)){return 1}}return d} +function G1c(a){switch(a.g){case 1:return new e0c;case 2:return new g0c;case 3:return new c0c;case 0:return null;default:throw Icb(new hfb($Ce+(a.f!=null?a.f:''+a.g)));}} +function pvd(a,b,c){switch(b){case 1:!a.n&&(a.n=new A3d(P3,a,1,7));uJd(a.n);!a.n&&(a.n=new A3d(P3,a,1,7));$Ed(a.n,JD(c,18));return;case 2:svd(a,OD(c));return;}Mud(a,b,c)} +function Gvd(a,b,c){switch(b){case 3:Jvd(a,Reb(MD(c)));return;case 4:Lvd(a,Reb(MD(c)));return;case 5:Mvd(a,Reb(MD(c)));return;case 6:Nvd(a,Reb(MD(c)));return;}pvd(a,b,c)} +function kyd(a,b,c){var d,e,f;f=(d=new P3d,d);e=VTd(f,b,null);!!e&&e.mj();Wxd(f,c);YEd((!a.c&&(a.c=new A3d(C6,a,12,10)),a.c),f);YTd(f,0);_Td(f,1);$Td(f,true);ZTd(f,true)} +function K3d(a,b){var c,d,e;c=Psb(a.i,b);if(RD(c,241)){e=JD(c,241);e.wi()==null&&undefined;return e.ti()}else if(RD(c,493)){d=JD(c,1999);e=d.b;return e}else{return null}} +function $i(a,b,c,d){var e,f;Qb(b);Qb(c);f=JD(zn(a.d,b),15);Ob(!!f,'Row %s not in %s',b,a.e);e=JD(zn(a.b,c),15);Ob(!!e,'Column %s not in %s',c,a.c);return aj(a,f.a,e.a,d)} +function Cy(b){var c,d,e,f,g,h;d=null;for(f=b,g=0,h=f.length;g1||h==-1){f=JD(i,16);e.Wb(Qhe(a,f))}else{e.Wb(Phe(a,JD(i,57)))}}}} +function jdb(b,c,d,e){idb();var f=gdb;$moduleName=c;$moduleBase=d;Gcb=e;function g(){for(var a=0;a0){return false}}return true} +function Ric(a){switch(JD(lNb(a.b,($xc(),Zvc)),381).g){case 1:VBb(WBb(UBb(new gCb(null,new Wvb(a.d,16)),new kjc),new mjc),new ojc);break;case 2:Tic(a);break;case 0:Sic(a);}} +function mSc(a,b,c){var d,e,f;d=c;!d&&(d=new _nd);d.Tg('Layout',a.a.c.length);for(f=new Hmb(a.a);f.amCe){return c}else e>-1.0E-6&&++c}return c} +function XAd(a,b,c){if(RD(b,271)){return KAd(a,JD(b,85),c)}else if(RD(b,276)){return LAd(a,JD(b,276),c)}else{throw Icb(new hfb(qGe+Ee(new tnb(WC(OC(aJ,1),rte,1,5,[b,c])))))}} +function YAd(a,b,c){if(RD(b,271)){return MAd(a,JD(b,85),c)}else if(RD(b,276)){return NAd(a,JD(b,276),c)}else{throw Icb(new hfb(qGe+Ee(new tnb(WC(OC(aJ,1),rte,1,5,[b,c])))))}} +function l0d(a,b){var c;if(b!=a.b){c=null;!!a.b&&(c=Ssd(a.b,a,-4,c));!!b&&(c=Rsd(b,a,-4,c));c=c0d(a,b,c);!!c&&c.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,3,b,b))} +function o0d(a,b){var c;if(b!=a.f){c=null;!!a.f&&(c=Ssd(a.f,a,-1,c));!!b&&(c=Rsd(b,a,-1,c));c=e0d(a,b,c);!!c&&c.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,0,b,b))} +function Jee(a,b,c,d){var e,f,g,h;if(Vsd(a.e)){e=b.Jk();h=b.kd();f=c.kd();g=dee(a,1,e,h,f,e.Hk()?iee(a,e,f,RD(e,103)&&(JD(e,19).Bb&tve)!=0):-1,true);d?d.lj(g):(d=g)}return d} +function _ke(a){var b,c,d;if(a==null)return null;c=JD(a,16);if(c.dc())return '';d=new Xgb;for(b=c.Jc();b.Ob();){Ugb(d,(lke(),OD(b.Pb())));d.a+=' '}return xdb(d,d.a.length-1)} +function dle(a){var b,c,d;if(a==null)return null;c=JD(a,16);if(c.dc())return '';d=new Xgb;for(b=c.Jc();b.Ob();){Ugb(d,(lke(),OD(b.Pb())));d.a+=' '}return xdb(d,d.a.length-1)} +function nEc(a,b){var c,d,e,f,g;for(f=new Hmb(b.a);f.a0&&pgb(b,b.length-1)==33){try{c=lQd(Ggb(b,0,b.length-1));return c.e==null}catch(a){a=Hcb(a);if(!RD(a,32))throw Icb(a)}}return false} +function VVb(a,b,c){var d,e,f;d=xYb(b);e=JXb(d);f=new sZb;qZb(f,b);switch(c.g){case 1:rZb(f,omd(rmd(e)));break;case 2:rZb(f,rmd(e));}oNb(f,($xc(),axc),MD(lNb(a,axc)));return f} +function S6b(a){var b,c;b=JD(Xr(new Yr(Dr(yYb(a.a).a.Jc(),new Dl))),17);c=JD(Xr(new Yr(Dr(BYb(a.a).a.Jc(),new Dl))),17);return Odb(LD(lNb(b,(Krc(),vrc))))||Odb(LD(lNb(c,vrc)))} +function Bhc(){Bhc=ndb;xhc=new Chc('ONE_SIDE',0);zhc=new Chc('TWO_SIDES_CORNER',1);Ahc=new Chc('TWO_SIDES_OPPOSING',2);yhc=new Chc('THREE_SIDES',3);whc=new Chc('FOUR_SIDES',4)} +function knc(a,b){var c,d,e,f;f=new imb;e=0;d=b.Jc();while(d.Ob()){c=zfb(JD(d.Pb(),15).a+e);while(c.a=a.f){break}nDb(f.c,c)}return f} +function BKc(a){var b,c;for(c=new Hmb(a.e.b);c.a0&&Wfc(this,this.c-1,(mmd(),Tld));this.c0&&a[0].length>0&&(this.c=Odb(LD(lNb(xYb(a[0][0]),(Krc(),Yqc)))));this.a=SC(_W,Ote,2079,a.length,0,2);this.b=SC(cX,Ote,2080,a.length,0,2);this.d=new Bs} +function nLc(a){if(a.c.length==0){return false}if((JDb(0,a.c.length),JD(a.c[0],17)).c.i.k==(UYb(),PYb)){return true}return OBb(WBb(new gCb(null,new Wvb(a,16)),new qLc),new sLc)} +function c2c(a,b){var c,d,e,f,g,h,i;h=k_c(b);f=b.f;i=b.g;g=$wnd.Math.sqrt(f*f+i*i);e=0;for(d=new Hmb(h);d.a=0){c=Ncb(a,ive);d=Ucb(a,ive)}else{b=_cb(a,1);c=Ncb(b,500000000);d=Ucb(b,500000000);d=Jcb(Zcb(d,1),Kcb(a,1))}return Ycb(Zcb(d,32),Kcb(c,yve))} +function T4c(a,b,c,d){var e,f,g,h,i;e=null;f=0;for(h=new Hmb(b);h.a1;b>>=1){(b&1)!=0&&(d=bib(d,c));c.d==1?(c=bib(c,c)):(c=new kib($ib(c.a,c.d,SC(cE,Pue,30,c.d<<1,15,1))))}d=bib(d,c);return d} +function Lvb(){Lvb=ndb;var a,b,c,d;Ivb=SC(aE,vve,30,25,15,1);Jvb=SC(aE,vve,30,33,15,1);d=1.52587890625E-5;for(b=32;b>=0;b--){Jvb[b]=d;d*=0.5}c=1;for(a=24;a>=0;a--){Ivb[a]=c;c*=0.5}} +function H$b(a){var b,c;if(Odb(LD(Pud(a,($xc(),jwc))))){for(c=new Yr(Dr(DEd(a).a.Jc(),new Dl));Wr(c);){b=JD(Xr(c),85);if(vwd(b)){if(Odb(LD(Pud(b,kwc)))){return true}}}}return false} +function n9b(a){var b,c,d,e;b=new aub;c=new aub;for(e=Wtb(a,0);e.b!=e.d.c;){d=JD(iub(e),12);d.e.c.length==0?(Ttb(c,d,c.c.b,c.c),true):(Ttb(b,d,b.c.b,b.c),true)}$u(b).Fc(c);return b} +function Pgc(a,b){var c,d,e;if(bsb(a.f,b)){b.b=a;d=b.c;bmb(a.j,d,0)!=-1||Ylb(a.j,d);e=b.d;bmb(a.j,e,0)!=-1||Ylb(a.j,e);c=b.a.b;if(c.c.length!=0){!a.i&&(a.i=new $gc(a));Vgc(a.i,c)}}} +function _jc(a){var b,c,d,e,f;c=a.c.d;d=c.j;e=a.d.d;f=e.j;if(d==f){return c.p=0&&sgb(a.substr(b,'GMT'.length),'GMT')){c[0]=b+3;return BA(a,c,d)}if(b>=0&&sgb(a.substr(b,'UTC'.length),'UTC')){c[0]=b+3;return BA(a,c,d)}return BA(a,c,d)} +function Ygc(a,b){var c,d,e,f,g;f=a.g.a;g=a.g.b;for(d=new Hmb(a.d);d.ac;f--){a[f]|=b[f-c-1]>>>g;a[f-1]=b[f-c-1]<0&&ohb(a.g,b,a.g,b+d,h);g=c.Jc();a.i+=d;for(e=0;e>4&15;f=a[d]&15;g[e++]=vxd[c];g[e++]=vxd[f]}return Pgb(g,0,g.length)}} +function Mgb(a){var b,c;if(a>=tve){b=uve+(a-tve>>10&1023)&Bue;c=56320+(a-tve&1023)&Bue;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&Bue)}} +function uKb(a,b){rKb();var c,d,e,f;e=JD(JD(Qc(a.r,b),22),83);if(e.gc()>=2){d=JD(e.Jc().Pb(),115);c=a.u.Gc((Lld(),Gld));f=a.u.Gc(Kld);return !d.a&&!c&&(e.gc()==2||f)}else{return false}} +function R_c(a,b,c,d,e){var f,g,h;f=S_c(a,b,c,d,e);h=false;while(!f){J_c(a,e,true);h=true;f=S_c(a,b,c,d,e)}h&&J_c(a,e,false);g=h_c(e);if(g.c.length!=0){!!a.d&&a.d.Fg(g);R_c(a,e,c,d,g)}} +function W2c(){W2c=ndb;V2c=new X2c('NODE_SIZE_REORDERER',0);S2c=new X2c('INTERACTIVE_NODE_REORDERER',1);U2c=new X2c('MIN_SIZE_PRE_PROCESSOR',2);T2c=new X2c('MIN_SIZE_POST_PROCESSOR',3)} +function ekd(){ekd=ndb;ckd=new fkd(cye,0);akd=new fkd('DIRECTED',1);dkd=new fkd('UNDIRECTED',2);$jd=new fkd('ASSOCIATION',3);bkd=new fkd('GENERALIZATION',4);_jd=new fkd('DEPENDENCY',5)} +function Apd(a,b){var c;if(!Tzd(a)){throw Icb(new kfb(mFe))}c=Tzd(a);switch(b.g){case 1:return -(a.j+a.f);case 2:return a.i-c.g;case 3:return a.j-c.f;case 4:return -(a.i+a.g);}return 0} +function Hee(a,b,c){var d,e,f;d=b.Jk();f=b.kd();e=d.Hk()?dee(a,4,d,f,null,iee(a,d,f,RD(d,103)&&(JD(d,19).Bb&tve)!=0),true):dee(a,d.rk()?2:1,d,f,d.gk(),-1,true);c?c.lj(e):(c=e);return c} +function pvb(a,b){var c,d;KDb(b);d=a.b.c.length;Ylb(a.b,b);while(d>0){c=d;d=(d-1)/2|0;if(a.a.Le(amb(a.b,d),b)<=0){fmb(a.b,c,b);return true}fmb(a.b,c,amb(a.b,d))}fmb(a.b,d,b);return true} +function UHb(a,b,c,d){var e,f;e=0;if(!c){for(f=0;f=h} +function g5c(a){switch(a.g){case 0:return new W4c;case 1:return new a5c;default:throw Icb(new hfb('No implementation is available for the width approximator '+(a.f!=null?a.f:''+a.g)));}} +function yAd(a,b,c,d){var e;e=false;if(VD(d)){e=true;zAd(b,c,OD(d))}if(!e){if(SD(d)){e=true;yAd(a,b,c,d)}}if(!e){if(RD(d,242)){e=true;xAd(b,c,JD(d,242))}}if(!e){throw Icb(new Hdb(nGe))}} +function sce(a,b){var c,d,e;c=b.ni(a.a);if(c){e=aMd((!c.b&&(c.b=new QTd((HRd(),DRd),K7,c)),c.b),lIe);if(e!=null){for(d=1;d<(jie(),fie).length;++d){if(sgb(fie[d],e)){return d}}}}return 0} +function tce(a,b){var c,d,e;c=b.ni(a.a);if(c){e=aMd((!c.b&&(c.b=new QTd((HRd(),DRd),K7,c)),c.b),lIe);if(e!=null){for(d=1;d<(jie(),gie).length;++d){if(sgb(gie[d],e)){return d}}}}return 0} +function Te(a,b){var c,d,e,f;KDb(b);f=a.a.gc();if(f0?1:0;while(f.a[e]!=c){f=f.a[e];e=a.a.Le(c.d,f.d)>0?1:0}f.a[e]=d;d.b=c.b;d.a[0]=c.a[0];d.a[1]=c.a[1];c.a[0]=null;c.a[1]=null} +function aGb(a){var b,c,d,e;b=new imb;c=SC(Fcb,zwe,30,a.a.c.length,16,1);Zmb(c,c.length);for(e=new Hmb(a.a);e.a0&&u3b((JDb(0,c.c.length),JD(c.c[0],25)),a);c.c.length>1&&u3b(JD(amb(c,c.c.length-1),25),a);b.Ug()} +function Old(a){Lld();var b,c;b=Drb(Hld,WC(OC(I2,1),kue,280,0,[Jld]));if(_x(Px(b,a))>1){return false}c=Drb(Gld,WC(OC(I2,1),kue,280,0,[Fld,Kld]));if(_x(Px(c,a))>1){return false}return true} +function Myd(a,b){var c;c=cjb((WQd(),VQd),a);RD(c,493)?fjb(VQd,a,new z3d(this,b)):fjb(VQd,a,this);Iyd(this,b);if(b==(hRd(),gRd)){this.wb=JD(this,2000);JD(b,2002)}else{this.wb=(jRd(),iRd)}} +function J8d(b){var c,d,e;if(b==null){return null}c=null;for(d=0;df} +function $_c(a,b){var c,d,e;if(L_c(a,b)){return true}for(d=new Hmb(b);d.a=e||b<0)throw Icb(new Cdb(GGe+b+HGe+e));if(c>=e||c<0)throw Icb(new Cdb(IGe+c+HGe+e));b!=c?(d=(f=a.Aj(c),a.oj(b,f),f)):(d=a.vj(c));return d} +function Jhe(a){var b,c,d;d=a;if(a){b=0;for(c=a.Bh();c;c=c.Bh()){if(++b>wve){return Jhe(c)}d=c;if(c==a){throw Icb(new kfb('There is a cycle in the containment hierarchy of '+a))}}}return d} +function Ee(a){var b,c,d;d=new Nxb(pte,'[',']');for(c=a.Jc();c.Ob();){b=c.Pb();Kxb(d,XD(b)===XD(a)?'(this Collection)':b==null?vte:qdb(b))}return !d.a?d.c:d.e.length==0?d.a.a:d.a.a+(''+d.e)} +function L_c(a,b){var c,d;d=false;if(b.gc()<2){return false}for(c=0;c1&&(a.j.b+=a.e)}else{a.j.a+=c.a;a.j.b=$wnd.Math.max(a.j.b,c.b);a.d.c.length>1&&(a.j.a+=a.e)}} +function Mhc(){Mhc=ndb;Jhc=WC(OC(J2,1),eye,64,0,[(mmd(),Uld),Tld,jmd]);Ihc=WC(OC(J2,1),eye,64,0,[Tld,jmd,lmd]);Khc=WC(OC(J2,1),eye,64,0,[jmd,lmd,Uld]);Lhc=WC(OC(J2,1),eye,64,0,[lmd,Uld,Tld])} +function iIc(a){var b,c,d,e,f,g,h,i,j;this.a=fIc(a);this.b=new imb;for(c=a,d=0,e=c.length;d_fc(a.d).c){a.i+=a.g.c;bgc(a.d)}else if(_fc(a.d).c>_fc(a.g).c){a.e+=a.d.c;bgc(a.g)}else{a.i+=$fc(a.g);a.e+=$fc(a.d);bgc(a.g);bgc(a.d)}}} +function RPc(a,b,c){var d,e,f,g;f=b.q;g=b.r;new xPc((BPc(),zPc),b,f,1);new xPc(zPc,f,g,1);for(e=new Hmb(c);e.ah&&(i=h/d);e>f&&(j=f/e);g=$wnd.Math.min(i,j);a.a+=g*(b.a-a.a);a.b+=g*(b.b-a.b)} +function o5c(a,b,c,d,e){var f,g;g=false;f=JD(amb(c.b,0),26);while(B5c(a,b,f,d,e)){g=true;A6c(c,f);if(c.b.c.length==0){break}f=JD(amb(c.b,0),26)}c.b.c.length==0&&m7c(c.j,c);g&&P6c(b.q);return g} +function Kud(a,b,c,d){var e,f;if(c==0){return !a.o&&(a.o=new BTd((ysd(),vsd),c4,a,0)),zTd(a.o,b,d)}return f=JD(tWd((e=JD(fud(a,16),29),!e?a.fi():e),c),69),f.uk().yk(a,dud(a),c-yWd(a.fi()),b,d)} +function Iyd(a,b){var c;if(b!=a.sb){c=null;!!a.sb&&(c=JD(a.sb,52).Qh(a,1,v6,c));!!b&&(c=JD(b,52).Oh(a,1,v6,c));c=oyd(a,b,c);!!c&&c.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,4,b,b))} +function pBd(a,b){var c,d,e,f;if(b){e=CAd(b,'x');c=new KCd(a);Owd(c.a,(KDb(e),e));f=CAd(b,'y');d=new MCd(a);Pwd(d.a,(KDb(f),f))}else{throw Icb(new JAd('All edge sections need an end point.'))}} +function nBd(a,b){var c,d,e,f;if(b){e=CAd(b,'x');c=new ECd(a);Vwd(c.a,(KDb(e),e));f=CAd(b,'y');d=new GCd(a);Wwd(d.a,(KDb(f),f))}else{throw Icb(new JAd('All edge sections need a start point.'))}} +function mAb(a,b){var c,d,e,f,g,h,i;for(d=pAb(a),f=0,h=d.length;f>22-b;e=a.h<>22-b}else if(b<44){c=0;d=a.l<>44-b}else{c=0;d=0;e=a.l<=hue?'error':d>=900?'warn':d>=800?'info':'log');uDb(c,a.a);!!a.b&&vDb(b,c,a.b,'Exception: ',true)} +function oRb(a,b){var c,d,e,f,g;e=b==1?lRb:kRb;for(d=e.a.ec().Jc();d.Ob();){c=JD(d.Pb(),86);for(g=JD(Qc(a.f.c,c),22).Jc();g.Ob();){f=JD(g.Pb(),49);Ylb(a.b.b,JD(f.b,82));Ylb(a.b.a,JD(f.b,82).d)}}} +function Yjc(a,b,c,d){var e,f,g,h,i;i=a.b;f=b.d;g=f.j;h=ckc(g,i.d[g.g],c);e=Gfd(Ifd(f.n),f.a);switch(f.j.g){case 3:case 1:h.a+=e.a;break;case 2:h.b+=e.b;break;case 4:h.b+=e.b;}Ttb(d,h,d.c.b,d.c)} +function vkc(a,b){var c,d,e,f;f=b.b.j;a.a=SC(cE,Pue,30,f.c.length,15,1);e=0;for(d=0;da){throw Icb(new hfb('k must be smaller than n'))}else return b==0||b==a?1:a==0?0:ifd(a)/(ifd(b)*ifd(a-b))} +function zpd(a,b){var c,d,e,f;c=new BGd(a);while(c.g==null&&!c.c?uGd(c):c.g==null||c.i!=0&&JD(c.g[c.i-1],50).Ob()){f=JD(vGd(c),57);if(RD(f,174)){d=JD(f,174);for(e=0;e>4];b[c*2+1]=Doe[f&15]}return Pgb(b,0,b.length)} +function nn(a){var b,c,d;d=a.c.length;switch(d){case 0:return Hx(),Gx;case 1:b=JD(zr(new Hmb(a)),45);return rn(b.jd(),b.kd());default:c=JD(hmb(a,SC(LK,$te,45,a.c.length,0,1)),175);return new Ix(c);}} +function FYb(a,b){switch(b.g){case 1:return Zq(a.j,(kZb(),gZb));case 2:return Zq(a.j,(kZb(),eZb));case 3:return Zq(a.j,(kZb(),iZb));case 4:return Zq(a.j,(kZb(),jZb));default:return Fnb(),Fnb(),Cnb;}} +function Yfc(a,b){var c,d,e;c=Zfc(b,a.e);d=JD(bjb(a.g.f,c),15).a;e=a.a.c.length-1;if(a.a.c.length!=0&&JD(amb(a.a,e),295).c==d){++JD(amb(a.a,e),295).a;++JD(amb(a.a,e),295).b}else{Ylb(a.a,new ggc(d))}} +function u1c(){u1c=ndb;l1c=(gjd(),zid);s1c=Qid;e1c=Vhd;f1c=Yhd;g1c=$hd;d1c=Thd;h1c=bid;k1c=uid;b1c=(Z0c(),K0c);c1c=L0c;n1c=R0c;q1c=U0c;o1c=S0c;p1c=T0c;i1c=N0c;j1c=P0c;m1c=Q0c;r1c=V0c;t1c=X0c;a1c=J0c} +function w6c(a,b){var c,d,e,f,g;if(a.e<=b){return a.g}if(y6c(a,a.g,b)){return a.g}f=a.r;d=a.g;g=a.r;e=(f-d)/2+d;while(d+11&&(a.e.b+=a.a)}else{a.e.a+=c.a;a.e.b=$wnd.Math.max(a.e.b,c.b);a.d.c.length>1&&(a.e.a+=a.a)}} +function Ljc(a){var b,c,d,e;e=a.i;b=e.b;d=e.j;c=e.g;switch(e.a.g){case 0:c.a=(a.g.b.o.a-d.a)/2;break;case 1:c.a=b.d.n.a+b.d.a.a;break;case 2:c.a=b.d.n.a+b.d.a.a-d.a;break;case 3:c.b=b.d.n.b+b.d.a.b;}} +function KKc(a,b,c){var d,e,f;for(e=new Yr(Dr(vYb(c).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),17);if(!(!vWb(d)&&!(!vWb(d)&&d.c.i.c==d.d.i.c))){continue}f=CKc(a,d,c,new pLc);f.c.length>1&&(nDb(b.c,f),true)}} +function Hfd(a,b,c,d,e){if(dd&&(a.a=d);a.be&&(a.b=e);return a} +function PDd(a){if(RD(a,144)){return IDd(JD(a,144))}else if(RD(a,233)){return JDd(JD(a,233))}else if(RD(a,21)){return KDd(JD(a,21))}else{throw Icb(new hfb(qGe+Ee(new tnb(WC(OC(aJ,1),rte,1,5,[a])))))}} +function Bib(a,b,c,d,e){var f,g,h;f=true;for(g=0;g>>e|c[g+d+1]<>>e;++g}return f} +function tNc(a,b,c,d){var e,f,g;if(b.k==(UYb(),PYb)){for(f=new Yr(Dr(yYb(b).a.Jc(),new Dl));Wr(f);){e=JD(Xr(f),17);g=e.c.i.k;if(g==PYb&&a.c.a[e.c.i.c.p]==d&&a.c.a[b.c.p]==c){return true}}}return false} +function uD(a,b){var c,d,e,f;b&=63;c=a.h&eve;if(b<22){f=c>>>b;e=a.m>>b|c<<22-b;d=a.l>>b|a.m<<22-b}else if(b<44){f=0;e=c>>>b-22;d=a.m>>b-22|a.h<<44-b}else{f=0;e=0;d=c>>>b-44}return _C(d&dve,e&dve,f&eve)} +function lgc(a,b,c,d){var e;this.b=d;this.e=a==(XGc(),VGc);e=b[c];this.d=QC(Fcb,[Ote,zwe],[171,30],16,[e.length,e.length],2);this.a=QC(cE,[Ote,Pue],[54,30],15,[e.length,e.length],2);this.c=new Xfc(b,c)} +function Qgc(a){var b,c,d;a.k=new Qi((mmd(),WC(OC(J2,1),eye,64,0,[kmd,Uld,Tld,jmd,lmd])).length,a.j.c.length);for(d=new Hmb(a.j);d.a=c){I6b(a,b,d.p);return true}}return false} +function wA(a,b,c,d){var e,f,g,h,i,j;g=c.length;f=0;e=-1;j=Igb((RDb(b,a.length+1),a.substr(b)),(Bub(),zub));for(h=0;hf&&Dgb(j,Igb(c[h],zub))){e=h;f=i}}e>=0&&(d[0]=b+f);return e} +function Mgc(a,b,c){var d,e,f,g,h,i,j,k;f=a.d.p;h=f.e;i=f.r;a.g=new ZIc(i);g=a.d.o.c.p;d=g>0?h[g-1]:SC(RP,nye,9,0,0,1);e=h[g];j=gc){return Jb(a,c,'start index')}if(b<0||b>c){return Jb(b,c,'end index')}return hc('end index (%s) must not be less than start index (%s)',WC(OC(aJ,1),rte,1,5,[zfb(b),zfb(a)]))} +function Xz(b,c){var d,e,f,g;for(e=0,f=b.length;e0&&XBc(a,f,c))}}b.p=0} +function Wb(a){var b,c,d,e;b=$gb(ehb(new khb('Predicates.'),'and'),40);c=true;for(e=new Kjb(a);e.b=0?a.hi(e):atd(a,d)}else{throw Icb(new hfb(EFe+d.ve()+FFe))}}else{Lsd(a,c,d)}} +function HAd(a){var b,c;c=null;b=false;if(RD(a,210)){b=true;c=JD(a,210).a}if(!b){if(RD(a,265)){b=true;c=''+JD(a,265).a}}if(!b){if(RD(a,479)){b=true;c=''+JD(a,479).a}}if(!b){throw Icb(new Hdb(nGe))}return c} +function eee(a,b,c){var d,e,f,g,h,i;i=nie(a.e.Ah(),b);d=0;h=a.i;e=JD(a.g,122);for(g=0;g=a.d.b.c.length){b=new s$b(a.d);b.p=d.p-1;Ylb(a.d.b,b);c=new s$b(a.d);c.p=d.p;Ylb(a.d.b,c)}HYb(d,JD(amb(a.d.b,d.p),25))}} +function NKc(a){var b,c,d,e;c=new aub;xe(c,a.o);d=new Jxb;while(c.b!=0){b=JD(c.b==0?null:(IDb(c.b!=0),$tb(c,c.a.a)),500);e=EKc(a,b,true);e&&Ylb(d.a,b)}while(d.a.c.length!=0){b=JD(Hxb(d),500);EKc(a,b,false)}} +function ied(a){var b;this.c=new aub;this.f=a.e;this.e=a.d;this.i=a.g;this.d=a.c;this.b=a.b;this.k=a.j;this.a=a.a;!a.i?(this.j=(b=JD(teb(g2),10),new Krb(b,JD(kDb(b,b.length),10),0))):(this.j=a.i);this.g=a.f} +function Ued(){Ued=ndb;Ted=new Ved(Kwe,0);Med=new Ved('BOOLEAN',1);Qed=new Ved('INT',2);Sed=new Ved('STRING',3);Ned=new Ved('DOUBLE',4);Oed=new Ved('ENUM',5);Ped=new Ved('ENUMSET',6);Red=new Ved('OBJECT',7)} +function yfd(a,b){var c,d,e,f,g;d=$wnd.Math.min(a.c,b.c);f=$wnd.Math.min(a.d,b.d);e=$wnd.Math.max(a.c+a.b,b.c+b.b);g=$wnd.Math.max(a.d+a.a,b.d+b.a);if(e=(e/2|0)){this.e=!d?null:d.c;this.d=e;while(c++0){Cu(this)}}this.b=b;this.a=null} +function yFb(a,b){var c,d;b.a?zFb(a,b):(c=JD(zzb(a.b,b.b),60),!!c&&c==a.a[b.b.f]&&!!c.a&&c.a!=b.b.a&&c.c.Ec(b.b),d=JD(yzb(a.b,b.b),60),!!d&&a.a[d.f]==b.b&&!!d.a&&d.a!=b.b.a&&b.b.c.Ec(d),Azb(a.b,b.b),undefined)} +function YJb(a,b){var c,d;c=JD($qb(a.b,b),127);if(JD(JD(Qc(a.r,b),22),83).dc()){c.n.b=0;c.n.c=0;return}c.n.b=a.C.b;c.n.c=a.C.c;a.A.Gc((Vmd(),Umd))&&bKb(a,b);d=aKb(a,b);bJb(a,b)==(lld(),ild)&&(d+=2*a.w);c.a.a=d} +function fLb(a,b){var c,d;c=JD($qb(a.b,b),127);if(JD(JD(Qc(a.r,b),22),83).dc()){c.n.d=0;c.n.a=0;return}c.n.d=a.C.d;c.n.a=a.C.a;a.A.Gc((Vmd(),Umd))&&jLb(a,b);d=iLb(a,b);bJb(a,b)==(lld(),ild)&&(d+=2*a.w);c.a.b=d} +function uMb(a,b){var c,d,e,f;f=new imb;for(d=new Hmb(b);d.ad&&(RDb(b-1,a.length),a.charCodeAt(b-1)<=32)){--b}return d>0||bc.a&&(d.Gc((_gd(),Vgd))?(e=(b.a-c.a)/2):d.Gc(Xgd)&&(e=b.a-c.a));b.b>c.b&&(d.Gc((_gd(),Zgd))?(f=(b.b-c.b)/2):d.Gc(Ygd)&&(f=b.b-c.b));Vpd(a,e,f)} +function Hyd(a,b,c,d,e,f,g,h,i,j,k,l,m){RD(a.Cb,88)&&tYd(wWd(JD(a.Cb,88)),4);Wxd(a,c);a.f=g;BUd(a,h);DUd(a,i);vUd(a,j);CUd(a,k);$Td(a,l);yUd(a,m);ZTd(a,true);YTd(a,e);a.Xk(f);WTd(a,b);d!=null&&(a.i=null,xUd(a,d))} +function Jb(a,b,c){if(a<0){return hc(qte,WC(OC(aJ,1),rte,1,5,[c,zfb(a)]))}else if(b<0){throw Icb(new hfb(ste+b))}else{return hc('%s (%s) must not be greater than size (%s)',WC(OC(aJ,1),rte,1,5,[c,zfb(a),zfb(b)]))}} +function cnb(a,b,c,d,e,f){var g,h,i,j;g=d-c;if(g<7){_mb(b,c,d,f);return}i=c+e;h=d+e;j=i+(h-i>>1);cnb(b,a,i,j,-e,f);cnb(b,a,j,h,-e,f);if(f.Le(a[j-1],a[j])<=0){while(c=0?a.$h(f,c):_sd(a,e,c)}else{throw Icb(new hfb(EFe+e.ve()+FFe))}}else{Ksd(a,d,e,c)}} +function l1d(a){var b,c;if(a.f){while(a.n>0){b=JD(a.k.Xb(a.n-1),75);c=b.Jk();if(RD(c,103)&&(JD(c,19).Bb&KFe)!=0&&(!a.e||c.nk()!=J3||c.Jj()!=0)&&b.kd()!=null){return true}else{--a.n}}return false}else{return a.n>0}} +function Nhe(b){var c,d,e,f;d=JD(b,52).Yh();if(d){try{e=null;c=L3d((WQd(),VQd),hQd(iQd(d)));if(c){f=c.Zh();!!f&&(e=f.Dl(Jgb(d.e)))}if(!!e&&e!=b){return Nhe(e)}}catch(a){a=Hcb(a);if(!RD(a,63))throw Icb(a)}}return b} +function j0c(a,b,c){var d,e,f;c.Tg('Remove overlaps',1);c.bh(b,TCe);d=JD(Pud(b,(Q$c(),P$c)),26);a.f=d;a.a=Q1c(JD(Pud(b,(u1c(),r1c)),303));e=MD(Pud(b,(gjd(),Qid)));O_c(a,(KDb(e),e));f=k_c(d);i0c(a,b,f,c);c.bh(b,UCe)} +function jbd(a){var b,c,d;if(Odb(LD(Pud(a,(gjd(),Fhd))))){d=new imb;for(c=new Yr(Dr(DEd(a).a.Jc(),new Dl));Wr(c);){b=JD(Xr(c),85);vwd(b)&&Odb(LD(Pud(b,Ghd)))&&(nDb(d.c,b),true)}return d}else{return Fnb(),Fnb(),Cnb}} +function CC(a){if(!a){return WB(),VB}var b=a.valueOf?a.valueOf():a;if(b!==a){var c=yC[typeof b];return c?c(b):FC(typeof b)}else if(a instanceof Array||a instanceof $wnd.Array){return new FB(a)}else{return new nC(a)}} +function iKb(a,b,c){var d,e,f;f=a.o;d=JD($qb(a.p,c),253);e=d.i;e.b=zIb(d);e.a=yIb(d);e.b=$wnd.Math.max(e.b,f.a);e.b>f.a&&!b&&(e.b=f.a);e.c=-(e.b-f.a)/2;switch(c.g){case 1:e.d=-e.a;break;case 3:e.d=f.b;}AIb(d);BIb(d)} +function jKb(a,b,c){var d,e,f;f=a.o;d=JD($qb(a.p,c),253);e=d.i;e.b=zIb(d);e.a=yIb(d);e.a=$wnd.Math.max(e.a,f.b);e.a>f.b&&!b&&(e.a=f.b);e.d=-(e.a-f.b)/2;switch(c.g){case 4:e.c=-e.b;break;case 2:e.c=f.a;}AIb(d);BIb(d)} +function ycc(a,b){var c,d,e;if(RD(b.g,9)&&JD(b.g,9).k==(UYb(),NYb)){return ove}e=Pdc(b);if(e){return $wnd.Math.max(0,a.b/2-0.5)}c=Odc(b);if(c){d=Reb(MD(JAc(c,($xc(),Dxc))));return $wnd.Math.max(0,d/2-0.5)}return ove} +function Acc(a,b){var c,d,e;if(RD(b.g,9)&&JD(b.g,9).k==(UYb(),NYb)){return ove}e=Pdc(b);if(e){return $wnd.Math.max(0,a.b/2-0.5)}c=Odc(b);if(c){d=Reb(MD(JAc(c,($xc(),Dxc))));return $wnd.Math.max(0,d/2-0.5)}return ove} +function cec(a,b){var c,d,e,f,g;if(b.dc()){return}e=JD(b.Xb(0),132);if(b.gc()==1){bec(a,e,e,1,0,b);return}c=1;while(c0){try{f=Vdb(c,rue,lte)}catch(a){a=Hcb(a);if(RD(a,131)){e=a;throw Icb(new PQd(e))}else throw Icb(a)}}d=(!b.a&&(b.a=new Xbe(b)),b.a);return f=0?JD(SFd(d,f),57):null} +function Ib(a,b){if(a<0){return hc(qte,WC(OC(aJ,1),rte,1,5,['index',zfb(a)]))}else if(b<0){throw Icb(new hfb(ste+b))}else{return hc('%s (%s) must be less than size (%s)',WC(OC(aJ,1),rte,1,5,['index',zfb(a),zfb(b)]))}} +function jnb(a){var b,c,d,e,f;if(a==null){return vte}f=new Nxb(pte,'[',']');for(c=a,d=0,e=c.length;d=0?a.Ih(c,true,true):Zsd(a,e,true),163));JD(d,219).Xl(b)}else{throw Icb(new hfb(EFe+b.ve()+FFe))}} +function Jhb(a){var b,c;if(a>-140737488355328&&a<140737488355328){if(a==0){return 0}b=a<0;b&&(a=-a);c=YD($wnd.Math.floor($wnd.Math.log(a)/0.6931471805599453));(!b||a!=$wnd.Math.pow(2,c))&&++c;return c}return Khb(Pcb(a))} +function KPc(a){var b,c,d,e,f,g,h;f=new Mtb;for(c=new Hmb(a);c.a2&&h.e.b+h.j.b<=2){e=h;d=g}f.a.yc(e,f);e.q=d}return f} +function X1c(a,b,c){c.Tg('Eades radial',1);c.bh(b,UCe);a.d=JD(Pud(b,(Q$c(),P$c)),26);a.c=Reb(MD(Pud(b,(u1c(),m1c))));a.e=Q1c(JD(Pud(b,r1c),303));a.a=t0c(JD(Pud(b,t1c),426));a.b=G1c(JD(Pud(b,i1c),354));Y1c(a);c.bh(b,UCe)} +function _4c(a,b){b.Tg('Target Width Setter',1);if(Qud(a,(D4c(),C4c))){Rud(a,(A3c(),z3c),MD(Pud(a,C4c)))}else{throw Icb(new pbd('A target width has to be set if the TargetWidthWidthApproximator should be used.'))}b.Ug()} +function H2b(a,b){var c,d,e;d=new KYb(a);jNb(d,b);oNb(d,(Krc(),Nqc),b);oNb(d,($xc(),bxc),(xld(),sld));oNb(d,fvc,(wgd(),sgd));IYb(d,(UYb(),NYb));c=new sZb;qZb(c,d);rZb(c,(mmd(),lmd));e=new sZb;qZb(e,d);rZb(e,Tld);return d} +function YDc(a,b){var c,d,e,f,g;a.c[b.p]=true;Ylb(a.a,b);for(g=new Hmb(b.j);g.a=f){g.$b()}else{e=g.Jc();for(d=0;d0?Fh():g<0&&Jw(a,b,-g);return true}else{return false}} +function yIb(a){var b,c,d,e,f,g,h;h=0;if(a.b==0){g=CIb(a,true);b=0;for(d=g,e=0,f=d.length;e0){h+=c;++b}}b>1&&(h+=a.c*(b-1))}else{h=Zub(gBb(XBb(SBb(gnb(a.a),new QIb),new SIb)))}return h>0?h+a.n.d+a.n.a:0} +function zIb(a){var b,c,d,e,f,g,h;h=0;if(a.b==0){h=Zub(gBb(XBb(SBb(gnb(a.a),new MIb),new OIb)))}else{g=DIb(a,true);b=0;for(d=g,e=0,f=d.length;e0){h+=c;++b}}b>1&&(h+=a.c*(b-1))}return h>0?h+a.n.b+a.n.c:0} +function oLc(a){var b,c;if(a.c.length!=2){throw Icb(new kfb('Order only allowed for two paths.'))}b=(JDb(0,a.c.length),JD(a.c[0],17));c=(JDb(1,a.c.length),JD(a.c[1],17));if(b.d.i!=c.c.i){a.c.length=0;nDb(a.c,c);nDb(a.c,b)}} +function u5c(a,b,c){var d;Ivd(c,b.g,b.f);Kvd(c,b.i,b.j);for(d=0;d<(!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a).i;d++){u5c(a,JD(SFd((!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a),d),26),JD(SFd((!c.a&&(c.a=new A3d(Q3,c,10,11)),c.a),d),26))}} +function dKb(a,b){var c,d,e,f;f=JD($qb(a.b,b),127);c=f.a;for(e=JD(JD(Qc(a.r,b),22),83).Jc();e.Ob();){d=JD(e.Pb(),115);!!d.c&&(c.a=$wnd.Math.max(c.a,qIb(d.c)))}if(c.a>0){switch(b.g){case 2:f.n.c=a.s;break;case 4:f.n.b=a.s;}}} +function UMb(a,b){var c,d,e;c=JD(lNb(b,(ZOb(),MOb)),15).a-JD(lNb(a,MOb),15).a;if(c==0){d=Vfd(Ifd(JD(lNb(a,(iPb(),ePb)),8)),JD(lNb(a,fPb),8));e=Vfd(Ifd(JD(lNb(b,ePb),8)),JD(lNb(b,fPb),8));return Xeb(d.a*d.b,e.a*e.b)}return c} +function dSc(a,b){var c,d,e;c=JD(lNb(b,(DXc(),rXc)),15).a-JD(lNb(a,rXc),15).a;if(c==0){d=Vfd(Ifd(JD(lNb(a,(MWc(),lWc)),8)),JD(lNb(a,mWc),8));e=Vfd(Ifd(JD(lNb(b,lWc),8)),JD(lNb(b,mWc),8));return Xeb(d.a*d.b,e.a*e.b)}return c} +function AWb(a){var b,c;c=new ihb;c.a+='e_';b=rWb(a);b!=null&&(c.a+=''+b,c);if(!!a.c&&!!a.d){ehb((c.a+=' ',c),nZb(a.c));ehb(dhb((c.a+='[',c),a.c.i),']');ehb((c.a+=jye,c),nZb(a.d));ehb(dhb((c.a+='[',c),a.d.i),']')}return c.a} +function tSc(a){switch(a.g){case 0:return new hYc;case 1:return new pYc;case 2:return new TYc;case 3:return new dZc;default:throw Icb(new hfb('No implementation is available for the layout phase '+(a.f!=null?a.f:''+a.g)));}} +function Dpd(a,b,c,d,e){var f;f=0;switch(e.g){case 1:f=$wnd.Math.max(0,b.b+a.b-(c.b+d));break;case 3:f=$wnd.Math.max(0,-a.b-d);break;case 2:f=$wnd.Math.max(0,-a.a-d);break;case 4:f=$wnd.Math.max(0,b.a+a.a-(c.a+d));}return f} +function dBd(a,b,c){var d,e,f,g,h;if(c){e=c.a.length;d=new vse(e);for(h=(d.b-d.a)*d.c<0?(use(),tse):new Rse(d);h.Ob();){g=JD(h.Pb(),15);f=EAd(c,g.a);eGe in f.a||fGe in f.a?VBd(a,f,b):_Bd(a,f,b);QEd(JD(bjb(a.c,BAd(f)),85))}}} +function hVd(a){var b,c;switch(a.b){case -1:{return true}case 0:{c=a.t;if(c>1||c==-1){a.b=-1;return true}else{b=UTd(a);if(!!b&&(lie(),b.jk()==XHe)){a.b=-1;return true}else{a.b=1;return false}}}default:case 1:{return false}}} +function Qoe(a,b){var c,d,e,f;Koe(a);if(a.c!=0||a.a!=123)throw Icb(new Joe(VGd((Fbe(),$Ge))));f=b==112;d=a.d;c=wgb(a.i,125,d);if(c<0)throw Icb(new Joe(VGd((Fbe(),_Ge))));e=Ggb(a.i,d,c);a.d=c+1;return gre(e,f,(a.e&512)==512)} +function KDc(a){var b,c,d,e,f,g,h;h=Xu(a.c.length);for(e=new Hmb(a);e.a=0&&f=0?a.Ih(c,true,true):Zsd(a,e,true),163));return JD(d,219).Ul(b)}else{throw Icb(new hfb(EFe+b.ve()+HFe))}} +function Z8d(){R8d();var a;if(Q8d)return JD(L3d((WQd(),VQd),uIe),2000);PPd(LK,new fbe);$8d();a=JD(RD(cjb((WQd(),VQd),uIe),548)?cjb(VQd,uIe):new Y8d,548);Q8d=true;W8d(a);X8d(a);ejb((fRd(),eRd),a,new a9d);fjb(VQd,uIe,a);return a} +function Tde(a,b){var c,d,e,f;a.j=-1;if(Vsd(a.e)){c=a.i;f=a.i!=0;NFd(a,b);d=new N1d(a.e,3,a.c,null,b,c,f);e=b.xl(a.e,a.c,null);e=Fee(a,b,e);if(!e){zsd(a.e,d)}else{e.lj(d);e.mj()}}else{NFd(a,b);e=b.xl(a.e,a.c,null);!!e&&e.mj()}} +function zA(a,b){var c,d,e;e=0;d=b[0];if(d>=a.length){return -1}c=(RDb(d,a.length),a.charCodeAt(d));while(c>=48&&c<=57){e=e*10+(c-48);++d;if(d>=a.length){break}c=(RDb(d,a.length),a.charCodeAt(d))}d>b[0]?(b[0]=d):(e=-1);return e} +function FOc(a,b,c){var d,e,f,g,h;g=a.c;h=a.d;f=cgd(WC(OC(o2,1),Ote,8,0,[g.i.n,g.n,g.a])).b;e=(f+cgd(WC(OC(o2,1),Ote,8,0,[h.i.n,h.n,h.a])).b)/2;d=null;g.j==(mmd(),Tld)?(d=new Yfd(b+g.i.c.c.a+c,e)):(d=new Yfd(b-c,e));$t(a.a,0,d)} +function vwd(a){var b,c,d,e;b=null;for(d=Gl(yl(WC(OC(VI,1),rte,20,0,[(!a.b&&(a.b=new Wge(L3,a,4,7)),a.b),(!a.c&&(a.c=new Wge(L3,a,5,8)),a.c)])));Wr(d);){c=JD(Xr(d),84);e=EEd(c);if(!b){b=e}else if(b!=e){return false}}return true} +function UFd(a,b,c){var d;++a.j;if(b>=a.i)throw Icb(new Cdb(GGe+b+HGe+a.i));if(c>=a.i)throw Icb(new Cdb(IGe+c+HGe+a.i));d=a.g[c];if(b!=c){b>16);b=d>>16&16;c=16-b;a=a>>b;d=a-256;b=d>>16&8;c+=b;a<<=b;d=a-qve;b=d>>16&4;c+=b;a<<=b;d=a-Pte;b=d>>16&2;c+=b;a<<=b;d=a>>14;b=d&~(d>>1);return c+2-b}} +function DSc(a,b){var c,d,e;e=new imb;for(d=Wtb(b.a,0);d.b!=d.d.c;){c=JD(iub(d),65);c.c.g==a.g&&XD(lNb(c.b,(DXc(),BXc)))!==XD(lNb(c.c,BXc))&&!OBb(new gCb(null,new Wvb(e,16)),new cTc(c))&&(nDb(e.c,c),true)}gmb(e,new eTc);return e} +function GNb(a,b,c){var d,e,f,g;if(RD(b,155)&&RD(c,155)){f=JD(b,155);g=JD(c,155);return a.a[f.a][g.a]+a.a[g.a][f.a]}else if(RD(b,251)&&RD(c,251)){d=JD(b,251);e=JD(c,251);if(d.a==e.a){return JD(lNb(e.a,(ZOb(),MOb)),15).a}}return 0} +function Y2b(a,b){var c,d,e,f,g,h,i,j;j=Reb(MD(lNb(b,($xc(),Hxc))));i=a[0].n.a+a[0].o.a+a[0].d.c+j;for(h=1;h=0){return c}h=Mfd(Vfd(new Yfd(g.c+g.b/2,g.d+g.a/2),new Yfd(f.c+f.b/2,f.d+f.a/2)));return -(NMb(f,g)-1)*h} +function Lpd(a,b,c){var d;VBb(new gCb(null,(!c.a&&(c.a=new A3d(M3,c,6,6)),new Wvb(c.a,16))),new bqd(a,b));VBb(new gCb(null,(!c.n&&(c.n=new A3d(P3,c,1,7)),new Wvb(c.n,16))),new dqd(a,b));d=JD(Pud(c,(gjd(),Nhd)),78);!!d&&ggd(d,a,b)} +function Zsd(a,b,c){var d,e,f;f=Cce((jie(),hie),a.Ah(),b);if(f){lie();JD(f,69).vk()||(f=xde(Oce(hie,f)));e=(d=a.Fh(f),JD(d>=0?a.Ih(d,true,true):Zsd(a,f,true),163));return JD(e,219).Ql(b,c)}else{throw Icb(new hfb(EFe+b.ve()+HFe))}} +function YLd(a,b,c,d){var e,f,g,h,i;e=a.d[b];if(e){f=e.g;i=e.i;if(d!=null){for(h=0;h=c){d=b;j=(i.c+i.a)/2;g=j-c;if(i.c<=j-c){e=new XPc(i.c,g);Xlb(a,d++,e)}h=j+c;if(h<=i.a){f=new XPc(h,i.a);MDb(d,a.c.length);lDb(a.c,d,f)}}} +function IVc(a,b,c){var d,e,f,g,h,i;if(!b.dc()){e=new aub;for(i=b.Jc();i.Ob();){h=JD(i.Pb(),40);ejb(a.a,zfb(h.g),zfb(c));for(g=(d=Wtb((new zTc(h)).a.d,0),new CTc(d));hub(g.a);){f=JD(iub(g.a),65).c;Ttb(e,f,e.c.b,e.c)}}IVc(a,e,c+1)}} +function Sbe(a){var b;if(!a.c&&a.g==null){a.d=a._i(a.f);YEd(a,a.d);b=a.d}else{if(a.g==null){return true}else if(a.i==0){return false}else{b=JD(a.g[a.i-1],50)}}if(b==a.b&&null.Tm>=null.Sm()){vGd(a);return Sbe(a)}else{return b.Ob()}} +function UUb(a){this.a=a;if(a.c.i.k==(UYb(),NYb)){this.c=a.c;this.d=JD(lNb(a.c.i,(Krc(),Oqc)),64)}else if(a.d.i.k==NYb){this.c=a.d;this.d=JD(lNb(a.d.i,(Krc(),Oqc)),64)}else{throw Icb(new hfb('Edge '+a+' is not an external edge.'))}} +function M_d(a,b){var c,d,e;e=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,3,e,a.b));if(!b){Wxd(a,null);O_d(a,0);N_d(a,null)}else if(b!=a){Wxd(a,b.zb);O_d(a,b.d);c=(d=b.c,d==null?b.zb:d);N_d(a,c==null||sgb(c,b.zb)?null:c)}} +function Dz(b){var c=(!Bz&&(Bz=Ez()),Bz);var d=b.replace(/[\x00-\x1f\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200b-\u200f\u2028-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb"\\]/g,function(a){return Cz(a,c)});return '"'+d+'"'} +function jDb(a,b,c,d,e,f){var g,h,i,j,k;if(e==0){return}if(XD(a)===XD(c)){a=a.slice(b,b+e);b=0}i=c;for(h=b,j=b+e;h=g)throw Icb(new cKd(b,g));e=c[b];if(g==1){d=null}else{d=SC(l5,CHe,415,g-1,0,1);ohb(c,0,d,0,b);f=g-b-1;f>0&&ohb(c,b+1,d,b,f)}zbe(a,d);ybe(a,b,e);return e} +function j1d(a){var b,c;if(a.f){while(a.n0){g=a.c.d;h=a.d.d;e=Qfd(Vfd(new Yfd(h.a,h.b),g),1/(d+1));f=new Yfd(g.a,g.b);for(c=new Hmb(a.a);c.a0?(f=rmd(c)):(f=omd(rmd(c)))}Rud(b,gxc,f)} +function y7b(a,b){var c,d;if(a.c.length!=0){if(a.c.length==2){x7b((JDb(0,a.c.length),JD(a.c[0],9)),(Lkd(),Hkd));x7b((JDb(1,a.c.length),JD(a.c[1],9)),Ikd)}else{for(d=new Hmb(a);d.a0&&QHc(a,c,b);return f}else if(d.a!=null){QHc(a,b,c);return -1}else if(e.a!=null){QHc(a,c,b);return 1}return 0} +function xNc(a){qNc();var b,c,d,e,f,g,h;c=new ltb;for(e=new Hmb(a.e.b);e.a=0;){d=c[f];g.$l(d.Jk())&&YEd(e,d)}!yJd(a,e)&&Vsd(a.e)&&cXd(a,b.Hk()?dee(a,6,b,(Fnb(),Cnb),null,-1,false):dee(a,b.rk()?2:1,b,null,null,-1,false))} +function H1b(a,b){var c,d,e,f,g;if(a.a==(vpc(),tpc)){return true}f=b.a.c;c=b.a.c+b.a.b;if(b.j){d=b.A;g=d.c.c.a-d.o.a/2;e=f-(d.n.a+d.o.a);if(e>g){return false}}if(b.q){d=b.C;g=d.c.c.a-d.o.a/2;e=d.n.a-c;if(e>g){return false}}return true} +function V2b(a,b,c){var d,e,f,g,h,i;d=0;i=c;if(!b){d=c*(a.c.length-1);i*=-1}for(f=new Hmb(a);f.a=0?a.xh(null):a.Mh().Qh(a,-1-b,null,null));a.yh(JD(e,52),c);!!d&&d.mj();a.sh()&&a.th()&&c>-1&&zsd(a,new L1d(a,9,c,f,e));return e}}}return f} +function xsb(a,b){var c,d,e,f,g;f=a.b.Ae(b);d=(c=a.a.get(f),c==null?SC(aJ,rte,1,0,5,1):c);for(g=0;g>5;if(e>=a.d){return a.e<0}c=a.a[e];b=1<<(b&31);if(a.e<0){d=_hb(a);if(e>16)),16).bd(f);if(h0){!(pjd(a.a.c)&&b.n.d)&&!(qjd(a.a.c)&&b.n.b)&&(b.g.d+=$wnd.Math.max(0,d/2-0.5));!(pjd(a.a.c)&&b.n.a)&&!(qjd(a.a.c)&&b.n.c)&&(b.g.a-=d-1)}}} +function $5b(a,b,c){var d,e,f,g,h,i;f=JD(amb(b.e,0),17).c;d=f.i;e=d.k;i=JD(amb(c.g,0),17).d;g=i.i;h=g.k;e==(UYb(),PYb)?oNb(a,(Krc(),brc),JD(lNb(d,brc),12)):oNb(a,(Krc(),brc),f);h==PYb?oNb(a,(Krc(),crc),JD(lNb(g,crc),12)):oNb(a,(Krc(),crc),i)} +function B7b(a,b){var c,d,e,f,g,h;for(f=new Hmb(a.b);f.a>b;f=a.m>>b|c<<22-b;e=a.l>>b|a.m<<22-b}else if(b<44){g=d?eve:0;f=c>>b-22;e=a.m>>b-22|c<<44-b}else{g=d?eve:0;f=d?dve:0;e=c>>b-44}return _C(e&dve,f&dve,g&eve)} +function qNd(a,b){var c,d,e,f,g,h,i,j,k;if(a.a.f>0&&RD(b,45)){a.a.Zj();j=JD(b,45);i=j.jd();f=i==null?0:tb(i);g=dMd(a.a,f);c=a.a.d[g];if(c){d=JD(c.g,374);k=c.i;for(h=0;h=2){c=e.Jc();b=MD(c.Pb());while(c.Ob()){f=b;b=MD(c.Pb());d=$wnd.Math.min(d,(KDb(b),b)-(KDb(f),f))}}return d} +function ESc(a,b){var c,d,e;e=new imb;for(d=Wtb(b.a,0);d.b!=d.d.c;){c=JD(iub(d),65);c.b.g==a.g&&!sgb(c.b.c,vCe)&&XD(lNb(c.b,(DXc(),BXc)))!==XD(lNb(c.c,BXc))&&!OBb(new gCb(null,new Wvb(e,16)),new iTc(c))&&(nDb(e.c,c),true)}gmb(e,new kTc);return e} +function Ru(a,b){var c,d,e;if(XD(b)===XD(Qb(a))){return true}if(!RD(b,16)){return false}d=JD(b,16);e=a.gc();if(e!=d.gc()){return false}if(RD(d,59)){for(c=0;c0&&(e=c);for(g=new Hmb(a.f.e);g.a0?(e+=b):(e+=1)}return e} +function YBd(a,b){var c,d,e,f,g,h,i,j,k,l;j=a;i=FAd(j,'individualSpacings');if(i){d=Qud(b,(gjd(),Lid));g=!d;if(g){e=new qqd;Rud(b,Lid,e)}h=JD(Pud(b,Lid),379);l=i;f=null;!!l&&(f=(k=gC(l,SC(hJ,Ote,2,0,6,1)),new uC(l,k)));if(f){c=new UCd(l,h);Efb(f,c)}}} +function aCd(a,b){var c,d,e,f,g,h,i,j,k,l,m;i=null;l=a;k=null;if(xGe in l.a||yGe in l.a||hGe in l.a){j=null;m=IEd(b);g=FAd(l,xGe);c=new YCd(m);vBd(c.a,g);h=FAd(l,yGe);d=new ADd(m);GBd(d.a,h);f=DAd(l,hGe);e=new GDd(m);j=(HBd(e.a,f),f);k=j}i=k;return i} +function gx(a,b){var c,d,e;if(b===a){return true}if(RD(b,540)){e=JD(b,833);if(a.a.d!=e.a.d||Gh(a).gc()!=Gh(e).gc()){return false}for(d=Gh(e).Jc();d.Ob();){c=JD(d.Pb(),416);if(Iw(a,c.a.jd())!=JD(c.a.kd(),18).gc()){return false}}return true}return false} +function w$b(a,b){var c,d,e,f;for(f=new Hmb(b.a);f.ab.c){return 1}else if(a.bb.b){return 1}else if(a.a!=b.a){return tb(a.a)-tb(b.a)}else if(a.d==(OJc(),NJc)&&b.d==MJc){return -1}else if(a.d==MJc&&b.d==NJc){return 1}return 0} +function MMc(a){var b,c,d,e,f,g,h,i;e=ove;d=pve;for(c=new Hmb(a.e.b);c.a0&&e0}else if(e<0&&-e0}return false} +function E6c(a,b,c,d){var e,f,g,h,i,j,k,l;e=(b-a.d)/a.c.c.length;f=0;a.a+=c;a.d=b;for(l=new Hmb(a.c);l.a>24}return g} +function Ieb(a){if(a.xe()){var b=a.c;b.ye()?(a.o='['+b.n):!b.xe()?(a.o='[L'+b.ve()+';'):(a.o='['+b.ve());a.b=b.ue()+'[]';a.k=b.we()+'[]';return}var c=a.j;var d=a.d;d=d.split('/');a.o=Leb('.',[c,Leb('$',d)]);a.b=Leb('.',[c,Leb('.',d)]);a.k=d[d.length-1]} +function JGb(a,b){var c,d,e,f,g;g=null;for(f=new Hmb(a.e.a);f.a0&&hlc(b,(JDb(d-1,a.c.length),JD(a.c[d-1],9)),e)>0){fmb(a,d,(JDb(d-1,a.c.length),JD(a.c[d-1],9)));--d}JDb(d,a.c.length);a.c[d]=e}b.b=new Yrb;b.g=new Yrb} +function SHc(a,b,c){var d,e,f;for(d=1;d0&&b.Le((JDb(e-1,a.c.length),JD(a.c[e-1],9)),f)>0){fmb(a,e,(JDb(e-1,a.c.length),JD(a.c[e-1],9)));--e}JDb(e,a.c.length);a.c[e]=f}c.a=new Yrb;c.b=new Yrb} +function J_c(a,b,c){var d,e,f,g,h,i,j,k,l,m;for(f=b.Jc();f.Ob();){e=JD(f.Pb(),26);k=e.i+e.g/2;m=e.j+e.f/2;i=a.f;g=i.i+i.g/2;h=i.j+i.f/2;j=k-g;l=m-h;d=$wnd.Math.sqrt(j*j+l*l);j*=a.e/d;l*=a.e/d;if(c){k-=j;m-=l}else{k+=j;m+=l}Mvd(e,k-e.g/2);Nvd(e,m-e.f/2)}} +function tre(a){var b,c,d;if(a.c)return;if(a.b==null)return;for(b=a.b.length-4;b>=0;b-=2){for(c=0;c<=b;c+=2){if(a.b[c]>a.b[c+2]||a.b[c]===a.b[c+2]&&a.b[c+1]>a.b[c+3]){d=a.b[c+2];a.b[c+2]=a.b[c];a.b[c]=d;d=a.b[c+3];a.b[c+3]=a.b[c+1];a.b[c+1]=d}}}a.c=true} +function jtd(a){var b,c;c=new khb(ueb(a.Pm));c.a+='@';ehb(c,(b=tb(a)>>>0,b.toString(16)));if(a.Sh()){c.a+=' (eProxyURI: ';dhb(c,a.Yh());if(a.Hh()){c.a+=' eClass: ';dhb(c,a.Hh())}c.a+=')'}else if(a.Hh()){c.a+=' (eClass: ';dhb(c,a.Hh());c.a+=')'}return c.a} +function $Eb(a){var b,c,d,e;if(a.e){throw Icb(new kfb((seb(PM),lwe+PM.k+mwe)))}a.d==(ojd(),mjd)&&ZEb(a,kjd);for(c=new Hmb(a.a.a);c.a>24}return c} +function EKb(a,b,c){var d,e,f;e=JD($qb(a.i,b),318);if(!e){e=new uIb(a.d,b,c);_qb(a.i,b,e);if(LJb(b)){VHb(a.a,b.c,b.b,e)}else{f=KJb(b);d=JD($qb(a.p,f),253);switch(f.g){case 1:case 3:e.j=true;EIb(d,b.b,e);break;case 4:case 2:e.k=true;EIb(d,b.c,e);}}}return e} +function Pee(a,b,c,d){var e,f,g,h,i,j;h=new $Fd;i=nie(a.e.Ah(),b);e=JD(a.g,122);lie();if(JD(b,69).vk()){for(g=0;g=0){return e}else{f=1;for(h=new Hmb(b.j);h.a=0){return e}else{f=1;for(h=new Hmb(b.j);h.a=0){if(!b){b=new Ygb;d>0&&Ugb(b,(QDb(0,d,a.length),a.substr(0,d)))}b.a+='\\';Qgb(b,c&Bue)}else !!b&&Qgb(b,c&Bue)}return b?b.a:a} +function lSb(a){var b,c,d;for(c=new Hmb(a.a.a.b);c.a0){!(pjd(a.a.c)&&b.n.d)&&!(qjd(a.a.c)&&b.n.b)&&(b.g.d-=$wnd.Math.max(0,d/2-0.5));!(pjd(a.a.c)&&b.n.a)&&!(qjd(a.a.c)&&b.n.c)&&(b.g.a+=$wnd.Math.max(0,d-1))}}} +function F7b(a,b,c){var d,e;if((a.c-a.b&a.a.length-1)==2){if(b==(mmd(),Uld)||b==Tld){v7b(JD(vlb(a),16),(Lkd(),Hkd));v7b(JD(vlb(a),16),Ikd)}else{v7b(JD(vlb(a),16),(Lkd(),Ikd));v7b(JD(vlb(a),16),Hkd)}}else{for(e=new Rlb(a);e.a!=e.b;){d=JD(Plb(e),16);v7b(d,c)}}} +function sGc(a,b,c){var d,e,f,g,h,i,j,k,l;k=-1;l=0;for(h=b,i=0,j=h.length;i0&&++l}}++k}return l} +function LEd(a,b){var c,d,e,f,g,h,i;e=Vu(new SEd(a));h=new Qjb(e,e.c.length);f=Vu(new SEd(b));i=new Qjb(f,f.c.length);g=null;while(h.b>0&&i.b>0){c=(IDb(h.b>0),JD(h.a.Xb(h.c=--h.b),26));d=(IDb(i.b>0),JD(i.a.Xb(i.c=--i.b),26));if(c==d){g=c}else{break}}return g} +function Abc(a,b){var c,d,e,f;b.Tg('Self-Loop pre-processing',1);for(d=new Hmb(a.a);d.aGgc(a,c)){d=CYb(c,(mmd(),Tld));a.d=d.dc()?0:mZb(JD(d.Xb(0),12));g=CYb(b,lmd);a.b=g.dc()?0:mZb(JD(g.Xb(0),12))}else{e=CYb(c,(mmd(),lmd));a.d=e.dc()?0:mZb(JD(e.Xb(0),12));f=CYb(b,Tld);a.b=f.dc()?0:mZb(JD(f.Xb(0),12))}} +function Pmc(a){var b,c,d,e,f,g,h,i;b=true;e=null;f=null;j:for(i=new Hmb(a.a);i.aa.c){break}else if(e.a>=a.s){f<0&&(f=g);h=g}}i=(a.s+a.c)/2;if(f>=0){d=HPc(a,b,f,h);i=UPc((JDb(d,b.c.length),JD(b.c[d],340)));SPc(b,d,c)}return i} +function gyd(a,b,c){var d,e,f,g,h,i,j;g=(f=new nTd,f);lTd(g,(KDb(b),b));j=(!g.b&&(g.b=new QTd((HRd(),DRd),K7,g)),g.b);for(i=1;i=2} +function dlc(a,b,c,d,e){var f,g,h,i,j,k;f=a.c.d.j;g=JD(au(c,0),8);for(k=1;k1){return false}b=Drb(Tkd,WC(OC(F2,1),kue,96,0,[Skd,Vkd]));if(_x(Px(b,a))>1){return false}d=Drb($kd,WC(OC(F2,1),kue,96,0,[Zkd,Ykd]));if(_x(Px(d,a))>1){return false}return true} +function BOc(a){var b,c,d,e,f,g,h;b=0;for(d=new Hmb(a.a);d.a0){d.b.n-=d.c;d.b.n<=0&&d.b.u>0&&Qtb(b,d.b)}}for(e=new Hmb(a.i);e.a0){d.a.u-=d.c;d.a.u<=0&&d.a.n>0&&Qtb(c,d.a)}}} +function vGd(a){var b,c,d,e,f;if(a.g==null){a.d=a._i(a.f);YEd(a,a.d);if(a.c){f=a.f;return f}}b=JD(a.g[a.i-1],50);e=b.Pb();a.e=b;c=a._i(e);if(c.Ob()){a.d=c;YEd(a,c)}else{a.d=null;while(!b.Ob()){VC(a.g,--a.i,null);if(a.i==0){break}d=JD(a.g[a.i-1],50);b=d}}return e} +function Pde(a,b){var c,d,e,f,g,h;d=b;e=d.Jk();if(oie(a.e,e)){if(e.Qi()&&aee(a,e,d.kd())){return false}}else{h=nie(a.e.Ah(),e);c=JD(a.g,122);for(f=0;f1||c>1){return 2}}if(b+c==1){return 2}return 0} +function Ovb(a,b){var c,d,e,f,g,h;f=a.a*Mve+a.b*1502;h=a.b*Mve+11;c=$wnd.Math.floor(h*Nve);f+=c;h-=c*Ove;f%=Ove;a.a=f;a.b=h;if(b<=24){return $wnd.Math.floor(a.a*Ivb[b])}else{e=a.a*(1<=2147483648&&(d-=4294967296);return d}} +function QOc(a,b,c){var d,e,f,g,h,i,j;f=new imb;j=new aub;g=new aub;ROc(a,j,g,b);POc(a,j,g,b,c);for(i=new Hmb(a);i.ad.b.g&&(nDb(f.c,d),true)}}return f} +function Rad(a,b,c){var d,e,f,g,h,i;h=a.c;for(g=(!c.q?(Fnb(),Fnb(),Dnb):c.q).vc().Jc();g.Ob();){f=JD(g.Pb(),45);d=!eCb(SBb(new gCb(null,new Wvb(h,16)),new Uzb(new dbd(b,f)))).zd((NBb(),MBb));if(d){i=f.kd();if(RD(i,4)){e=HGd(i);e!=null&&(i=e)}b.of(JD(f.jd(),147),i)}}} +function C2b(a,b){var c,d,e,f;b.Tg('Resize child graph to fit parent.',1);for(d=new Hmb(a.b);d.a1){for(e=new Hmb(a.a);e.a=0?a.Ih(d,true,true):Zsd(a,f,true),163));JD(e,219).Vl(b,c)}else{throw Icb(new hfb(EFe+b.ve()+FFe))}} +function KAd(a,b,c){var d,e,f,g,h,i;i=ZAd(a,JD(bjb(a.e,b),26));h=null;if(i){switch(i.g){case 3:d=$Ad(a,rwd(b));h=(KDb(c),c)+(KDb(d),d);break;case 2:e=$Ad(a,rwd(b));g=(KDb(c),c)+(KDb(e),e);f=$Ad(a,JD(bjb(a.e,b),26));h=g-(KDb(f),f);break;default:h=c;}}else{h=c}return h} +function MAd(a,b,c){var d,e,f,g,h,i;i=ZAd(a,JD(bjb(a.e,b),26));h=null;if(i){switch(i.g){case 3:d=_Ad(a,rwd(b));h=(KDb(c),c)+(KDb(d),d);break;case 2:e=_Ad(a,rwd(b));g=(KDb(c),c)+(KDb(e),e);f=_Ad(a,JD(bjb(a.e,b),26));h=g-(KDb(f),f);break;default:h=c;}}else{h=c}return h} +function i0d(a,b){var c,d,e,f,g;if(!b){return null}else{f=RD(a.Cb,88)||RD(a.Cb,103);g=!f&&RD(a.Cb,335);for(d=new fKd((!b.a&&(b.a=new g8d(b,w6,b)),b.a));d.e!=d.i.gc();){c=JD(dKd(d),87);e=g0d(c);if(f?RD(e,88):g?RD(e,159):!!e){return e}}return f?(HRd(),xRd):(HRd(),uRd)}} +function LPc(a,b){var c,d,e,f,g;c=new imb;e=UBb(new gCb(null,new Wvb(a,16)),new cQc);f=UBb(new gCb(null,new Wvb(a,16)),new eQc);g=jBb(iBb(XBb(Dy(WC(OC(sM,1),rte,832,0,[e,f])),new gQc)));for(d=1;d=2*b&&Ylb(c,new XPc(g[d-1]+b,g[d]-b))}return c} +function wBd(a,b,c){var d,e,f,g,h,j,k,l;if(c){f=c.a.length;d=new vse(f);for(h=(d.b-d.a)*d.c<0?(use(),tse):new Rse(d);h.Ob();){g=JD(h.Pb(),15);e=EAd(c,g.a);!!e&&(i=null,j=NBd(a,(k=(ksd(),l=new Wzd,l),!!b&&Uzd(k,b),k),e),svd(j,GAd(e,oGe)),bCd(e,j),cCd(e,j),ZBd(a,e,j))}}} +function qWd(a){var b,c,d,e,f,g;if(!a.j){g=new d_d;b=gWd;f=b.a.yc(a,b);if(f==null){for(d=new fKd(xWd(a));d.e!=d.i.gc();){c=JD(dKd(d),29);e=qWd(c);$Ed(g,e);YEd(g,c)}b.a.Ac(a)!=null}XFd(g);a.j=new LYd((JD(SFd(vWd((jRd(),iRd).o),11),19),g.i),g.g);wWd(a).b&=-33}return a.j} +function jle(a){var b,c,d,e;if(a==null){return null}else{d=lse(a,true);e=gJe.length;if(sgb(d.substr(d.length-e,e),gJe)){c=d.length;if(c==4){b=(RDb(0,d.length),d.charCodeAt(0));if(b==43){return Wke}else if(b==45){return Vke}}else if(c==3){return Wke}}return new _eb(d)}} +function hD(a){var b,c,d;c=a.l;if((c&c-1)!=0){return -1}d=a.m;if((d&d-1)!=0){return -1}b=a.h;if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return vfb(c)}if(b==0&&d!=0&&c==0){return vfb(d)+22}if(b!=0&&d==0&&c==0){return vfb(b)+44}return -1} +function so(a,b){var c,d,e,f,g;e=b.a&a.f;f=null;for(d=a.b[e];true;d=d.b){if(d==b){!f?(a.b[e]=b.b):(f.b=b.b);break}f=d}g=b.f&a.f;f=null;for(c=a.c[g];true;c=c.d){if(c==b){!f?(a.c[g]=b.d):(f.d=b.d);break}f=c}!b.e?(a.a=b.c):(b.e.c=b.c);!b.c?(a.e=b.e):(b.c.e=b.e);--a.i;++a.g} +function ut(a,b){var c;b.d?(b.d.b=b.b):(a.a=b.b);b.b?(b.b.d=b.d):(a.e=b.d);if(!b.e&&!b.c){c=JD(Lub(JD(gjb(a.b,b.a),262)),262);c.a=0;++a.c}else{c=JD(Lub(JD(bjb(a.b,b.a),262)),262);--c.a;!b.e?(c.b=JD(Lub(b.c),497)):(b.e.c=b.c);!b.c?(c.c=JD(Lub(b.e),497)):(b.c.e=b.e)}--a.d} +function eTb(a,b){var c,d,e,f;f=new Qjb(a,0);c=(IDb(f.b0);f.a.Xb(f.c=--f.b);Pjb(f,e);IDb(f.b3&&MA(a,0,b-3)}} +function FQb(a){var b,c,d,e;if(XD(lNb(a,($xc(),ewc)))===XD((Bkd(),ykd))){return !a.e&&XD(lNb(a,Evc))!==XD((Upc(),Rpc))}d=JD(lNb(a,Fvc),302);e=Odb(LD(lNb(a,Lvc)))||XD(lNb(a,Mvc))===XD((Lnc(),Hnc));b=JD(lNb(a,Dvc),15).a;c=a.a.c.length;return !e&&d!=(Upc(),Rpc)&&(b==0||b>c)} +function x9b(a,b){var c,d,e,f,g,h,i;for(e=a.Jc();e.Ob();){d=JD(e.Pb(),9);h=new sZb;qZb(h,d);rZb(h,(mmd(),Tld));oNb(h,(Krc(),orc),(Ndb(),true));for(g=b.Jc();g.Ob();){f=JD(g.Pb(),9);i=new sZb;qZb(i,f);rZb(i,lmd);oNb(i,orc,true);c=new BWb;oNb(c,orc,true);xWb(c,h);yWb(c,i)}}} +function Rhc(a){var b,c;c=0;for(;c0){break}}if(c>0&&c0){break}}if(b>0&&c>16!=6&&!!b){if(Mhe(a,b))throw Icb(new hfb(OFe+Xwd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?Jwd(a,d):a.Cb.Qh(a,-1-c,null,d)));!!b&&(d=Rsd(b,a,6,d));d=Iwd(a,b,d);!!d&&d.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,6,b,b))} +function wwd(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=3&&!!b){if(Mhe(a,b))throw Icb(new hfb(OFe+xwd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?qwd(a,d):a.Cb.Qh(a,-1-c,null,d)));!!b&&(d=Rsd(b,a,12,d));d=pwd(a,b,d);!!d&&d.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,3,b,b))} +function Uzd(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=9&&!!b){if(Mhe(a,b))throw Icb(new hfb(OFe+Vzd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?Szd(a,d):a.Cb.Qh(a,-1-c,null,d)));!!b&&(d=Rsd(b,a,9,d));d=Rzd(a,b,d);!!d&&d.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,9,b,b))} +function rUd(b){var c,d,e,f,g;e=UTd(b);g=b.j;if(g==null&&!!e){return b.Hk()?null:e.gk()}else if(RD(e,159)){d=e.hk();if(d){f=d.ti();if(f!=b.i){c=JD(e,159);if(c.lk()){try{b.g=f.qi(c,g)}catch(a){a=Hcb(a);if(RD(a,80)){b.g=null}else throw Icb(a)}}b.i=f}}return b.g}return null} +function MMb(a){var b;b=new imb;Ylb(b,new hEb(new Yfd(a.c,a.d),new Yfd(a.c+a.b,a.d)));Ylb(b,new hEb(new Yfd(a.c,a.d),new Yfd(a.c,a.d+a.a)));Ylb(b,new hEb(new Yfd(a.c+a.b,a.d+a.a),new Yfd(a.c+a.b,a.d)));Ylb(b,new hEb(new Yfd(a.c+a.b,a.d+a.a),new Yfd(a.c,a.d+a.a)));return b} +function Jjc(a){var b,c,d,e;d=a.a.d.j;e=a.c.d.j;for(c=new Hmb(a.i.d);c.a>>0,d.toString(16));qAb(uAb(),(Xzb(),'Exception during lenientFormat for '+e),c);return '<'+e+' threw '+ueb(c.Pm)+'>'}else throw Icb(a)}} +function Dy(a){var b,c,d,e,f,g,h,i,j;d=false;b=336;c=0;f=new bq(a.length);for(h=a,i=0,j=h.length;i1){b=GGb((c=new IGb,++a.b,c),a.d);for(h=Wtb(f,0);h.b!=h.d.c;){g=JD(iub(h),124);UFb(XFb(WFb(YFb(VFb(new ZFb,1),0),b),g))}}} +function Fzd(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=11&&!!b){if(Mhe(a,b))throw Icb(new hfb(OFe+Gzd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?zzd(a,d):a.Cb.Qh(a,-1-c,null,d)));!!b&&(d=Rsd(b,a,10,d));d=yzd(a,b,d);!!d&&d.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,11,b,b))} +function D1b(a,b,c){var d,e,f,g,h,i;f=0;g=0;if(a.c){for(i=new Hmb(a.d.i.j);i.af.a){return -1}else if(e.ai){k=a.d;a.d=SC(L5,EHe,67,2*i+4,0,1);for(f=0;f=9223372036854775807){return ED(),AD}e=false;if(a<0){e=true;a=-a}d=0;if(a>=hve){d=YD(a/hve);a-=d*hve}c=0;if(a>=gve){c=YD(a/gve);a-=c*gve}b=YD(a);f=_C(b,c,d);e&&fD(f);return f} +function $Ab(a){var b,c,d,e,f;f=new imb;_lb(a.b,new gDb(f));a.b.c.length=0;if(f.c.length!=0){b=(JDb(0,f.c.length),JD(f.c[0],80));for(c=1,d=f.c.length;c>16!=7&&!!b){if(Mhe(a,b))throw Icb(new hfb(OFe+nzd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?jzd(a,d):a.Cb.Qh(a,-1-c,null,d)));!!b&&(d=JD(b,52).Oh(a,1,O3,d));d=izd(a,b,d);!!d&&d.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,7,b,b))} +function jTd(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=3&&!!b){if(Mhe(a,b))throw Icb(new hfb(OFe+mTd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?gTd(a,d):a.Cb.Qh(a,-1-c,null,d)));!!b&&(d=JD(b,52).Oh(a,0,x6,d));d=fTd(a,b,d);!!d&&d.mj()}else (a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,3,b,b))} +function Tib(a,b){Sib();var c,d,e,f,g,h,i,j,k;if(b.d>a.d){h=a;a=b;b=h}if(b.d<63){return Xib(a,b)}g=(a.d&-2)<<4;j=fib(a,g);k=fib(b,g);d=Nib(a,eib(j,g));e=Nib(b,eib(k,g));i=Tib(j,k);c=Tib(d,e);f=Tib(Nib(j,d),Nib(e,k));f=Iib(Iib(f,i),c);f=eib(f,g);i=eib(i,g<<1);return Iib(Iib(i,f),c)} +function Byc(){Byc=ndb;zyc=new Dyc(VBe,0);wyc=new Dyc('LONGEST_PATH',1);xyc=new Dyc('LONGEST_PATH_SOURCE',2);tyc=new Dyc('COFFMAN_GRAHAM',3);vyc=new Dyc(Uye,4);Ayc=new Dyc('STRETCH_WIDTH',5);yyc=new Dyc('MIN_WIDTH',6);syc=new Dyc('BF_MODEL_ORDER',7);uyc=new Dyc('DF_MODEL_ORDER',8)} +function zyd(a,b){var c,d,e,f,g,h;if(!a.tb){f=(!a.rb&&(a.rb=new H3d(a,q6,a)),a.rb);h=new Zrb(f.i);for(e=new fKd(f);e.e!=e.i.gc();){d=JD(dKd(e),143);g=d.ve();c=JD(g==null?wsb(h.f,null,d):Qsb(h.i,g,d),143);!!c&&(g==null?wsb(h.f,null,c):Qsb(h.i,g,c))}a.tb=h}return JD(cjb(a.tb,b),143)} +function uWd(a,b){var c,d,e,f,g;(a.i==null&&pWd(a),a.i).length;if(!a.p){g=new Zrb((3*a.g.i/2|0)+1);for(e=new AKd(a.g);e.e!=e.i.gc();){d=JD(zKd(e),179);f=d.ve();c=JD(f==null?wsb(g.f,null,d):Qsb(g.i,f,d),179);!!c&&(f==null?wsb(g.f,null,c):Qsb(g.i,f,c))}a.p=g}return JD(cjb(a.p,b),179)} +function vDb(a,b,c,d,e){var f,g,h,i,j;tDb(d+dz(c,c.ge()),e);uDb(b,xDb(c));f=c.f;!!f&&vDb(a,b,f,'Caused by: ',false);for(h=(c.k==null&&(c.k=SC(iJ,Ote,80,0,0,1)),c.k),i=0,j=h.length;i=0;f+=c?1:-1){g=g|b.c.jg(i,f,c,d&&!Odb(LD(lNb(b.j,(Krc(),Qqc))))&&!Odb(LD(lNb(b.j,(Krc(),wrc)))));g=g|b.q.tg(i,f,c);g=g|HGc(a,i[f],c,d)}bsb(a.c,b);return g} +function l0b(a,b,c){var d,e,f,g,h,i,j,k,l,m;for(k=VXb(a.j),l=0,m=k.length;l1&&(a.a=true);pMb(JD(c.b,68),Gfd(Ifd(JD(b.b,68).c),Qfd(Vfd(Ifd(JD(c.b,68).a),JD(b.b,68).a),e)));uad(a,b);wad(a,c)}} +function URb(a){var b,c,d,e,f,g,h;for(f=new Hmb(a.a.a);f.a0&&f>0?(g.p=b++):d>0?(g.p=c++):f>0?(g.p=e++):(g.p=c++);}}Fnb();gmb(a.j,new t9b)} +function ncc(a){var b,c;c=null;b=JD(amb(a.g,0),17);do{c=b.d.i;if(mNb(c,(Krc(),crc))){return JD(lNb(c,crc),12).i}if(c.k!=(UYb(),RYb)&&Wr(new Yr(Dr(BYb(c).a.Jc(),new Dl)))){b=JD(Xr(new Yr(Dr(BYb(c).a.Jc(),new Dl))),17)}else if(c.k!=RYb){return null}}while(!!c&&c.k!=(UYb(),RYb));return c} +function wkc(a,b){var c,d,e,f,g,h,i,j,k;h=b.j;g=b.g;i=JD(amb(h,h.c.length-1),113);k=(JDb(0,h.c.length),JD(h.c[0],113));j=skc(a,g,i,k);for(f=1;fj){i=c;k=e;j=d}}b.a=k;b.c=i} +function glc(a,b,c,d){var e,f;e=XD(lNb(c,($xc(),tvc)))===XD((bqc(),$pc));f=JD(lNb(c,svc),16);if(mNb(a,(Krc(),grc))){if(e){if(f.Gc(lNb(a,vvc))&&f.Gc(lNb(b,vvc))){return d*JD(lNb(a,vvc),15).a+JD(lNb(a,grc),15).a}}else{return JD(lNb(a,grc),15).a}}else{return -1}return JD(lNb(a,grc),15).a} +function BIc(a,b,c){var d,e,f,g,h,i,j;j=new Dzb(new nJc(a));for(g=WC(OC(dQ,1),oye,12,0,[b,c]),h=0,i=g.length;hi-a.b&&hi-a.a&&hc.p){return 1}return 0}else return f.Ob()?1:-1} +function C5c(a,b){var c,d,e,f,g,h;b.Tg(RDe,1);e=JD(Pud(a,(D4c(),t4c)),104);f=(!a.a&&(a.a=new A3d(Q3,a,10,11)),a.a);g=f7c(f);h=$wnd.Math.max(g.a,Reb(MD(Pud(a,(A3c(),x3c))))-(e.b+e.c));d=$wnd.Math.max(g.b,Reb(MD(Pud(a,u3c)))-(e.d+e.a));c=d-g.b;Rud(a,p3c,c);Rud(a,r3c,h);Rud(a,q3c,d+c);b.Ug()} +function MEd(a){var b,c;if((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a).i==0){return IEd(a)}else{b=JD(SFd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a),0),170);uJd((!b.a&&(b.a=new VXd(K3,b,5)),b.a));Vwd(b,0);Wwd(b,0);Owd(b,0);Pwd(b,0);c=(!a.a&&(a.a=new A3d(M3,a,6,6)),a.a);while(c.i>1){xJd(c,c.i-1)}return b}} +function nie(a,b){lie();var c,d,e,f;if(!b){return kie}else if(b==(lke(),ike)||(b==Sje||b==Qje||b==Rje)&&a!=Pje){return new uie(a,b)}else{d=JD(b,682);c=d.Yk();if(!c){yde(Oce((jie(),hie),b));c=d.Yk()}f=(!c.i&&(c.i=new Yrb),c.i);e=JD(Wd(vsb(f.f,a)),2003);!e&&ejb(f,a,e=new uie(a,b));return e}} +function zFb(a,b){var c,d;d=vzb(a.b,b.b);if(!d){throw Icb(new kfb('Invalid hitboxes for scanline constraint calculation.'))}(tFb(b.b,JD(xzb(a.b,b.b),60))||tFb(b.b,JD(wzb(a.b,b.b),60)))&&(nhb(),String.fromCharCode(10));a.a[b.b.f]=JD(zzb(a.b,b.b),60);c=JD(yzb(a.b,b.b),60);!!c&&(a.a[c.f]=b.b)} +function e9b(a,b){var c,d,e,f,g,h,i,j,k;i=JD(lNb(a,(Krc(),hrc)),12);j=cgd(WC(OC(o2,1),Ote,8,0,[i.i.n,i.n,i.a])).a;k=a.i.n.b;c=TXb(a.e);for(e=c,f=0,g=e.length;f0){if(f.a){h=f.b.Kf().a;if(c>h){e=(c-h)/2;f.d.b=e;f.d.c=e}}else{f.d.c=a.s+c}}else if(Nld(a.u)){d=Jpd(f.b);d.c<0&&(f.d.b=-d.c);d.c+d.b>f.b.Kf().a&&(f.d.c=d.c+d.b-f.b.Kf().a)}}} +function lRc(a,b){var c,d,e,f,g;g=new imb;c=b;do{f=JD(bjb(a.b,c),132);f.B=c.c;f.D=c.d;nDb(g.c,f);c=JD(bjb(a.k,c),17)}while(c);d=(JDb(0,g.c.length),JD(g.c[0],132));d.j=true;d.A=JD(d.d.a.ec().Jc().Pb(),17).c.i;e=JD(amb(g,g.c.length-1),132);e.q=true;e.C=JD(e.d.a.ec().Jc().Pb(),17).d.i;return g} +function n2b(a){var b,c;c=JD(lNb(a,($xc(),qwc)),165);b=JD(lNb(a,(Krc(),Vqc)),315);if(c==(Qrc(),Mrc)){oNb(a,qwc,Prc);oNb(a,Vqc,(kqc(),jqc))}else if(c==Orc){oNb(a,qwc,Prc);oNb(a,Vqc,(kqc(),hqc))}else if(b==(kqc(),jqc)){oNb(a,qwc,Mrc);oNb(a,Vqc,iqc)}else if(b==hqc){oNb(a,qwc,Orc);oNb(a,Vqc,iqc)}} +function zOc(){zOc=ndb;xOc=new LOc;tOc=Xbd(new acd,(TQb(),QQb),(Q5b(),m5b));wOc=Vbd(Xbd(new acd,QQb,A5b),SQb,z5b);yOc=Ubd(Ubd(Zbd(Vbd(Xbd(new acd,OQb,K5b),SQb,J5b),RQb),I5b),L5b);uOc=Vbd(Xbd(Xbd(Xbd(new acd,PQb,p5b),RQb,r5b),RQb,s5b),SQb,q5b);vOc=Vbd(Xbd(Xbd(new acd,RQb,s5b),RQb,Z4b),SQb,Y4b)} +function bRc(){bRc=ndb;YQc=Xbd(Vbd(new acd,(TQb(),SQb),(Q5b(),a5b)),QQb,m5b);aRc=Ubd(Ubd(Zbd(Vbd(Xbd(new acd,OQb,K5b),SQb,J5b),RQb),I5b),L5b);ZQc=Vbd(Xbd(Xbd(Xbd(new acd,PQb,p5b),RQb,r5b),RQb,s5b),SQb,q5b);_Qc=Xbd(Xbd(new acd,QQb,A5b),SQb,z5b);$Qc=Vbd(Xbd(Xbd(new acd,RQb,s5b),RQb,Z4b),SQb,Y4b)} +function AOc(a,b,c,d,e){var f,g;if((!vWb(b)&&b.c.i.c==b.d.i.c||!Lfd(cgd(WC(OC(o2,1),Ote,8,0,[e.i.n,e.n,e.a])),c))&&!vWb(b)){b.c==e?$t(b.a,0,new Zfd(c)):Qtb(b.a,new Zfd(c));if(d&&!csb(a.a,c)){g=JD(lNb(b,($xc(),nwc)),78);if(!g){g=new jgd;oNb(b,nwc,g)}f=new Zfd(c);Ttb(g,f,g.c.b,g.c);bsb(a.a,f)}}} +function $s(a,b){var c,d,e,f;f=ddb(Vcb(due,xfb(ddb(Vcb(b==null?0:tb(b),eue)),15)));c=f&a.b.length-1;e=null;for(d=a.b[c];d;e=d,d=d.a){if(d.d==f&&Hb(d.i,b)){!e?(a.b[c]=d.a):(e.a=d.a);Ks(JD(Lub(d.c),593),JD(Lub(d.f),593));Js(JD(Lub(d.b),227),JD(Lub(d.e),227));--a.f;++a.e;return true}}return false} +function M7b(a){var b,c;for(c=new Yr(Dr(yYb(a).a.Jc(),new Dl));Wr(c);){b=JD(Xr(c),17);if(b.c.i.k!=(UYb(),OYb)){throw Icb(new pbd(Gye+wYb(a)+"' has its layer constraint set to FIRST, but has at least one incoming edge that "+' does not come from a FIRST_SEPARATE node. That must not happen.'))}}} +function mmc(a,b){var c,d,e,f,g,h,i,j,k,l,m;e=b?new vmc:new xmc;f=false;do{f=false;j=b?$u(a.b):a.b;for(i=j.Jc();i.Ob();){h=JD(i.Pb(),25);m=Uu(h.a);b||$u(m);for(l=new Hmb(m);l.a=0;g+=e?1:-1){h=b[g];i=d==(mmd(),Tld)?e?CYb(h,d):$u(CYb(h,d)):e?$u(CYb(h,d)):CYb(h,d);f&&(a.c[h.p]=i.gc());for(l=i.Jc();l.Ob();){k=JD(l.Pb(),12);a.d[k.p]=j++}$lb(c,i)}} +function WQc(a,b,c){var d,e,f,g,h,i,j,k;f=Reb(MD(a.b.Jc().Pb()));j=Reb(MD(_q(b.b)));d=Qfd(Ifd(a.a),j-c);e=Qfd(Ifd(b.a),c-f);k=Gfd(d,e);Qfd(k,1/(j-f));this.a=k;this.b=new imb;h=true;g=a.b.Jc();g.Pb();while(g.Ob()){i=Reb(MD(g.Pb()));if(h&&i-c>mCe){this.b.Ec(c);h=false}this.b.Ec(i)}h&&this.b.Ec(c)} +function OGb(a){var b,c,d,e;RGb(a,a.n);if(a.d.c.length>0){Umb(a.c);while(ZGb(a,JD(Fmb(new Hmb(a.e.a)),124))>5;b&=31;if(d>=a.d){return a.e<0?(Whb(),Qhb):(Whb(),Vhb)}f=a.d-d;e=SC(cE,Pue,30,f+1,15,1);Bib(e,f,a.a,d,b);if(a.e<0){for(c=0;c0&&a.a[c]<<32-b!=0){for(c=0;c=0){return false}else{c=Cce((jie(),hie),e,b);if(!c){return true}else{d=c.Gk();return (d>1||d==-1)&&wde(Oce(hie,c))!=3}}}}else{return false}} +function Xjc(a,b,c,d){var e,f,g,h,i,j,k,l,m,n;i=a.c.d;j=a.d.d;if(i.j==j.j){return}n=a.b;k=null;h=null;g=jhc(a);if(g&&!!n.i){k=a.b.i.i;h=n.i.j}e=i.j;l=null;while(e!=j.j){l=b==0?pmd(e):nmd(e);f=ckc(e,n.d[e.g],c);m=ckc(l,n.d[l.g],c);g&&!!k&&!!h&&(e==k?Zjc(f,k,h):l==k&&Zjc(m,k,h));Qtb(d,Gfd(f,m));e=l}} +function GGc(a,b,c){var d,e,f,g,h,i;d=uGc(c,a.length);g=a[d];f=vGc(c,g.length);if(g[f].k!=(UYb(),NYb)){return}i=b.j;for(e=0;e0){c[0]+=a.d;g-=c[0]}if(c[2]>0){c[2]+=a.d;g-=c[2]}f=$wnd.Math.max(0,g);c[1]=$wnd.Math.max(c[1],g);OHb(a,xHb,e.c+d.b+c[0]-(c[1]-g)/2,c);if(b==xHb){a.c.b=f;a.c.c=e.c+d.b+(f-g)/2}} +function cVb(){this.c=SC(aE,vve,30,(mmd(),WC(OC(J2,1),eye,64,0,[kmd,Uld,Tld,jmd,lmd])).length,15,1);this.b=SC(aE,vve,30,WC(OC(J2,1),eye,64,0,[kmd,Uld,Tld,jmd,lmd]).length,15,1);this.a=SC(aE,vve,30,WC(OC(J2,1),eye,64,0,[kmd,Uld,Tld,jmd,lmd]).length,15,1);Smb(this.c,ove);Smb(this.b,pve);Smb(this.a,pve)} +function ekc(a,b,c,d){var e,f,g,h,i;i=b.i;h=c[i.g][a.d[i.g]];e=false;for(g=new Hmb(b.d);g.a=e&&(a.c=false,a.a=false);a.b[d++]=e;a.b[d]=f;a.c||tre(a)}} +function Skc(a,b,c){var d,e,f,g,h,i,j;j=b.d;a.a=new jmb(j.c.length);a.c=new Yrb;for(h=new Hmb(j);h.a=0?a.Ih(j,false,true):Zsd(a,c,false),61));n:for(f=l.Jc();f.Ob();){e=JD(f.Pb(),57);for(k=0;ka.d[g.p]){c+=tIc(a.b,f);olb(a.a,zfb(f))}}while(!ulb(a.a)){rIc(a.b,JD(zlb(a.a),15).a)}}return c} +function fbd(a,b,c){var d,e,f,g;f=(!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a).i;for(e=new fKd((!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a));e.e!=e.i.gc();){d=JD(dKd(e),26);(!d.a&&(d.a=new A3d(Q3,d,10,11)),d.a).i==0||(f+=fbd(a,d,false))}if(c){g=Czd(b);while(g){f+=(!g.a&&(g.a=new A3d(Q3,g,10,11)),g.a).i;g=Czd(g)}}return f} +function xJd(a,b){var c,d,e,f;if(a.Nj()){d=null;e=a.Oj();a.Rj()&&(d=a.Tj(a.Yi(b),null));c=a.Gj(4,f=VFd(a,b),null,b,e);if(a.Kj()&&f!=null){d=a.Mj(f,d);if(!d){a.Hj(c)}else{d.lj(c);d.mj()}}else{if(!d){a.Hj(c)}else{d.lj(c);d.mj()}}return f}else{f=VFd(a,b);if(a.Kj()&&f!=null){d=a.Mj(f,null);!!d&&d.mj()}return f}} +function lLb(a){var b,c,d,e,f,g,h,i,j,k;j=a.a;b=new esb;i=0;for(d=new Hmb(a.d);d.ah.d&&(k=h.d+h.a+j)}}c.c.d=k;b.a.yc(c,b);i=$wnd.Math.max(i,c.c.d+c.c.a)}return i} +function L7b(a,b,c){var d,e,f,g,h,i;for(g=JD(lNb(a,(Krc(),Sqc)),16).Jc();g.Ob();){f=JD(g.Pb(),9);switch(JD(lNb(f,($xc(),qwc)),165).g){case 2:HYb(f,b);break;case 4:HYb(f,c);}for(e=new Yr(Dr(vYb(f).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),17);if(!!d.c&&!!d.d){continue}h=!d.d;i=JD(lNb(d,lrc),12);h?yWb(d,i):xWb(d,i)}}} +function Lpc(){Lpc=ndb;Cpc=new Mpc('COMMENTS',0);Epc=new Mpc('EXTERNAL_PORTS',1);Fpc=new Mpc('HYPEREDGES',2);Gpc=new Mpc('HYPERNODES',3);Hpc=new Mpc('NON_FREE_PORTS',4);Ipc=new Mpc('NORTH_SOUTH_PORTS',5);Kpc=new Mpc(Yye,6);Bpc=new Mpc('CENTER_LABELS',7);Dpc=new Mpc('END_LABELS',8);Jpc=new Mpc('PARTITIONS',9)} +function HA(a,b,c,d,e){if(d<0){d=wA(a,e,WC(OC(hJ,1),Ote,2,6,[Cue,Due,Eue,Fue,Gue,Hue,Iue,Jue,Kue,Lue,Mue,Nue]),b);d<0&&(d=wA(a,e,WC(OC(hJ,1),Ote,2,6,['Jan','Feb','Mar','Apr',Gue,'Jun','Jul','Aug','Sep','Oct','Nov','Dec']),b));if(d<0){return false}c.k=d;return true}else if(d>0){c.k=d-1;return true}return false} +function JA(a,b,c,d,e){if(d<0){d=wA(a,e,WC(OC(hJ,1),Ote,2,6,[Cue,Due,Eue,Fue,Gue,Hue,Iue,Jue,Kue,Lue,Mue,Nue]),b);d<0&&(d=wA(a,e,WC(OC(hJ,1),Ote,2,6,['Jan','Feb','Mar','Apr',Gue,'Jun','Jul','Aug','Sep','Oct','Nov','Dec']),b));if(d<0){return false}c.k=d;return true}else if(d>0){c.k=d-1;return true}return false} +function LA(a,b,c,d,e,f){var g,h,i,j;h=32;if(d<0){if(b[0]>=a.length){return false}h=pgb(a,b[0]);if(h!=43&&h!=45){return false}++b[0];d=zA(a,b);if(d<0){return false}h==45&&(d=-d)}if(h==32&&b[0]-c==2&&e.b==2){i=new mB;j=i.q.getFullYear()-Oue+Oue-80;g=j%100;f.a=d==g;d+=(j/100|0)*100+(d=0?qib(a):cib(qib(Wcb(a))));Rib[b]=Rcb(Zcb(a,b),0)?qib(Zcb(a,b)):cib(qib(Wcb(Zcb(a,b))));a=Vcb(a,5)}for(;b=j&&(i=d)}!!i&&(k=$wnd.Math.max(k,i.a.o.a));if(k>m){l=j;m=k}}return l} +function sLb(a){var b,c,d,e,f,g,h;f=new Dzb(JD(Qb(new GLb),51));h=pve;for(c=new Hmb(a.d);c.asDe?gmb(i,a.b):d<=sDe&&d>tDe?gmb(i,a.d):d<=tDe&&d>uDe?gmb(i,a.c):d<=uDe&&gmb(i,a.a);f=u2c(a,i,f)}return e} +function OPc(a,b,c,d){var e,f,g,h,i,j;e=(d.c+d.a)/2;_tb(b.j);Qtb(b.j,e);_tb(c.e);Qtb(c.e,e);j=new WPc;for(h=new Hmb(a.f);h.a1;if(h){d=new Yfd(e,c.b);Qtb(b.a,d)}egd(b.a,WC(OC(o2,1),Ote,8,0,[m,l]))} +function YCc(a,b,c){var d,e;if(b=48;c--){Coe[c]=c-48<<24>>24}for(d=70;d>=65;d--){Coe[d]=d-65+10<<24>>24}for(e=102;e>=97;e--){Coe[e]=e-97+10<<24>>24}for(f=0;f<10;f++)Doe[f]=48+f&Bue;for(a=10;a<=15;a++)Doe[a]=65+a-10&Bue} +function UUc(a,b){b.Tg('Process graph bounds',1);oNb(a,(MWc(),tWc),Yub(hBb(XBb(new gCb(null,new Wvb(a.b,16)),new ZUc))));oNb(a,vWc,Yub(hBb(XBb(new gCb(null,new Wvb(a.b,16)),new _Uc))));oNb(a,sWc,Yub(gBb(XBb(new gCb(null,new Wvb(a.b,16)),new bVc))));oNb(a,uWc,Yub(gBb(XBb(new gCb(null,new Wvb(a.b,16)),new dVc))));b.Ug()} +function oQb(a){var b,c,d,e,f;e=JD(lNb(a,($xc(),Nwc)),22);f=JD(lNb(a,Qwc),22);c=new Yfd(a.f.a+a.d.b+a.d.c,a.f.b+a.d.d+a.d.a);b=new Zfd(c);if(e.Gc((Vmd(),Rmd))){d=JD(lNb(a,Pwc),8);if(f.Gc((ind(),bnd))){d.a<=0&&(d.a=20);d.b<=0&&(d.b=20)}b.a=$wnd.Math.max(c.a,d.a);b.b=$wnd.Math.max(c.b,d.b)}Odb(LD(lNb(a,Owc)))||pQb(a,c,b)} +function iec(a){var b,c,d,e,f,g,h;b=false;c=0;for(e=new Hmb(a.d.b);e.a>19!=0){return '-'+yD(pD(a))}c=a;d='';while(!(c.l==0&&c.m==0&&c.h==0)){e=ZC(ive);c=aD(c,e,true);b=''+xD(YC);if(!(c.l==0&&c.m==0&&c.h==0)){f=9-b.length;for(;f>0;f--){b='0'+b}}d=b+d}return d} +function Ksb(){if(!Object.create||!Object.getOwnPropertyNames){return false}var a='__proto__';var b=Object.create(null);if(b[a]!==undefined){return false}var c=Object.getOwnPropertyNames(b);if(c.length!=0){return false}b[a]=42;if(b[a]!==42){return false}if(Object.getOwnPropertyNames(b).length==0){return false}return true} +function DUb(a,b,c){var d,e,f,g,h,i,j,k,l;d=c.c;e=c.d;h=lZb(b.c);i=lZb(b.d);if(d==b.c){h=EUb(a,h,e);i=FUb(b.d)}else{h=FUb(b.c);i=EUb(a,i,e)}j=new kgd(b.a);Ttb(j,h,j.a,j.a.a);Ttb(j,i,j.c.b,j.c);g=b.c==d;l=new dVb;for(f=0;f=a.a){return -1}if(!C3b(b,c)){return -1}if(ar(JD(d.Kb(b),20))){return 1}e=0;for(g=JD(d.Kb(b),20).Jc();g.Ob();){f=JD(g.Pb(),17);i=f.c.i==b?f.d.i:f.c.i;h=D3b(a,i,c,d);if(h==-1){return -1}e=$wnd.Math.max(e,h);if(e>a.c-1){return -1}}return e+1} +function D4c(){D4c=ndb;c4c=new qEd((gjd(),ihd),1.3);l4c=new qEd(Xhd,(Ndb(),false));u4c=new bZb(15);t4c=new qEd(cid,u4c);w4c=new qEd(Qid,15);d4c=phd;k4c=Vhd;m4c=Yhd;n4c=$hd;j4c=Thd;o4c=bid;v4c=uid;A4c=(_3c(),W3c);z4c=V3c;C4c=$3c;B4c=Y3c;s4c=Q3c;r4c=P3c;q4c=O3c;y4c=T3c;g4c=Hhd;h4c=Ihd;f4c=L3c;e4c=K3c;i4c=M3c;x4c=S3c;p4c=N3c} +function bFd(a,b){var c,d,e,f,g,h;if(XD(b)===XD(a)){return true}if(!RD(b,16)){return false}d=JD(b,16);h=a.gc();if(d.gc()!=h){return false}g=d.Jc();if(a.Wi()){for(c=0;c0){a.Zj();if(b!=null){for(f=0;f>24}case 97:case 98:case 99:case 100:case 101:case 102:{return a-97+10<<24>>24}case 65:case 66:case 67:case 68:case 69:case 70:{return a-65+10<<24>>24}default:{throw Icb(new agb('Invalid hexadecimal'))}}} +function kmc(a,b,c,d){var e,f,g,h,i,j;i=pmc(a,c);j=pmc(b,c);e=false;while(!!i&&!!j){if(d||nmc(i,j,c)){g=pmc(i,c);h=pmc(j,c);smc(b);smc(a);f=i.c;o8b(i,false);o8b(j,false);if(c){GYb(b,j.p,f);b.p=j.p;GYb(a,i.p+1,f);a.p=i.p}else{GYb(a,i.p,f);a.p=i.p;GYb(b,j.p+1,f);b.p=j.p}HYb(i,null);HYb(j,null);i=g;j=h;e=true}else{break}}return e} +function Cyc(a){switch(a.g){case 0:return new aEc;case 1:return new uDc;case 3:return new LCc;case 4:return new lDc;case 5:return new oEc;case 6:return new NDc;case 2:return new CDc;case 7:return new uCc;case 8:return new bDc;default:throw Icb(new hfb('No implementation is available for the layerer '+(a.f!=null?a.f:''+a.g)));}} +function yEc(a,b,c,d){var e,f,g,h,i;e=false;f=false;for(h=new Hmb(d.j);h.a=b.length){throw Icb(new Cdb('Greedy SwitchDecider: Free layer not in graph.'))}this.c=b[a];this.e=new ZIc(d);NIc(this.e,this.c,(mmd(),lmd));this.i=new ZIc(d);NIc(this.i,this.c,Tld);this.f=new Jgc(this.c);this.a=!f&&e.i&&!e.s&&this.c[0].k==(UYb(),NYb);this.a&&Mgc(this,a,b.length)} +function AKb(a,b){var c,d,e,f,g,h;f=!a.B.Gc((ind(),_md));g=a.B.Gc(cnd);a.a=new YHb(g,f,a.c);!!a.n&&bYb(a.a.n,a.n);EIb(a.g,(zHb(),xHb),a.a);if(!b){d=new FIb(1,f,a.c);d.n.a=a.k;_qb(a.p,(mmd(),Uld),d);e=new FIb(1,f,a.c);e.n.d=a.k;_qb(a.p,jmd,e);h=new FIb(0,f,a.c);h.n.c=a.k;_qb(a.p,lmd,h);c=new FIb(0,f,a.c);c.n.b=a.k;_qb(a.p,Tld,c)}} +function pec(a){var b,c,d;b=JD(lNb(a.d,($xc(),Wvc)),222);switch(b.g){case 2:c=gec(a);break;case 3:c=(d=new imb,VBb(SBb(WBb(UBb(UBb(new gCb(null,new Wvb(a.d.b,16)),new vfc),new xfc),new zfc),new Bec),new Bfc(d)),d);break;default:throw Icb(new kfb('Compaction not supported for '+b+' edges.'));}oec(a,c);Efb(new ckb(a.g),new _ec(a))} +function MUc(a,b){var c,d,e,f,g,h,i;b.Tg('Process directions',1);c=JD(lNb(a,(DXc(),bXc)),86);if(c!=(ojd(),jjd)){for(e=Wtb(a.b,0);e.b!=e.d.c;){d=JD(iub(e),40);h=JD(lNb(d,(MWc(),KWc)),15).a;i=JD(lNb(d,LWc),15).a;switch(c.g){case 4:i*=-1;break;case 1:f=h;h=i;i=f;break;case 2:g=h;h=-i;i=g;}oNb(d,KWc,zfb(h));oNb(d,LWc,zfb(i))}}b.Ug()} +function BUb(a){var b,c,d,e,f,g,h,i;i=new NUb;for(h=new Hmb(a.a);h.a0&&b=0){return false}else{b.p=c.b;Ylb(c.e,b)}if(e==(UYb(),PYb)||e==SYb){for(g=new Hmb(b.j);g.aa.d[h.p]){c+=tIc(a.b,f);olb(a.a,zfb(f))}}else{++g}}c+=a.b.d*g;while(!ulb(a.a)){rIc(a.b,JD(zlb(a.a),15).a)}}return c} +function nhe(a){var b,c,d,e,f,g;f=0;b=UTd(a);!!b.ik()&&(f|=4);(a.Bb&YHe)!=0&&(f|=2);if(RD(a,103)){c=JD(a,19);e=X3d(c);(c.Bb&KFe)!=0&&(f|=32);if(e){yWd(sUd(e));f|=8;g=e.t;(g>1||g==-1)&&(f|=16);(e.Bb&KFe)!=0&&(f|=64)}(c.Bb&tve)!=0&&(f|=Mte);f|=GHe}else{if(RD(b,459)){f|=512}else{d=b.ik();!!d&&(d.i&1)!=0&&(f|=256)}}(a.Bb&512)!=0&&(f|=128);return f} +function tie(a,b){var c;if(a.f==rie){c=wde(Oce((jie(),hie),b));return a.e?c==4&&b!=(Jje(),Hje)&&b!=(Jje(),Eje)&&b!=(Jje(),Fje)&&b!=(Jje(),Gje):c==2}if(!!a.d&&(a.d.Gc(b)||a.d.Gc(xde(Oce((jie(),hie),b)))||a.d.Gc(Cce((jie(),hie),a.b,b)))){return true}if(a.f){if(Vce((jie(),a.f),zde(Oce(hie,b)))){c=wde(Oce(hie,b));return a.e?c==4:c==2}}return false} +function H8b(a,b){var c,d,e,f,g,h,i,j;f=new imb;b.b.c.length=0;c=JD(PBb(cCb(new gCb(null,new Wvb(new ckb(a.a.b),1))),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[(CAb(),AAb)]))),16);for(e=c.Jc();e.Ob();){d=JD(e.Pb(),15);g=H_b(a.a,d);if(g.b!=0){h=new s$b(b);nDb(f.c,h);h.p=d.a;for(j=Wtb(g,0);j.b!=j.d.c;){i=JD(iub(j),9);HYb(i,h)}}}$lb(b.b,f)} +function dFb(a){var b,c,d,e,f,g,h;h=new Yrb;for(d=new Hmb(a.a.b);d.aSCe&&(e-=SCe);h=JD(Pud(d,zid),8);j=h.a;l=h.b+a;f=$wnd.Math.atan2(l,j);f<0&&(f+=SCe);f+=b;f>SCe&&(f-=SCe);return Sy(),Wy(1.0E-10),$wnd.Math.abs(e-f)<=1.0E-10||e==f||isNaN(e)&&isNaN(f)?0:ef?1:Rdb(isNaN(e),isNaN(f))} +function SYc(a,b,c,d){var e,f,g;if(b){f=Reb(MD(lNb(b,(MWc(),FWc))))+d;g=c+Reb(MD(lNb(b,zWc)))/2;oNb(b,KWc,zfb(ddb(Pcb($wnd.Math.round(f)))));oNb(b,LWc,zfb(ddb(Pcb($wnd.Math.round(g)))));b.d.b==0||SYc(a,JD(yr((e=Wtb((new zTc(b)).a.d,0),new CTc(e))),40),c+Reb(MD(lNb(b,zWc)))+a.b,d+Reb(MD(lNb(b,CWc))));lNb(b,IWc)!=null&&SYc(a,JD(lNb(b,IWc),40),c,d)}} +function esd(a,b){var c,d,e,f;f=JD(Pud(a,(gjd(),xid)),64).g-JD(Pud(b,xid),64).g;if(f!=0){return f}c=JD(Pud(a,sid),15);d=JD(Pud(b,sid),15);if(!!c&&!!d){e=c.a-d.a;if(e!=0){return e}}switch(JD(Pud(a,xid),64).g){case 1:return Xeb(a.i,b.i);case 2:return Xeb(a.j,b.j);case 3:return Xeb(b.i,a.i);case 4:return Xeb(b.j,a.j);default:throw Icb(new kfb(lye));}} +function Gzd(a){var b,c,d;if((a.Db&64)!=0)return Ovd(a);b=new khb(AFe);c=a.k;if(!c){!a.n&&(a.n=new A3d(P3,a,1,7));if(a.n.i>0){d=(!a.n&&(a.n=new A3d(P3,a,1,7)),JD(SFd(a.n,0),157)).a;!d||ehb(ehb((b.a+=' "',b),d),'"')}}else{ehb(ehb((b.a+=' "',b),c),'"')}ehb(_gb(ehb(_gb(ehb(_gb(ehb(_gb((b.a+=' (',b),a.i),','),a.j),' | '),a.g),','),a.f),')');return b.a} +function Vzd(a){var b,c,d;if((a.Db&64)!=0)return Ovd(a);b=new khb(BFe);c=a.k;if(!c){!a.n&&(a.n=new A3d(P3,a,1,7));if(a.n.i>0){d=(!a.n&&(a.n=new A3d(P3,a,1,7)),JD(SFd(a.n,0),157)).a;!d||ehb(ehb((b.a+=' "',b),d),'"')}}else{ehb(ehb((b.a+=' "',b),c),'"')}ehb(_gb(ehb(_gb(ehb(_gb(ehb(_gb((b.a+=' (',b),a.i),','),a.j),' | '),a.g),','),a.f),')');return b.a} +function tGc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;n=-1;o=0;for(k=b,l=0,m=k.length;l0&&++o}}}++n}return o} +function Xhc(a,b){var c,d,e,f,g;b==(tAc(),qAc)&&Lnb(JD(Qc(a.a,(Bhc(),xhc)),16));for(e=JD(Qc(a.a,(Bhc(),xhc)),16).Jc();e.Ob();){d=JD(e.Pb(),107);c=JD(amb(d.j,0),113).d.j;f=new kmb(d.j);gmb(f,new Bic);switch(b.g){case 2:Phc(a,f,c,(jic(),hic),1);break;case 1:case 0:g=Rhc(f);Phc(a,new Yjb(f,0,g),c,(jic(),hic),0);Phc(a,new Yjb(f,g,f.c.length),c,hic,1);}}} +function eIc(a){var b,c,d,e,f,g,h;e=JD(lNb(a,(Krc(),Wqc)),9);d=a.j;c=(JDb(0,d.c.length),JD(d.c[0],12));for(g=new Hmb(e.j);g.ae.p){rZb(f,jmd);if(f.d){h=f.o.b;b=f.a.b;f.a.b=h-b}}else if(f.j==jmd&&e.p>a.p){rZb(f,Uld);if(f.d){h=f.o.b;b=f.a.b;f.a.b=-(h-b)}}break}}return e} +function _cd(a,b){var c,d,e,f,g,h,i;if(b==null||b.length==0){return null}e=JD(cjb(a.a,b),144);if(!e){for(d=(h=(new nkb(a.b)).a.vc().Jc(),new skb(h));d.a.Ob();){c=(f=JD(d.a.Pb(),45),JD(f.kd(),144));g=c.c;i=b.length;if(sgb(g.substr(g.length-i,i),b)&&(b.length==g.length||pgb(g,g.length-b.length-1)==46)){if(e){return null}e=c}}!!e&&fjb(a.a,b,e)}return e} +function XTb(a,b,c){var d,e,f,g,h,i,j,k,l,m;f=new Yfd(b,c);for(k=new Hmb(a.a);k.a1;if(h){d=new Yfd(e,c.b);Qtb(b.a,d)}egd(b.a,WC(OC(o2,1),Ote,8,0,[m,l]))} +function Czc(){Czc=ndb;Azc=new Dzc(cye,0);vzc=new Dzc('NIKOLOV',1);yzc=new Dzc('NIKOLOV_PIXEL',2);wzc=new Dzc('NIKOLOV_IMPROVED',3);xzc=new Dzc('NIKOLOV_IMPROVED_PIXEL',4);szc=new Dzc('DUMMYNODE_PERCENTAGE',5);zzc=new Dzc('NODECOUNT_PERCENTAGE',6);Bzc=new Dzc('NO_BOUNDARY',7);tzc=new Dzc('MODEL_ORDER_LEFT_TO_RIGHT',8);uzc=new Dzc('MODEL_ORDER_RIGHT_TO_LEFT',9)} +function IBd(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;k=null;m=bBd(a,b);d=null;h=JD(Pud(b,(gjd(),Lhd)),300);h?(d=h):(d=(Lmd(),Imd));n=d;if(n==(Lmd(),Imd)){e=null;j=JD(bjb(a.r,m),300);j?(e=j):(e=Jmd);n=e}ejb(a.r,b,n);f=null;i=JD(Pud(b,Jhd),278);i?(f=i):(f=(Bjd(),yjd));l=f;if(l==(Bjd(),yjd)){g=null;c=JD(bjb(a.b,m),278);c?(g=c):(g=xjd);l=g}k=JD(ejb(a.b,b,l),278);return k} +function sqe(a){var b,c,d,e,f;d=a.length;b=new Ygb;f=0;while(f=40;g&&YGb(a);PGb(a);OGb(a);c=SGb(a);d=0;while(!!c&&d0&&Qtb(a.g,f)}else{a.d[g]-=j+1;a.d[g]<=0&&a.a[g]>0&&Qtb(a.f,f)}}}}} +function _Rc(a,b,c,d){var e,f,g,h,i,j,k;i=new Yfd(c,d);Vfd(i,JD(lNb(b,(MWc(),mWc)),8));for(k=Wtb(b.b,0);k.b!=k.d.c;){j=JD(iub(k),40);Gfd(j.e,i);Qtb(a.b,j)}for(h=JD(PBb(RBb(new gCb(null,new Wvb(b.a,16))),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[(CAb(),AAb)]))),16).Jc();h.Ob();){g=JD(h.Pb(),65);for(f=Wtb(g.a,0);f.b!=f.d.c;){e=JD(iub(f),8);e.a+=i.a;e.b+=i.b}Qtb(a.a,g)}} +function GSc(a,b){var c,d,e,f;if(0<(RD(a,18)?JD(a,18).gc():Br(a.Jc()))){e=b;if(1=0&&i1)&&b==1&&JD(a.a[a.b],9).k==(UYb(),OYb)){x7b(JD(a.a[a.b],9),(Lkd(),Hkd))}else if(d&&(!c||(a.c-a.b&a.a.length-1)>1)&&b==1&&JD(a.a[a.c-1&a.a.length-1],9).k==(UYb(),OYb)){x7b(JD(a.a[a.c-1&a.a.length-1],9),(Lkd(),Ikd))}else if((a.c-a.b&a.a.length-1)==2){x7b(JD(vlb(a),9),(Lkd(),Hkd));x7b(JD(vlb(a),9),Ikd)}else{u7b(a,e)}qlb(a)} +function $Dc(a){var b,c,d,e,f,g,h,i;i=new Yrb;b=new cGb;for(g=a.Jc();g.Ob();){e=JD(g.Pb(),9);h=GGb(HGb(new IGb,e),b);wsb(i.f,e,h)}for(f=a.Jc();f.Ob();){e=JD(f.Pb(),9);for(d=new Yr(Dr(BYb(e).a.Jc(),new Dl));Wr(d);){c=JD(Xr(d),17);if(vWb(c)){continue}UFb(XFb(WFb(VFb(YFb(new ZFb,$wnd.Math.max(1,JD(lNb(c,($xc(),lxc)),15).a)),1),JD(bjb(i,c.c.i),124)),JD(bjb(i,c.d.i),124)))}}return b} +function BEc(a,b,c,d){var e,f,g,h,i,j,k,l,m,n;GEc(a,b,c);f=b[c];n=d?(mmd(),lmd):(mmd(),Tld);if(CEc(b.length,c,d)){e=b[d?c-1:c+1];xEc(a,e,d?(bAc(),_zc):(bAc(),$zc));for(i=f,k=0,m=i.length;kf*2){k=new Mod(l);j=Hod(g)/God(g);i=vod(k,b,new aZb,c,d,e,j);Gfd(Pfd(k.e),i);l.c.length=0;f=0;nDb(l.c,k);nDb(l.c,g);f=Hod(k)*God(k)+Hod(g)*God(g)}else{nDb(l.c,g);f+=Hod(g)*God(g)}}return l} +function iac(a,b){var c,d,e,f,g,h,i;b.Tg('Port order processing',1);i=JD(lNb(a,($xc(),hxc)),421);for(d=new Hmb(a.b);d.ac?b:c;j<=l;++j){if(j==c){h=d++}else{f=e[j];k=o.$l(f.Jk());j==b&&(i=j==l&&!k?d-1:d);k&&++d}}m=JD(wJd(a,b,c),75);h!=i&&cXd(a,new a2d(a.e,7,g,zfb(h),n.kd(),i));return m}}}else{return JD(UFd(a,b,c),75)}return JD(wJd(a,b,c),75)} +function rGc(a,b){var c,d,e,f,g,h,i,j,k,l;l=0;f=new Dlb;olb(f,b);while(f.b!=f.c){i=JD(zlb(f),218);j=0;k=JD(lNb(b.j,($xc(),Avc)),269);JD(lNb(b.j,tvc),329);g=Reb(MD(lNb(b.j,nvc)));h=Reb(MD(lNb(b.j,ovc)));if(k!=(Mzc(),Jzc)){j+=g*sGc(b.j,i.e,k);j+=h*tGc(b.j,i.e)}l+=jIc(i.d,i.e)+j;for(e=new Hmb(i.b);e.a=0){h=jD(a,g);if(h){j<22?(i.l|=1<>>1;g.m=k>>>1|(l&1)<<21;g.l=m>>>1|(k&1)<<21;--j}c&&fD(i);if(f){if(d){YC=pD(a);e&&(YC=vD(YC,(ED(),CD)))}else{YC=_C(a.l,a.m,a.h)}}return i} +function wEc(a,b){var c,d,e,f,g,h,i,j,k,l;j=a.e[b.c.p][b.p]+1;i=b.c.a.c.length+1;for(h=new Hmb(a.a);h.a0&&(RDb(0,a.length),a.charCodeAt(0)==45||(RDb(0,a.length),a.charCodeAt(0)==43))?1:0;for(d=g;dc){throw Icb(new agb(nve+a+'"'))}return h} +function Nkc(a){var b,c,d,e,f,g,h;g=new aub;for(f=new Hmb(a.a);f.a=a.length){c.o=0;return true}switch(pgb(a,b[0])){case 43:e=1;break;case 45:e=-1;break;default:c.o=0;return true;}++b[0];f=b[0];g=zA(a,b);if(g==0&&b[0]==f){return false}if(b[0]h){h=e;k.c.length=0}e==h&&Ylb(k,new ard(c.c.i,c))}Fnb();gmb(k,a.c);Xlb(a.b,i.p,k)}}} +function GNc(a,b){var c,d,e,f,g,h,i,j,k;for(g=new Hmb(b.b);g.ah){h=e;k.c.length=0}e==h&&Ylb(k,new ard(c.d.i,c))}Fnb();gmb(k,a.c);Xlb(a.f,i.p,k)}}} +function L$b(a){var b,c,d,e,f,g,h;f=Tzd(a);for(e=new fKd((!a.e&&(a.e=new Wge(N3,a,7,4)),a.e));e.e!=e.i.gc();){d=JD(dKd(e),85);h=EEd(JD(SFd((!d.c&&(d.c=new Wge(L3,d,5,8)),d.c),0),84));if(!PEd(h,f)){return true}}for(c=new fKd((!a.d&&(a.d=new Wge(N3,a,8,5)),a.d));c.e!=c.i.gc();){b=JD(dKd(c),85);g=EEd(JD(SFd((!b.b&&(b.b=new Wge(L3,b,4,7)),b.b),0),84));if(!PEd(g,f)){return true}}return false} +function r_b(a){var b,c,d,e,f;d=JD(lNb(a,(Krc(),hrc)),26);f=JD(Pud(d,($xc(),Nwc)),182).Gc((Vmd(),Umd));if(!a.e){e=JD(lNb(a,Rqc),22);b=new Yfd(a.f.a+a.d.b+a.d.c,a.f.b+a.d.d+a.d.a);if(e.Gc((Lpc(),Epc))){Rud(d,bxc,(xld(),sld));Rpd(d,b.a,b.b,false,true)}else{Odb(LD(Pud(d,Owc)))||Rpd(d,b.a,b.b,true,true)}}f?Rud(d,Nwc,Crb(Umd)):Rud(d,Nwc,(c=JD(teb(N2),10),new Krb(c,JD(kDb(c,c.length),10),0)))} +function bSc(a,b){var c,d,e,f,g,h,i,j;j=LD(lNb(b,(DXc(),tXc)));if(j==null||(KDb(j),j)){$Rc(a,b);e=new imb;for(i=Wtb(b.b,0);i.b!=i.d.c;){g=JD(iub(i),40);c=ZRc(a,g,null);if(c){jNb(c,b);nDb(e.c,c)}}a.a=null;a.b=null;if(e.c.length>1){for(d=new Hmb(e);d.a=0&&h!=c){f=new L1d(a,1,h,g,null);!d?(d=f):d.lj(f)}if(c>=0){f=new L1d(a,1,c,h==c?g:null,b);!d?(d=f):d.lj(f)}}return d} +function hQd(a){var b,c,d;if(a.b==null){d=new Xgb;if(a.i!=null){Ugb(d,a.i);d.a+=':'}if((a.f&256)!=0){if((a.f&256)!=0&&a.a!=null){uQd(a.i)||(d.a+='//',d);Ugb(d,a.a)}if(a.d!=null){d.a+='/';Ugb(d,a.d)}(a.f&16)!=0&&(d.a+='/',d);for(b=0,c=a.j.length;bm){return false}l=(i=z6c(d,m,false),i.a);if(k+h+l<=b.b){x6c(c,f-c.s);c.c=true;x6c(d,f-c.s);B6c(d,c.s,c.t+c.d+h);d.k=true;J6c(c.q,d);n=true;if(e){j7c(b,d);d.j=b;if(a.c.length>g){m7c((JDb(g,a.c.length),JD(a.c[g],186)),d);(JDb(g,a.c.length),JD(a.c[g],186)).a.c.length==0&&cmb(a,g)}}}return n} +function y9b(a,b){var c,d,e,f,g,h;b.Tg('Partition midprocessing',1);e=new Np;VBb(SBb(new gCb(null,new Wvb(a.a,16)),new C9b),new E9b(e));if(e.d==0){return}h=JD(PBb(cCb((f=e.i,new gCb(null,(!f?(e.i=new xf(e,e.c)):f).Lc()))),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[(CAb(),AAb)]))),16);d=h.Jc();c=JD(d.Pb(),15);while(d.Ob()){g=JD(d.Pb(),15);x9b(JD(Qc(e,c),22),JD(Qc(e,g),22));c=g}b.Ug()} +function ixd(a,b){var c,d,e,f,g;if(a.Ab){if(a.Ab){g=a.Ab.i;if(g>0){e=JD(a.Ab.g,1995);if(b==null){for(f=0;fc.s&&hi+o){p=l.g+m.g;m.a=(m.g*m.a+l.g*l.a)/p;m.g=p;l.f=m;c=true}}f=h;l=m}}return c} +function QUc(a,b,c){var d,e,f,g,h,i,j,k;c.Tg(zCe,1);hjb(a.b);hjb(a.a);h=null;f=Wtb(b.b,0);while(!h&&f.b!=f.d.c){j=JD(iub(f),40);Odb(LD(lNb(j,(MWc(),JWc))))&&(h=j)}i=new aub;Ttb(i,h,i.c.b,i.c);PUc(a,i);for(k=Wtb(b.b,0);k.b!=k.d.c;){j=JD(iub(k),40);g=OD(lNb(j,(MWc(),wWc)));e=cjb(a.b,g)!=null?JD(cjb(a.b,g),15).a:0;oNb(j,rWc,zfb(e));d=1+(cjb(a.a,g)!=null?JD(cjb(a.a,g),15).a:0);oNb(j,pWc,zfb(d))}c.Ug()} +function Pgd(a){kdd(a,new vcd(Gcd(Dcd(Fcd(Ecd(new Icd,zEe),'ELK Box'),'Algorithm for packing of unconnected boxes, i.e. graphs without edges.'),new Sgd)));idd(a,zEe,vxe,Lgd);idd(a,zEe,qxe,15);idd(a,zEe,pxe,zfb(0));idd(a,zEe,AEe,mEd(Fgd));idd(a,zEe,Cxe,mEd(Hgd));idd(a,zEe,Bxe,mEd(Jgd));idd(a,zEe,sxe,yEe);idd(a,zEe,wxe,mEd(Ggd));idd(a,zEe,Vxe,mEd(Igd));idd(a,zEe,BEe,mEd(Dgd));idd(a,zEe,FBe,mEd(Egd))} +function DXb(a,b){var c,d,e,f,g,h,i,j,k;e=a.i;g=e.o.a;f=e.o.b;if(g<=0&&f<=0){return mmd(),kmd}j=a.n.a;k=a.n.b;h=a.o.a;c=a.o.b;switch(b.g){case 2:case 1:if(j<0){return mmd(),lmd}else if(j+h>g){return mmd(),Tld}break;case 4:case 3:if(k<0){return mmd(),Uld}else if(k+c>f){return mmd(),jmd}}i=(j+h/2)/g;d=(k+c/2)/f;return i+d<=1&&i-d<=0?(mmd(),lmd):i+d>=1&&i-d>=0?(mmd(),Tld):d<0.5?(mmd(),Uld):(mmd(),jmd)} +function mHb(a,b,c,d,e,f,g){var h,i,j,k,l,m;m=new zfd;for(j=b.Jc();j.Ob();){h=JD(j.Pb(),837);for(l=new Hmb(h.Pf());l.a0){if(h.a){j=h.b.Kf().b;if(e>j){if(a.v||h.c.d.c.length==1){g=(e-j)/2;h.d.d=g;h.d.a=g}else{c=JD(amb(h.c.d,0),187).Kf().b;d=(c-j)/2;h.d.d=$wnd.Math.max(0,d);h.d.a=e-d-j}}}else{h.d.a=a.t+e}}else if(Nld(a.u)){f=Jpd(h.b);f.d<0&&(h.d.d=-f.d);f.d+f.a>h.b.Kf().b&&(h.d.a=f.d+f.a-h.b.Kf().b)}}} +function ZOb(){ZOb=ndb;MOb=new qEd((gjd(),Aid),zfb(1));SOb=new qEd(Qid,80);ROb=new qEd(Jid,5);yOb=new qEd(ihd,nxe);NOb=new qEd(Bid,zfb(1));QOb=new qEd(Eid,(Ndb(),true));JOb=new bZb(50);IOb=new qEd(cid,JOb);AOb=Hhd;KOb=qid;zOb=new qEd(uhd,false);HOb=bid;FOb=Xhd;GOb=$hd;EOb=Vhd;DOb=Thd;LOb=uid;COb=(nOb(),gOb);TOb=lOb;BOb=fOb;OOb=iOb;POb=kOb;WOb=Xid;YOb=_id;VOb=Wid;UOb=Vid;XOb=(rnd(),ond);new qEd(Yid,XOb)} +function NC(a,b){var c;switch(PC(a)){case 6:return VD(b);case 7:return TD(b);case 8:return SD(b);case 3:return Array.isArray(b)&&(c=PC(b),!(c>=14&&c<=16));case 11:return b!=null&&typeof b===kte;case 12:return b!=null&&(typeof b===gte||typeof b==kte);case 0:return ID(b,a.__elementTypeId$);case 2:return WD(b)&&!(b.Rm===rdb);case 1:return WD(b)&&!(b.Rm===rdb)||ID(b,a.__elementTypeId$);default:return true;}} +function IKb(a){var b,c,d,e;d=a.o;rKb();if(a.A.dc()||pb(a.A,qKb)){e=d.a}else{a.D?(e=$wnd.Math.max(d.a,zIb(a.f))):(e=zIb(a.f));if(a.A.Gc((Vmd(),Smd))&&!a.B.Gc((ind(),end))){e=$wnd.Math.max(e,zIb(JD($qb(a.p,(mmd(),Uld)),253)));e=$wnd.Math.max(e,zIb(JD($qb(a.p,jmd),253)))}b=tKb(a);!!b&&(e=$wnd.Math.max(e,b.a))}Odb(LD(a.e.Rf().mf((gjd(),Xhd))))?(d.a=$wnd.Math.max(d.a,e)):(d.a=e);c=a.f.i;c.c=0;c.b=e;AIb(a.f)} +function NMb(a,b){var c,d,e,f;d=$wnd.Math.min($wnd.Math.abs(a.c-(b.c+b.b)),$wnd.Math.abs(a.c+a.b-b.c));f=$wnd.Math.min($wnd.Math.abs(a.d-(b.d+b.a)),$wnd.Math.abs(a.d+a.a-b.d));c=$wnd.Math.abs(a.c+a.b/2-(b.c+b.b/2));if(c>a.b/2+b.b/2){return 1}e=$wnd.Math.abs(a.d+a.a/2-(b.d+b.a/2));if(e>a.a/2+b.a/2){return 1}if(c==0&&e==0){return 0}if(c==0){return f/e+1}if(e==0){return d/c+1}return $wnd.Math.min(d/c,f/e)+1} +function PPb(a,b){var c,d,e,f,g,h,i;f=0;h=0;i=0;for(e=new Hmb(a.f.e);e.a0&&a.d!=(_Pb(),$Pb)&&(h+=g*(d.d.a+a.a[b.a][d.a]*(b.d.a-d.d.a)/c));c>0&&a.d!=(_Pb(),YPb)&&(i+=g*(d.d.b+a.a[b.a][d.a]*(b.d.b-d.d.b)/c))}switch(a.d.g){case 1:return new Yfd(h/f,b.d.b);case 2:return new Yfd(b.d.a,i/f);default:return new Yfd(h/f,i/f);}} +function Kpd(a){var b,c,d,e,f,g;c=(!a.a&&(a.a=new VXd(K3,a,5)),a.a).i+2;g=new jmb(c);Ylb(g,new Yfd(a.j,a.k));VBb(new gCb(null,(!a.a&&(a.a=new VXd(K3,a,5)),new Wvb(a.a,16))),new fqd(g));Ylb(g,new Yfd(a.b,a.c));b=1;while(b0){qFb(i,false,(ojd(),kjd));qFb(i,true,ljd)}_lb(b.g,new Dfc(a,c));ejb(a.g,b,c)} +function _3c(){_3c=ndb;S3c=new pEd(yDe,(Ndb(),false));zfb(-1);K3c=new pEd(zDe,zfb(-1));zfb(-1);L3c=new pEd(ADe,zfb(-1));M3c=new pEd(BDe,false);N3c=new pEd(CDe,false);Z3c=(f5c(),d5c);Y3c=new pEd(DDe,Z3c);$3c=new pEd(EDe,-1);X3c=(E3c(),D3c);W3c=new pEd(FDe,X3c);V3c=new pEd(GDe,true);R3c=(J5c(),G5c);Q3c=new pEd(HDe,R3c);P3c=new pEd(IDe,false);zfb(1);O3c=new pEd(JDe,zfb(1));U3c=(i6c(),g6c);T3c=new pEd(KDe,U3c)} +function _fb(){_fb=ndb;var a;Xfb=WC(OC(cE,1),Pue,30,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]);Yfb=SC(cE,Pue,30,37,15,1);Zfb=WC(OC(cE,1),Pue,30,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]);$fb=SC(dE,rve,30,37,14,1);for(a=2;a<=36;a++){Yfb[a]=YD($wnd.Math.pow(a,Xfb[a]));$fb[a]=Ncb(Tte,Yfb[a])}} +function Gpd(a){var b;if((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a).i!=1){throw Icb(new hfb(nFe+(!a.a&&(a.a=new A3d(M3,a,6,6)),a.a).i))}b=new jgd;!!FEd(JD(SFd((!a.b&&(a.b=new Wge(L3,a,4,7)),a.b),0),84))&&xe(b,Hpd(a,FEd(JD(SFd((!a.b&&(a.b=new Wge(L3,a,4,7)),a.b),0),84)),false));!!FEd(JD(SFd((!a.c&&(a.c=new Wge(L3,a,5,8)),a.c),0),84))&&xe(b,Hpd(a,FEd(JD(SFd((!a.c&&(a.c=new Wge(L3,a,5,8)),a.c),0),84)),true));return b} +function VNc(a,b){var c,d,e,f,g;b.d?(e=a.a.c==(SMc(),RMc)?yYb(b.b):BYb(b.b)):(e=a.a.c==(SMc(),QMc)?yYb(b.b):BYb(b.b));f=false;for(d=new Yr(Dr(e.a.Jc(),new Dl));Wr(d);){c=JD(Xr(d),17);g=Odb(a.a.f[a.a.g[b.b.p].p]);if(!g&&!vWb(c)&&c.c.i.c==c.d.i.c){continue}if(Odb(a.a.n[a.a.g[b.b.p].p])||Odb(a.a.n[a.a.g[b.b.p].p])){continue}f=true;if(csb(a.b,a.a.g[NNc(c,b.b).p])){b.c=true;b.a=c;return b}}b.c=f;b.a=null;return b} +function SHd(a,b,c){var d,e,f,g,h,i,j;d=c.gc();if(d==0){return false}else{if(a.Nj()){i=a.Oj();_Gd(a,b,c);g=d==1?a.Gj(3,null,c.Jc().Pb(),b,i):a.Gj(5,null,c,b,i);if(a.Kj()){h=d<100?null:new iJd(d);f=b+d;for(e=b;e0){for(g=0;g>16==-15&&a.Cb.Vh()&&rId(new M1d(a.Cb,9,13,c,a.c,dXd(m2d(JD(a.Cb,62)),a)))}else if(RD(a.Cb,88)){if(a.Db>>16==-23&&a.Cb.Vh()){b=a.c;RD(b,88)||(b=(HRd(),xRd));RD(c,88)||(c=(HRd(),xRd));rId(new M1d(a.Cb,9,10,c,b,dXd(rWd(JD(a.Cb,29)),a)))}}}}return a.c} +function SYd(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;if(b==c){return true}else{b=TYd(a,b);c=TYd(a,c);d=f0d(b);if(d){k=f0d(c);if(k!=d){if(!k){return false}else{i=d.kk();o=k.kk();return i==o&&i!=null}}else{g=(!b.d&&(b.d=new VXd(w6,b,1)),b.d);f=g.i;m=(!c.d&&(c.d=new VXd(w6,c,1)),c.d);if(f==m.i){for(j=0;j0;h=RFb(b,f);c?gGb(h.b,b):gGb(h.g,b);dGb(h).c.length==1&&(Ttb(d,h,d.c.b,d.c),true);e=new ard(f,b);olb(a.o,e);dmb(a.e.a,f)}} +function rMb(a,b){var c,d,e,f,g,h,i;d=$wnd.Math.abs(ufd(a.b).a-ufd(b.b).a);h=$wnd.Math.abs(ufd(a.b).b-ufd(b.b).b);e=0;i=0;c=1;g=1;if(d>a.b.b/2+b.b.b/2){e=$wnd.Math.min($wnd.Math.abs(a.b.c-(b.b.c+b.b.b)),$wnd.Math.abs(a.b.c+a.b.b-b.b.c));c=1-e/d}if(h>a.b.a/2+b.b.a/2){i=$wnd.Math.min($wnd.Math.abs(a.b.d-(b.b.d+b.b.a)),$wnd.Math.abs(a.b.d+a.b.a-b.b.d));g=1-i/h}f=$wnd.Math.min(c,g);return (1-f)*$wnd.Math.sqrt(d*d+h*h)} +function fRc(a){var b,c,d,e;hRc(a,a.e,a.f,(zRc(),xRc),true,a.c,a.i);hRc(a,a.e,a.f,xRc,false,a.c,a.i);hRc(a,a.e,a.f,yRc,true,a.c,a.i);hRc(a,a.e,a.f,yRc,false,a.c,a.i);gRc(a,a.c,a.e,a.f,a.i);d=new Qjb(a.i,0);while(d.b=65;c--){voe[c]=c-65<<24>>24}for(d=122;d>=97;d--){voe[d]=d-97+26<<24>>24}for(e=57;e>=48;e--){voe[e]=e-48+52<<24>>24}voe[43]=62;voe[47]=63;for(f=0;f<=25;f++)woe[f]=65+f&Bue;for(g=26,i=0;g<=51;++g,i++)woe[g]=97+i&Bue;for(a=52,h=0;a<=61;++a,h++)woe[a]=48+h&Bue;woe[62]=43;woe[63]=47} +function Bhb(a,b){var c,d,e,f,g,h;e=Ehb(a);h=Ehb(b);if(e==h){if(a.e==b.e&&a.a<54&&b.a<54){return a.fb.f?1:0}d=a.e-b.e;c=(a.d>0?a.d:$wnd.Math.floor((a.a-1)*xve)+1)-(b.d>0?b.d:$wnd.Math.floor((b.a-1)*xve)+1);if(c>d+1){return e}else if(c0&&(g=bib(g,Zib(d)));return Xhb(f,g)}}else return ej){m=0;n+=i+b;i=0}XTb(g,m,n);c=$wnd.Math.max(c,m+k.a);i=$wnd.Math.max(i,k.b);m+=k.a+b}return new Yfd(c+b,n+i+b)} +function Bpd(a,b){var c,d,e,f,g,h,i;if(!Tzd(a)){throw Icb(new kfb(mFe))}d=Tzd(a);f=d.g;e=d.f;if(f<=0&&e<=0){return mmd(),kmd}h=a.i;i=a.j;switch(b.g){case 2:case 1:if(h<0){return mmd(),lmd}else if(h+a.g>f){return mmd(),Tld}break;case 4:case 3:if(i<0){return mmd(),Uld}else if(i+a.f>e){return mmd(),jmd}}g=(h+a.g/2)/f;c=(i+a.f/2)/e;return g+c<=1&&g-c<=0?(mmd(),lmd):g+c>=1&&g-c>=0?(mmd(),Tld):c<0.5?(mmd(),Uld):(mmd(),jmd)} +function Kib(a,b,c,d,e){var f,g;f=Jcb(Kcb(b[0],yve),Kcb(d[0],yve));a[0]=ddb(f);f=$cb(f,32);if(c>=e){for(g=1;g0){e.b[g++]=0;e.b[g++]=f.b[0]-1}for(b=1;b0){jPc(i,i.d-e.d);e.c==(BPc(),zPc)&&hPc(i,i.a-e.d);i.d<=0&&i.i>0&&(Ttb(b,i,b.c.b,b.c),true)}}}for(f=new Hmb(a.f);f.a0){kPc(h,h.i-e.d);e.c==(BPc(),zPc)&&iPc(h,h.b-e.d);h.i<=0&&h.d>0&&(Ttb(c,h,c.c.b,c.c),true)}}}} +function qod(a,b,c,d,e){var f,g,h,i,j,k,l,m,n;Fnb();gmb(a,new Zod);g=Zu(a);n=new imb;m=new imb;h=null;i=0;while(g.b!=0){f=JD(g.b==0?null:(IDb(g.b!=0),$tb(g,g.a.a)),167);if(!h||Hod(h)*God(h)/21&&(i>Hod(h)*God(h)/2||g.b==0)){l=new Mod(m);k=Hod(h)/God(h);j=vod(l,b,new aZb,c,d,e,k);Gfd(Pfd(l.e),j);h=l;nDb(n.c,l);i=0;m.c.length=0}}}$lb(n,m);return n} +function ohb(a,b,c,d,e){nhb();var f,g,h,i,j,k,l;LDb(a,'src');LDb(c,'dest');l=rb(a);i=rb(c);GDb((l.i&4)!=0,'srcType is not an array');GDb((i.i&4)!=0,'destType is not an array');k=l.c;g=i.c;GDb((k.i&1)!=0?k==g:(g.i&1)==0,"Array types don't match");phb(a,b,c,d,e);if((k.i&1)==0&&l!=i){j=KD(a);f=KD(c);if(XD(a)===XD(c)&&bd;){VC(f,h,j[--b])}}else{for(h=d+e;d0);d.a.Xb(d.c=--d.b);l>m+i&&Jjb(d)}for(g=new Hmb(n);g.a0);d.a.Xb(d.c=--d.b)}}}} +function ere(){Tqe();var a,b,c,d,e,f;if(Dqe)return Dqe;a=(++Sqe,new vre(4));sre(a,fre(QJe,true));ure(a,fre('M',true));ure(a,fre('C',true));f=(++Sqe,new vre(4));for(d=0;d<11;d++){pre(f,d,d)}b=(++Sqe,new vre(4));sre(b,fre('M',true));pre(b,4448,4607);pre(b,65438,65439);e=(++Sqe,new gse(2));fse(e,a);fse(e,Cqe);c=(++Sqe,new gse(2));c.Hm(Yqe(f,fre('L',true)));c.Hm(b);c=(++Sqe,new Ire(3,c));c=(++Sqe,new Ore(e,c));Dqe=c;return Dqe} +function Cgb(a,b){var c,d,e,f,g,h,i,j;c=new RegExp(b,'g');i=SC(hJ,Ote,2,0,6,1);d=0;j=a;f=null;while(true){h=c.exec(j);if(h==null||j==''){i[d]=j;break}else{g=h.index;i[d]=(QDb(0,g,j.length),j.substr(0,g));j=Ggb(j,g+h[0].length,j.length);c.lastIndex=0;if(f==j){i[d]=(QDb(0,1,j.length),j.substr(0,1));j=(RDb(1,j.length+1),j.substr(1))}f=j;++d}}if(a.length>0){e=i.length;while(e>0&&i[e-1]==''){--e}ek&&(k=i);ij&&(j=k);n=($wnd.Math.log(j)-$wnd.Math.log(1))/b;f=$wnd.Math.exp(n);e=f;for(g=0;g0){l-=d[0]+a.c;d[0]+=a.c}d[2]>0&&(l-=d[2]+a.c);d[1]=$wnd.Math.max(d[1],l);FHb(a.a[1],c.c+b.b+d[0]-(d[1]-l)/2,d[1])}for(f=a.a,h=0,j=f.length;h0?(a.n.c.length-1)*a.i:0;for(d=new Hmb(a.n);d.a1){for(d=Wtb(e,0);d.b!=d.d.c;){c=JD(iub(d),235);f=0;for(i=new Hmb(c.e);i.a0){b[0]+=a.c;l-=b[0]}b[2]>0&&(l-=b[2]+a.c);b[1]=$wnd.Math.max(b[1],l);GHb(a.a[1],d.d+c.d+b[0]-(b[1]-l)/2,b[1])}else{o=d.d+c.d;n=d.a-c.d-c.a;for(g=a.a,i=0,k=g.length;i=b.o&&c.f<=b.f||b.a*0.5<=c.f&&b.a*1.5>=c.f){g=JD(amb(b.n,b.n.c.length-1),208);if(g.e+g.d+c.g+e<=d&&(f=JD(amb(b.n,b.n.c.length-1),208),f.f-a.f+c.f<=a.b||a.a.c.length==1)){r6c(b,c);return true}else if(b.s+c.g<=d&&b.t+b.d+c.f+e<=a.f+a.b){Ylb(b.b,c);h=JD(amb(b.n,b.n.c.length-1),208);Ylb(b.n,new I6c(b.s,h.f+h.a+b.i,b.i));D6c(JD(amb(b.n,b.n.c.length-1),208),c);t6c(b,c);return true}}return false} +function bee(a,b,c,d){var e,f,g,h,i;i=nie(a.e.Ah(),b);e=JD(a.g,122);lie();if(JD(b,69).vk()){for(g=0;g0||Ty(e.b.d,a.b.d+a.b.a)==0&&d.b<0||Ty(e.b.d+e.b.a,a.b.d)==0&&d.b>0){h=0;break}}else{h=$wnd.Math.min(h,oMb(a,e,d))}h=$wnd.Math.min(h,eMb(a,f,h,d))}return h} +function ypd(a,b){var c,d,e,f,g,h,i;if(a.b<2){throw Icb(new hfb('The vector chain must contain at least a source and a target point.'))}e=(IDb(a.b!=0),JD(a.a.a.c,8));Uwd(b,e.a,e.b);i=new oKd((!b.a&&(b.a=new VXd(K3,b,5)),b.a));g=Wtb(a,1);while(g.a=0&&f!=c){throw Icb(new hfb(FGe))}}e=0;for(i=0;iReb(uFc(g.g,g.d[0]).a)){IDb(i.b>0);i.a.Xb(i.c=--i.b);Pjb(i,g);e=true}else if(!!h.e&&h.e.gc()>0){f=(!h.e&&(h.e=new imb),h.e).Kc(b);j=(!h.e&&(h.e=new imb),h.e).Kc(c);if(f||j){(!h.e&&(h.e=new imb),h.e).Ec(g);++g.c}}}e||(nDb(d.c,g),true)} +function b0c(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;l=a.a.i+a.a.g/2;m=a.a.i+a.a.g/2;o=b.i+b.g/2;q=b.j+b.f/2;h=new Yfd(o,q);j=JD(Pud(b,(gjd(),zid)),8);j.a=j.a+l;j.b=j.b+m;f=(h.b-j.b)/(h.a-j.a);d=h.b-f*h.a;p=c.i+c.g/2;r=c.j+c.f/2;i=new Yfd(p,r);k=JD(Pud(c,zid),8);k.a=k.a+l;k.b=k.b+m;g=(i.b-k.b)/(i.a-k.a);e=i.b-g*i.a;n=(d-e)/(g-f);if(j.a>>0,'0'+b.toString(16));d='\\x'+Ggb(c,c.length-2,c.length)}else if(a>=tve){c=(b=a>>>0,'0'+b.toString(16));d='\\v'+Ggb(c,c.length-6,c.length)}else d=''+String.fromCharCode(a&Bue);}return d} +function z7b(a,b){var c,d,e,f,g,h,i,j,k;for(f=new Hmb(a.b);f.ac){b.Ug();return}switch(JD(lNb(a,($xc(),Txc)),350).g){case 2:f=new anc;break;case 0:f=new Rlc;break;default:f=new dnc;}d=f.mg(a,e);if(!f.ng()){switch(JD(lNb(a,Zxc),351).g){case 2:d=mnc(e,d);break;case 1:d=knc(e,d);}}gnc(a,e,d);b.Ug()} +function eB(a,b){var c,d,e,f,g,h,i,j;b%=24;if(a.q.getHours()!=b){d=new $wnd.Date(a.q.getTime());d.setDate(d.getDate()+1);h=a.q.getTimezoneOffset()-d.getTimezoneOffset();if(h>0){i=h/60|0;j=h%60;e=a.q.getDate();c=a.q.getHours();c+i>=24&&++e;f=new $wnd.Date(a.q.getFullYear(),a.q.getMonth(),e,b+i,a.q.getMinutes()+j,a.q.getSeconds(),a.q.getMilliseconds());a.q.setTime(f.getTime())}}g=a.q.getTime();a.q.setTime(g+3600000);a.q.getHours()!=b&&a.q.setTime(g)} +function pGc(a,b){var c,d,e,f;Rvb(a.d,a.e);a.c.a.$b();if(Reb(MD(lNb(b.j,($xc(),nvc))))!=0||Reb(MD(lNb(b.j,nvc)))!=0){c=dCe;XD(lNb(b.j,Avc))!==XD((Mzc(),Jzc))&&oNb(b.j,(Krc(),Qqc),(Ndb(),true));f=JD(lNb(b.j,Ixc),15).a;for(e=0;ee&&++j;Ylb(g,(JDb(h+j,b.c.length),JD(b.c[h+j],15)));i+=(JDb(h+j,b.c.length),JD(b.c[h+j],15)).a-d;++c;while(c=q&&a.e[i.p]>o*a.b||t>=c*q){nDb(m.c,h);h=new imb;xe(g,f);f.a.$b();j-=k;n=$wnd.Math.max(n,j*a.b+p);j+=t;s=t;t=0;k=0;p=0}}return new ard(n,m)} +function nWd(a){var b,c,d,e,f,g,h;if(!a.d){h=new tZd;b=gWd;f=b.a.yc(a,b);if(f==null){for(d=new fKd(xWd(a));d.e!=d.i.gc();){c=JD(dKd(d),29);$Ed(h,nWd(c))}b.a.Ac(a)!=null;b.a.gc()==0&&undefined}g=h.i;for(e=(!a.q&&(a.q=new A3d(A6,a,11,10)),new fKd(a.q));e.e!=e.i.gc();++g){JD(dKd(e),403)}$Ed(h,(!a.q&&(a.q=new A3d(A6,a,11,10)),a.q));XFd(h);a.d=new LYd((JD(SFd(vWd((jRd(),iRd).o),9),19),h.i),h.g);a.e=JD(h.g,678);a.e==null&&(a.e=hWd);wWd(a).b&=-17}return a.d} +function iee(a,b,c,d){var e,f,g,h,i,j;j=nie(a.e.Ah(),b);i=0;e=JD(a.g,122);lie();if(JD(b,69).vk()){for(g=0;g1||o==-1){l=JD(p,72);m=JD(k,72);if(l.dc()){m.$b()}else{g=!!X3d(b);f=0;for(h=a.a?l.Jc():l.Gi();h.Ob();){j=JD(h.Pb(),57);e=JD(htb(a,j),57);if(!e){if(a.b&&!g){m.Ei(f,j);++f}}else{if(g){i=m.bd(e);i==-1?m.Ei(f,e):f!=i&&m.Si(f,e)}else{m.Ei(f,e)}++f}}}}else{if(p==null){k.Wb(null)}else{e=htb(a,p);e==null?a.b&&!X3d(b)&&k.Wb(p):k.Wb(e)}}}}} +function B3b(a,b){var c,d,e,f,g,h,i,j;c=new I3b;for(e=new Yr(Dr(yYb(b).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),17);if(vWb(d)){continue}h=d.c.i;if(C3b(h,z3b)){j=D3b(a,h,z3b,y3b);if(j==-1){continue}c.b=$wnd.Math.max(c.b,j);!c.a&&(c.a=new imb);Ylb(c.a,h)}}for(g=new Yr(Dr(BYb(b).a.Jc(),new Dl));Wr(g);){f=JD(Xr(g),17);if(vWb(f)){continue}i=f.d.i;if(C3b(i,y3b)){j=D3b(a,i,y3b,z3b);if(j==-1){continue}c.d=$wnd.Math.max(c.d,j);!c.c&&(c.c=new imb);Ylb(c.c,i)}}return c} +function Y5b(a,b,c,d){var e,f,g,h,i,j,k;if(c.d.i==b.i){return}e=new KYb(a);IYb(e,(UYb(),PYb));oNb(e,(Krc(),hrc),c);oNb(e,($xc(),bxc),(xld(),sld));nDb(d.c,e);g=new sZb;qZb(g,e);rZb(g,(mmd(),lmd));h=new sZb;qZb(h,e);rZb(h,Tld);k=c.d;yWb(c,g);f=new BWb;jNb(f,c);oNb(f,nwc,null);xWb(f,h);yWb(f,k);j=new Qjb(c.b,0);while(j.b1000000){throw Icb(new Adb('power of ten too big'))}if(a<=lte){return eib(dib(Qib[1],b),b)}d=dib(Qib[1],lte);e=d;c=Pcb(a-lte);b=YD(a%lte);while(Lcb(c,lte)>0){e=bib(e,d);c=adb(c,lte)}e=bib(e,dib(Qib[1],b));e=eib(e,lte);c=Pcb(a-lte);while(Lcb(c,lte)>0){e=eib(e,lte);c=adb(c,lte)}e=eib(e,b);return e} +function $2b(a){var b,c,d,e,f,g,h,i,j,k;for(i=new Hmb(a.a);i.aj&&d>j){k=h;j=Reb(b.p[h.p])+Reb(b.d[h.p])+h.o.b+h.d.a}else{e=false;c.$g()&&c.ah('bk node placement breaks on '+h+' which should have been after '+k);break}}if(!e){break}}c.$g()&&c.ah(b+' is feasible: '+e);return e} +function k9b(a,b,c,d){var e,f,g,h,i,j,k,l,m;f=new KYb(a);IYb(f,(UYb(),SYb));oNb(f,($xc(),bxc),(xld(),sld));e=0;if(b){g=new sZb;oNb(g,(Krc(),hrc),b);oNb(f,hrc,b.i);rZb(g,(mmd(),lmd));qZb(g,f);m=TXb(b.e);for(j=m,k=0,l=j.length;k0){if(e<0&&k.a){e=i;f=j[0];d=0}if(e>=0){h=k.b;if(i==e){h-=d++;if(h==0){return 0}}if(!EA(b,j,k,h,g)){i=e-1;j[0]=f;continue}}else{e=-1;if(!EA(b,j,k,0,g)){return 0}}}else{e=-1;if(pgb(k.c,0)==32){l=j[0];CA(b,j);if(j[0]>l){continue}}else if(Egb(b,k.c,j[0])){j[0]+=k.c.length;continue}return 0}}if(!uB(g,c)){return 0}return j[0]} +function RPb(a,b,c){var d,e,f,g,h,i,j,k,l,m;k=new tvb(new fQb(c));h=SC(Fcb,zwe,30,a.f.e.c.length,16,1);Zmb(h,h.length);c[b.a]=0;for(j=new Hmb(a.f.e);j.a=h.a){if(f.b>=h.b){d.a=h.a+(f.a-h.a)/2+e;d.b=h.b+(f.b-h.b)/2-e-a.e.b}else{d.a=h.a+(f.a-h.a)/2+e;d.b=f.b+(h.b-f.b)/2+e}}else{if(f.b>=h.b){d.a=f.a+(h.a-f.a)/2+e;d.b=h.b+(f.b-h.b)/2+e}else{d.a=f.a+(h.a-f.a)/2+e;d.b=f.b+(h.b-f.b)/2-e-a.e.b}}}} +function oWd(a){var b,c,d,e,f,g,h,i;if(!a.f){i=new $Yd;h=new $Yd;b=gWd;g=b.a.yc(a,b);if(g==null){for(f=new fKd(xWd(a));f.e!=f.i.gc();){e=JD(dKd(f),29);$Ed(i,oWd(e))}b.a.Ac(a)!=null;b.a.gc()==0&&undefined}for(d=(!a.s&&(a.s=new A3d(G6,a,21,17)),new fKd(a.s));d.e!=d.i.gc();){c=JD(dKd(d),179);RD(c,103)&&YEd(h,JD(c,19))}XFd(h);a.r=new qZd(a,(JD(SFd(vWd((jRd(),iRd).o),6),19),h.i),h.g);$Ed(i,a.r);XFd(i);a.f=new LYd((JD(SFd(vWd(iRd.o),5),19),i.i),i.g);wWd(a).b&=-3}return a.f} +function xxd(){xxd=ndb;vxd=WC(OC(_D,1),Aue,30,15,[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70]);wxd=new RegExp('[ \t\n\r\f]+');try{uxd=WC(OC(p7,1),rte,2076,0,[new a0d((OA(),QA("yyyy-MM-dd'T'HH:mm:ss'.'SSSZ",TA((SA(),SA(),RA))))),new a0d(QA("yyyy-MM-dd'T'HH:mm:ss'.'SSS",TA((null,RA)))),new a0d(QA("yyyy-MM-dd'T'HH:mm:ss",TA((null,RA)))),new a0d(QA("yyyy-MM-dd'T'HH:mm",TA((null,RA)))),new a0d(QA('yyyy-MM-dd',TA((null,RA))))])}catch(a){a=Hcb(a);if(!RD(a,80))throw Icb(a)}} +function Ijc(a){var b,c,d,e,f,g,h;c=null;h=null;d=JD(lNb(a.b,($xc(),$vc)),348);if(d==(tAc(),rAc)){c=new imb;h=new imb}for(g=new Hmb(a.d);g.ac);return f} +function AGc(a,b){var c,d,e,f;e=Ovb(a.d,1)!=0;d=qGc(a,b);if(d==0&&Odb(LD(lNb(b.j,(Krc(),Qqc))))){return 0}!Odb(LD(lNb(b.j,(Krc(),Qqc))))&&!Odb(LD(lNb(b.j,wrc)))||XD(lNb(b.j,($xc(),Avc)))===XD((Mzc(),Jzc))?b.c.kg(b.e,e):(e=Odb(LD(lNb(b.j,Qqc))));IGc(a,b,e,true);Odb(LD(lNb(b.j,wrc)))&&oNb(b.j,wrc,(Ndb(),false));if(Odb(LD(lNb(b.j,Qqc)))){oNb(b.j,Qqc,(Ndb(),false));oNb(b.j,wrc,true)}c=qGc(a,b);do{DGc(a);if(c==0){return 0}e=!e;f=c;IGc(a,b,e,false);c=qGc(a,b)}while(f>c);return f} +function pQb(a,b,c){var d,e,f,g,h;d=JD(lNb(a,($xc(),Bvc)),22);c.a>b.a&&(d.Gc((_gd(),Vgd))?(a.c.a+=(c.a-b.a)/2):d.Gc(Xgd)&&(a.c.a+=c.a-b.a));c.b>b.b&&(d.Gc((_gd(),Zgd))?(a.c.b+=(c.b-b.b)/2):d.Gc(Ygd)&&(a.c.b+=c.b-b.b));if(JD(lNb(a,(Krc(),Rqc)),22).Gc((Lpc(),Epc))&&(c.a>b.a||c.b>b.b)){for(h=new Hmb(a.a);h.ab.a&&(d.Gc((_gd(),Vgd))?(a.c.a+=(c.a-b.a)/2):d.Gc(Xgd)&&(a.c.a+=c.a-b.a));c.b>b.b&&(d.Gc((_gd(),Zgd))?(a.c.b+=(c.b-b.b)/2):d.Gc(Ygd)&&(a.c.b+=c.b-b.b));if(JD(lNb(a,(Krc(),Rqc)),22).Gc((Lpc(),Epc))&&(c.a>b.a||c.b>b.b)){for(g=new Hmb(a.a);g.a=0&&l<=1&&m>=0&&m<=1?Gfd(new Yfd(a.a,a.b),Qfd(new Yfd(b.a,b.b),l)):null}} +function z6c(a,b,c){var d,e,f,g,h,i,j,k,l,m;f=0;g=a.t;e=0;d=0;i=0;m=0;l=0;if(c){a.n.c.length=0;Ylb(a.n,new I6c(a.s,a.t,a.i))}h=0;for(k=new Hmb(a.b);k.a0?a.i:0)>b&&i>0){f=0;g+=i+a.i;e=$wnd.Math.max(e,m);d+=i+a.i;i=0;m=0;if(c){++l;Ylb(a.n,new I6c(a.s,g,a.i))}h=0}m+=j.g+(h>0?a.i:0);i=$wnd.Math.max(i,j.f);c&&D6c(JD(amb(a.n,l),208),j);f+=j.g+(h>0?a.i:0);++h}e=$wnd.Math.max(e,m);d+=i;if(c){a.r=e;a.d=d;l7c(a.j)}return new Afd(a.s,a.t,e,d)} +function M$b(a){var b,c,d;c=XD(Pud(a,($xc(),Nvc)))===XD((koc(),hoc))||XD(Pud(a,Nvc))===XD(boc)||XD(Pud(a,Nvc))===XD(doc)||XD(Pud(a,Nvc))===XD(foc)||XD(Pud(a,Nvc))===XD(ioc)||XD(Pud(a,Nvc))===XD(joc);d=XD(Pud(a,wwc))===XD((Byc(),syc))||XD(Pud(a,wwc))===XD(uyc)||XD(Pud(a,vwc))===XD((Czc(),tzc))||XD(Pud(a,vwc))===XD((Czc(),uzc));b=XD(Pud(a,Avc))!==XD((Mzc(),Jzc))||Odb(LD(Pud(a,Cvc)))||XD(Pud(a,mvc))!==XD((tUb(),sUb))||Reb(MD(Pud(a,nvc)))!=0||Reb(MD(Pud(a,ovc)))!=0;return c||d||b} +function kWd(a){var b,c,d,e,f,g,h,i;if(!a.a){a.o=null;i=new cZd(a);b=new gZd;c=gWd;h=c.a.yc(a,c);if(h==null){for(g=new fKd(xWd(a));g.e!=g.i.gc();){f=JD(dKd(g),29);$Ed(i,kWd(f))}c.a.Ac(a)!=null;c.a.gc()==0&&undefined}for(e=(!a.s&&(a.s=new A3d(G6,a,21,17)),new fKd(a.s));e.e!=e.i.gc();){d=JD(dKd(e),179);RD(d,335)&&YEd(b,JD(d,38))}XFd(b);a.k=new lZd(a,(JD(SFd(vWd((jRd(),iRd).o),7),19),b.i),b.g);$Ed(i,a.k);XFd(i);a.a=new LYd((JD(SFd(vWd(iRd.o),4),19),i.i),i.g);wWd(a).b&=-2}return a.a} +function O_b(a){var b,c,d,e,f,g,h,i,j,k,l,m;h=a.d;l=JD(lNb(a,(Krc(),Irc)),16);b=JD(lNb(a,zqc),16);if(!l&&!b){return}f=Reb(MD(JAc(a,($xc(),qxc))));g=Reb(MD(JAc(a,rxc)));m=0;if(l){j=0;for(e=l.Jc();e.Ob();){d=JD(e.Pb(),9);j=$wnd.Math.max(j,d.o.b);m+=d.o.a}m+=f*(l.gc()-1);h.d+=j+g}c=0;if(b){j=0;for(e=b.Jc();e.Ob();){d=JD(e.Pb(),9);j=$wnd.Math.max(j,d.o.b);c+=d.o.a}c+=f*(b.gc()-1);h.a+=j+g}i=$wnd.Math.max(m,c);if(i>a.o.a){k=(i-a.o.a)/2;h.b=$wnd.Math.max(h.b,k);h.c=$wnd.Math.max(h.c,k)}} +function $de(a,b,c,d){var e,f,g,h,i,j,k;k=nie(a.e.Ah(),b);e=0;f=JD(a.g,122);i=null;lie();if(JD(b,69).vk()){for(h=0;hh?1:-1:Lib(a.a,b.a,f);if(e==-1){l=-i;k=g==i?Oib(b.a,h,a.a,f):Jib(b.a,h,a.a,f)}else{l=g;if(g==i){if(e==0){return Whb(),Vhb}k=Oib(a.a,f,b.a,h)}else{k=Jib(a.a,f,b.a,h)}}j=new jib(l,k.length,k);Yhb(j);return j} +function J$b(a,b){var c,d,e,f;f=E$b(b);!b.c&&(b.c=new A3d(R3,b,9,9));VBb(new gCb(null,(!b.c&&(b.c=new A3d(R3,b,9,9)),new Wvb(b.c,16))),new $$b(f));e=JD(lNb(f,(Krc(),Rqc)),22);D$b(b,e);if(e.Gc((Lpc(),Epc))){for(d=new fKd((!b.c&&(b.c=new A3d(R3,b,9,9)),b.c));d.e!=d.i.gc();){c=JD(dKd(d),125);O$b(a,b,f,c)}}JD(Pud(b,($xc(),Nwc)),182).gc()!=0&&A$b(b,f);Odb(LD(lNb(f,Uwc)))&&e.Ec(Jpc);mNb(f,pxc)&&hyc(new ryc(Reb(MD(lNb(f,pxc)))),f);XD(Pud(b,ewc))===XD((Bkd(),ykd))?K$b(a,b,f):I$b(a,b,f);return f} +function lse(a,b){var c,d,e,f,g,h,i;if(a==null){return null}f=a.length;if(f==0){return ''}i=SC(_D,Aue,30,f,15,1);QDb(0,f,a.length);QDb(0,f,i.length);ugb(a,0,f,i,0);c=null;h=b;for(e=0,g=0;e0?Ggb(c.a,0,f-1):''}}else{return !c?a:c.a}} +function PHc(a,b,c){var d,e,f;if(mNb(b,($xc(),qwc))&&(XD(lNb(b,qwc))===XD((Qrc(),Mrc))||XD(lNb(b,qwc))===XD(Orc))||mNb(c,qwc)&&(XD(lNb(c,qwc))===XD((Qrc(),Mrc))||XD(lNb(c,qwc))===XD(Orc))){return 0}d=xYb(b);e=OHc(a,b,c);if(e!=0){return e}if(mNb(b,(Krc(),grc))&&mNb(c,grc)){f=ofb(glc(b,c,d,JD(lNb(d,frc),15).a),glc(c,b,d,JD(lNb(d,frc),15).a));XD(lNb(d,tvc))===XD((bqc(),aqc))&&XD(lNb(b,vvc))!==XD(lNb(c,vvc))&&(f=0);if(f<0){QHc(a,b,c);return f}else if(f>0){QHc(a,c,b);return f}}return NHc(a,b,c)} +function g2c(a,b){var c,d,e,f,g,h,i,j,k,l,m;for(d=new Yr(Dr(DEd(b).a.Jc(),new Dl));Wr(d);){c=JD(Xr(d),85);if(!RD(SFd((!c.b&&(c.b=new Wge(L3,c,4,7)),c.b),0),193)){i=EEd(JD(SFd((!c.c&&(c.c=new Wge(L3,c,5,8)),c.c),0),84));if(!uwd(c)){g=b.i+b.g/2;h=b.j+b.f/2;k=i.i+i.g/2;l=i.j+i.f/2;m=new Wfd;m.a=k-g;m.b=l-h;f=new Yfd(m.a,m.b);efd(f,b.g,b.f);m.a-=f.a;m.b-=f.b;g=k-m.a;h=l-m.b;j=new Yfd(m.a,m.b);efd(j,i.g,i.f);m.a-=j.a;m.b-=j.b;k=g+m.a;l=h+m.b;e=MEd(c);Vwd(e,g);Wwd(e,h);Owd(e,k);Pwd(e,l);g2c(a,i)}}}} +function sre(a,b){var c,d,e,f,g;g=JD(b,137);tre(a);tre(g);if(g.b==null)return;a.c=true;if(a.b==null){a.b=SC(cE,Pue,30,g.b.length,15,1);ohb(g.b,0,a.b,0,g.b.length);return}f=SC(cE,Pue,30,a.b.length+g.b.length,15,1);for(c=0,d=0,e=0;c=a.b.length){f[e++]=g.b[d++];f[e++]=g.b[d++]}else if(d>=g.b.length){f[e++]=a.b[c++];f[e++]=a.b[c++]}else if(g.b[d]0?a.i:0)}++b}Be(a.n,i);a.d=c;a.r=d;a.g=0;a.f=0;a.e=0;a.o=ove;a.p=ove;for(f=new Hmb(a.b);f.a0){e=(!a.n&&(a.n=new A3d(P3,a,1,7)),JD(SFd(a.n,0),157)).a;!e||ehb(ehb((b.a+=' "',b),e),'"')}}else{ehb(ehb((b.a+=' "',b),d),'"')}c=(!a.b&&(a.b=new Wge(L3,a,4,7)),!(a.b.i<=1&&(!a.c&&(a.c=new Wge(L3,a,5,8)),a.c.i<=1)));c?(b.a+=' [',b):(b.a+=' ',b);ehb(b,Eb(new Gb,new fKd(a.b)));c&&(b.a+=']',b);b.a+=jye;c&&(b.a+='[',b);ehb(b,Eb(new Gb,new fKd(a.c)));c&&(b.a+=']',b);return b.a} +function X6b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;v=a.c;w=b.c;c=bmb(v.a,a,0);d=bmb(w.a,b,0);t=JD(DYb(a,(bAc(),$zc)).Jc().Pb(),12);C=JD(DYb(a,_zc).Jc().Pb(),12);u=JD(DYb(b,$zc).Jc().Pb(),12);D=JD(DYb(b,_zc).Jc().Pb(),12);r=TXb(t.e);A=TXb(C.g);s=TXb(u.e);B=TXb(D.g);GYb(a,d,w);for(g=s,k=0,o=g.length;k0&&!!i[d]&&(o=DAc(a.b,i[d],e));p=$wnd.Math.max(p,e.c.c.b+o)}for(f=new Hmb(k.e);f.ak){new xPc((BPc(),APc),c,b,j-k)}else if(j>0&&k>0){new xPc((BPc(),APc),b,c,0);new xPc(APc,c,b,0)}}return g} +function LTc(a,b,c){var d,e,f;a.a=new imb;for(f=Wtb(b.b,0);f.b!=f.d.c;){e=JD(iub(f),40);while(JD(lNb(e,(DXc(),BXc)),15).a>a.a.c.length-1){Ylb(a.a,new ard(dCe,xCe))}d=JD(lNb(e,BXc),15).a;if(c==(ojd(),kjd)||c==ljd){e.e.aReb(MD(JD(amb(a.a,d),49).b))&&_qd(JD(amb(a.a,d),49),e.e.a+e.f.a)}else{e.e.bReb(MD(JD(amb(a.a,d),49).b))&&_qd(JD(amb(a.a,d),49),e.e.b+e.f.b)}}} +function HXb(a,b,c,d){var e,f,g,h,i,j,k;f=JXb(d);h=Odb(LD(lNb(d,($xc(),Cwc))));if((h||Odb(LD(lNb(a,iwc))))&&!zld(JD(lNb(a,bxc),102))){e=rmd(f);i=RXb(a,c,c==(bAc(),_zc)?e:omd(e))}else{i=new sZb;qZb(i,a);if(b){k=i.n;k.a=b.a-a.n.a;k.b=b.b-a.n.b;Hfd(k,0,0,a.o.a,a.o.b);rZb(i,DXb(i,f))}else{e=rmd(f);rZb(i,c==(bAc(),_zc)?e:omd(e))}g=JD(lNb(d,(Krc(),Rqc)),22);j=i.j;switch(f.g){case 2:case 1:(j==(mmd(),Uld)||j==jmd)&&g.Ec((Lpc(),Ipc));break;case 4:case 3:(j==(mmd(),Tld)||j==lmd)&&g.Ec((Lpc(),Ipc));}}return i} +function uRb(a,b){var c,d,e,f,g,h;for(g=new Cjb((new tjb(a.f.b)).a);g.b;){f=Ajb(g);e=JD(f.jd(),591);if(b==1){if(e.yf()!=(ojd(),njd)&&e.yf()!=jjd){continue}}else{if(e.yf()!=(ojd(),kjd)&&e.yf()!=ljd){continue}}d=JD(JD(f.kd(),49).b,82);h=JD(JD(f.kd(),49).a,194);c=h.c;switch(e.yf().g){case 2:d.g.c=a.e.a;d.g.b=$wnd.Math.max(1,d.g.b+c);break;case 1:d.g.c=d.g.c+c;d.g.b=$wnd.Math.max(1,d.g.b-c);break;case 4:d.g.d=a.e.b;d.g.a=$wnd.Math.max(1,d.g.a+c);break;case 3:d.g.d=d.g.d+c;d.g.a=$wnd.Math.max(1,d.g.a-c);}}} +function DMc(a,b){var c,d,e,f,g,h,i,j,k,l;b.Tg('Simple node placement',1);l=JD(lNb(a,(Krc(),yrc)),316);h=0;for(f=new Hmb(a.b);f.a1){throw Icb(new hfb(aJe))}if(!i){f=mie(b,d.Jc().Pb());g.Ec(f)}}return ZEd(a,eee(a,b,c),g)} +function Dee(a,b,c){var d,e,f,g,h,i,j,k;if(oie(a.e,b)){i=(lie(),JD(b,69).vk()?new mje(b,a):new Cie(b,a));_de(i.c,i.b);yie(i,JD(c,18))}else{k=nie(a.e.Ah(),b);d=JD(a.g,122);for(g=0;g'}i!=null&&(b.a+=''+i,b)}else if(a.e){h=a.e.zb;h!=null&&(b.a+=''+h,b)}else{b.a+='?';if(a.b){b.a+=' super ';p0d(a.b,b)}else{if(a.f){b.a+=' extends ';p0d(a.f,b)}}}} +function S8d(a){a.b=null;a.a=null;a.o=null;a.q=null;a.v=null;a.w=null;a.B=null;a.p=null;a.Q=null;a.R=null;a.S=null;a.T=null;a.U=null;a.V=null;a.W=null;a.bb=null;a.eb=null;a.ab=null;a.H=null;a.db=null;a.c=null;a.d=null;a.f=null;a.n=null;a.r=null;a.s=null;a.u=null;a.G=null;a.J=null;a.e=null;a.j=null;a.i=null;a.g=null;a.k=null;a.t=null;a.F=null;a.I=null;a.L=null;a.M=null;a.O=null;a.P=null;a.$=null;a.N=null;a.Z=null;a.cb=null;a.K=null;a.D=null;a.A=null;a.C=null;a._=null;a.fb=null;a.X=null;a.Y=null;a.gb=false;a.hb=false} +function Fhb(a){var b,c,d,e;d=Hib((!a.c&&(a.c=vib(Pcb(a.f))),a.c),0);if(a.e==0||a.a==0&&a.f!=-1&&a.e<0){return d}b=Ehb(a)<0?1:0;c=a.e;e=(d.length+1+$wnd.Math.abs(YD(a.e)),new jhb);b==1&&(e.a+='-',e);if(a.e>0){c-=d.length-b;if(c>=0){e.a+='0.';for(;c>thb.length;c-=thb.length){fhb(e,thb)}ghb(e,thb,YD(c));ehb(e,(RDb(b,d.length+1),d.substr(b)))}else{c=b-c;ehb(e,Ggb(d,b,YD(c)));e.a+='.';ehb(e,Fgb(d,YD(c)))}}else{ehb(e,(RDb(b,d.length+1),d.substr(b)));for(;c<-thb.length;c+=thb.length){fhb(e,thb)}ghb(e,thb,YD(-c))}return e.a} +function XKc(a){var b,c,d,e,f,g,h,i,j;if(a.k!=(UYb(),RYb)){return false}if(a.j.c.length<=1){return false}f=JD(lNb(a,($xc(),bxc)),102);if(f==(xld(),sld)){return false}e=(Yyc(),(!a.q?(Fnb(),Fnb(),Dnb):a.q)._b(Kwc)?(d=JD(lNb(a,Kwc),203)):(d=JD(lNb(xYb(a),Lwc),203)),d);if(e==Wyc){return false}if(!(e==Vyc||e==Uyc)){g=Reb(MD(JAc(a,Hxc)));b=JD(lNb(a,Gxc),140);!b&&(b=new qYb(g,g,g,g));j=CYb(a,(mmd(),lmd));i=b.d+b.a+(j.gc()-1)*g;if(i>a.o.b){return false}c=CYb(a,Tld);h=b.d+b.a+(c.gc()-1)*g;if(h>a.o.b){return false}}return true} +function pOc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;b.Tg('Orthogonal edge routing',1);j=Reb(MD(lNb(a,($xc(),Exc))));c=Reb(MD(lNb(a,uxc)));d=Reb(MD(lNb(a,xxc)));m=new nQc(0,c);q=0;g=new Qjb(a.b,0);h=null;k=null;i=null;l=null;do{k=g.b0){n=(o-1)*c;!!h&&(n+=d);!!k&&(n+=d);n0}else{h=JD(lNb(a.c.i,Vwc),15).a;f=JD(PBb(SBb(b.Mc(),new $9b(h)),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[(CAb(),AAb)]))),16);g=new aub;k=new esb;Qtb(g,a.c.i);bsb(k,a.c.i);while(g.b!=0){c=JD(g.b==0?null:(IDb(g.b!=0),$tb(g,g.a.a)),9);if(f.Gc(c)){return true}for(e=new Yr(Dr(BYb(c).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),17);i=d.d.i;if(!k.a._b(i)){k.a.yc(i,k);Ttb(g,i,g.c.b,g.c)}}}return false}} +function A5c(a,b,c){var d,e,f,g,h,i,j,k,l;l=new imb;k=new o7c(0,c);f=0;j7c(k,new C6c(0,0,k,c));e=0;for(j=new fKd(a);j.e!=j.i.gc();){i=JD(dKd(j),26);d=JD(amb(k.a,k.a.c.length-1),173);h=e+i.g+(JD(amb(k.a,0),173).b.c.length==0?0:c);if(h>b||Odb(LD(Pud(i,(D4c(),i4c))))){e=0;f+=k.b+c;nDb(l.c,k);k=new o7c(f,c);d=new C6c(0,k.f,k,c);j7c(k,d);e=0}if(d.b.c.length==0||!Odb(LD(Pud(Czd(i),(D4c(),r4c))))&&(i.f>=d.o&&i.f<=d.f||d.a*0.5<=i.f&&d.a*1.5>=i.f)){r6c(d,i)}else{g=new C6c(d.s+d.r+c,k.f,k,c);j7c(k,g);r6c(g,i)}e=i.i+i.g}nDb(l.c,k);return l} +function qre(a){var b,c,d,e;if(a.b==null||a.b.length<=2)return;if(a.a)return;b=0;e=0;while(e=a.b[e+1]){e+=2}else if(c0){d=new kmb(JD(Qc(a.a,f),22));Fnb();gmb(d,new lWb(b));e=new Qjb(f.b,0);while(e.b0&&d>=-6){if(d>=0){hhb(f,c-YD(a.e),String.fromCharCode(46))}else{wdb(f,b-1,b-1,'0.');hhb(f,b+1,Pgb(thb,0,-YD(d)-1))}}else{if(c-b>=1){hhb(f,b,String.fromCharCode(46));++c}hhb(f,c,String.fromCharCode(69));d>0&&hhb(f,++c,String.fromCharCode(43));hhb(f,++c,''+edb(Pcb(d)))}a.g=f.a;return a.g} +function eKc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;d=Reb(MD(lNb(b,($xc(),Jwc))));v=JD(lNb(b,Ixc),15).a;m=4;e=3;w=20/v;n=false;i=0;g=lte;do{f=i!=1;l=i!=0;A=0;for(q=a.a,s=0,u=q.length;sv)){i=2;g=lte}else if(i==0){i=1;g=A}else{i=0;g=A}}else{n=A>=g||g-A=tve?Ugb(c,oqe(d)):Qgb(c,d&Bue);g=(++Sqe,new cse(10,null,0));jxb(a.a,g,h-1)}else{c=(g.Km().length+f,new Ygb);Ugb(c,g.Km())}if(b.e==0){d=b.Im();d>=tve?Ugb(c,oqe(d)):Qgb(c,d&Bue)}else{Ugb(c,b.Km())}JD(g,517).b=c.a} +function gnc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(c.dc()){return}h=0;m=0;d=c.Jc();o=JD(d.Pb(),15).a;while(h0?1:Rdb(isNaN(d),isNaN(0)))>=0^(null,Wy(hCe),($wnd.Math.abs(h)<=hCe||h==0||isNaN(h)&&isNaN(0)?0:h<0?-1:h>0?1:Rdb(isNaN(h),isNaN(0)))>=0)){return $wnd.Math.max(h,d)}Wy(hCe);if(($wnd.Math.abs(d)<=hCe||d==0||isNaN(d)&&isNaN(0)?0:d<0?-1:d>0?1:Rdb(isNaN(d),isNaN(0)))>0){return $wnd.Math.sqrt(h*h+d*d)}return -$wnd.Math.sqrt(h*h+d*d)} +function HKb(a){var b,c,d,e;e=a.o;rKb();if(a.A.dc()||pb(a.A,qKb)){b=e.b}else{a.D?(b=$wnd.Math.max(e.b,yIb(a.f))):(b=yIb(a.f));if(a.A.Gc((Vmd(),Smd))&&!a.B.Gc((ind(),end))){b=$wnd.Math.max(b,yIb(JD($qb(a.p,(mmd(),Tld)),253)));b=$wnd.Math.max(b,yIb(JD($qb(a.p,lmd),253)))}c=tKb(a);!!c&&(b=$wnd.Math.max(b,c.b));if(a.A.Gc(Tmd)){if(a.q==(xld(),tld)||a.q==sld){b=$wnd.Math.max(b,sHb(JD($qb(a.b,(mmd(),Tld)),127)));b=$wnd.Math.max(b,sHb(JD($qb(a.b,lmd),127)))}}}Odb(LD(a.e.Rf().mf((gjd(),Xhd))))?(e.b=$wnd.Math.max(e.b,b)):(e.b=b);d=a.f.i;d.d=0;d.a=b;BIb(a.f)} +function N4c(a,b,c,d,e,f,g,h){var i,j,k,l;i=Wu(WC(OC(B0,1),rte,238,0,[b,c,d,e]));l=null;switch(a.b.g){case 1:l=Wu(WC(OC(k0,1),rte,523,0,[new Z4c,new P4c,new R4c]));break;case 0:l=Wu(WC(OC(k0,1),rte,523,0,[new R4c,new P4c,new Z4c]));break;case 2:l=Wu(WC(OC(k0,1),rte,523,0,[new P4c,new Z4c,new R4c]));}for(k=new Hmb(l);k.a1&&(i=j.Gg(i,a.a,h))}if(i.c.length==1){return JD(amb(i,i.c.length-1),238)}if(i.c.length==2){return M4c((JDb(0,i.c.length),JD(i.c[0],238)),(JDb(1,i.c.length),JD(i.c[1],238)),g,f)}return null} +function SGd(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;e=new nC(a);f=new dCd;d=(qo(f.n),qo(f.p),hjb(f.c),qo(f.f),qo(f.o),hjb(f.q),hjb(f.d),hjb(f.g),hjb(f.k),hjb(f.e),hjb(f.i),hjb(f.j),hjb(f.r),hjb(f.b),m=$Bd(f,e,null),XBd(f,e),m);if(b){i=new nC(b);g=TGd(i);zpd(d,WC(OC(r3,1),rte,524,0,[g]))}l=false;k=false;if(c){i=new nC(c);LGe in i.a&&(l=iC(i,LGe).oe().a);MGe in i.a&&(k=iC(i,MGe).oe().a)}j=Xnd(Znd(new _nd,l),k);kbd(new nbd,d,j);LGe in e.a&&kC(e,LGe,null);if(l||k){h=new mC;PGd(j,h,l,k);kC(e,LGe,h)}n=new iDd(f);dte(new BGd(d),n);o=new kDd(f);dte(new BGd(d),o)} +function YVc(a,b,c){var d,e,f,g,h,i,j;c.Tg('Find roots',1);a.a.c.length=0;for(e=Wtb(b.b,0);e.b!=e.d.c;){d=JD(iub(e),40);if(d.b.b==0){oNb(d,(MWc(),JWc),(Ndb(),true));Ylb(a.a,d)}}switch(a.a.c.length){case 0:f=new xTc(0,b,'DUMMY_ROOT');oNb(f,(MWc(),JWc),(Ndb(),true));oNb(f,qWc,true);Qtb(b.b,f);break;case 1:break;default:g=new xTc(0,b,vCe);for(i=new Hmb(a.a);i.a=$wnd.Math.abs(d.b)){d.b=0;f.d+f.a>g.d&&f.dg.c&&f.c0){b=new BLd(a.i,a.g);c=a.i;f=c<100?null:new iJd(c);if(a.Rj()){for(d=0;d0){h=a.g;j=a.i;QFd(a);f=j<100?null:new iJd(j);for(d=0;d>13|(a.m&15)<<9;e=a.m>>4&8191;f=a.m>>17|(a.h&255)<<5;g=(a.h&1048320)>>8;h=b.l&8191;i=b.l>>13|(b.m&15)<<9;j=b.m>>4&8191;k=b.m>>17|(b.h&255)<<5;l=(b.h&1048320)>>8;B=c*h;C=d*h;D=e*h;F=f*h;G=g*h;if(i!=0){C+=c*i;D+=d*i;F+=e*i;G+=f*i}if(j!=0){D+=c*j;F+=d*j;G+=e*j}if(k!=0){F+=c*k;G+=d*k}l!=0&&(G+=c*l);n=B&dve;o=(C&511)<<13;m=n+o;q=B>>22;r=C>>9;s=(D&262143)<<4;t=(F&31)<<17;p=q+r+s+t;v=D>>18;w=F>>5;A=(G&4095)<<8;u=v+w+A;p+=m>>22;m&=dve;u+=p>>22;p&=dve;u&=eve;return _C(m,p,u)} +function l4b(a){var b,c,d,e,f,g,h;h=JD(amb(a.j,0),12);if(h.g.c.length!=0&&h.e.c.length!=0){throw Icb(new kfb('Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges.'))}if(h.g.c.length!=0){f=ove;for(c=new Hmb(h.g);c.a0&&XBc(a,h,l)}for(e=new Hmb(l);e.a4){if(a.dk(b)){if(a.$k()){e=JD(b,52);d=e.Bh();i=d==a.e&&(a.kl()?e.vh(e.Ch(),a.gl())==a.hl():-1-e.Ch()==a.Jj());if(a.ll()&&!i&&!d&&!!e.Gh()){for(f=0;fa.d[g.p]){c+=tIc(a.b,f)*JD(i.b,15).a;olb(a.a,zfb(f))}}while(!ulb(a.a)){rIc(a.b,JD(zlb(a.a),15).a)}}return c} +function cCc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;b.Tg($Be,1);n=new imb;k=$wnd.Math.max(a.a.c.length,JD(lNb(a,(Krc(),frc)),15).a);c=k*JD(lNb(a,Bqc),15).a;h=XD(lNb(a,($xc(),pvc)))===XD((bqc(),$pc));for(p=new Hmb(a.a);p.a0&&(j=a.n.a/f);break;case 2:case 4:e=a.i.o.b;e>0&&(j=a.n.b/e);}oNb(a,(Krc(),qrc),j)}i=a.o;g=a.a;if(d){g.a=d.a;g.b=d.b;a.d=true}else if(b!=vld&&b!=wld&&h!=kmd){switch(h.g){case 1:g.a=i.a/2;break;case 2:g.a=i.a;g.b=i.b/2;break;case 3:g.a=i.a/2;g.b=i.b;break;case 4:g.b=i.b/2;}}else{g.a=i.a/2;g.b=i.b/2}} +function XHd(a){var b,c,d,e,f,g,h,i,j,k;if(a.Nj()){k=a.Cj();i=a.Oj();if(k>0){b=new aGd(a.nj());c=k;f=c<100?null:new iJd(c);cHd(a,c,b.g);e=c==1?a.Gj(4,SFd(b,0),null,0,i):a.Gj(6,b,null,-1,i);if(a.Kj()){for(d=new fKd(b);d.e!=d.i.gc();){f=a.Mj(dKd(d),f)}if(!f){a.Hj(e)}else{f.lj(e);f.mj()}}else{if(!f){a.Hj(e)}else{f.lj(e);f.mj()}}}else{cHd(a,a.Cj(),a.Dj());a.Hj(a.Gj(6,(Fnb(),Cnb),null,-1,i))}}else if(a.Kj()){k=a.Cj();if(k>0){h=a.Dj();j=k;cHd(a,k,h);f=j<100?null:new iJd(j);for(d=0;d1&&Hod(g)*God(g)/2>h[0]){f=0;while(fh[f]){++f}o=new Yjb(p,0,f+1);l=new Mod(o);k=Hod(g)/God(g);i=vod(l,b,new aZb,c,d,e,k);Gfd(Pfd(l.e),i);PDb(pvb(m,l),Bve);n=new Yjb(p,f+1,p.c.length);mvb(m,n);p.c.length=0;j=0;Wmb(h,h.length,0)}else{q=m.b.c.length==0?null:amb(m.b,0);q!=null&&svb(m,0);j>0&&(h[j]=h[j-1]);h[j]+=Hod(g)*God(g);++j;nDb(p.c,g)}}return p} +function _hc(a,b){var c,d,e,f;c=b.b;f=new kmb(c.j);e=0;d=c.j;d.c.length=0;Nhc(JD(Yi(a.b,(mmd(),Uld),(jic(),iic)),16),c);e=Ohc(f,e,new Hic,d);Nhc(JD(Yi(a.b,Uld,hic),16),c);e=Ohc(f,e,new Jic,d);Nhc(JD(Yi(a.b,Uld,gic),16),c);Nhc(JD(Yi(a.b,Tld,iic),16),c);Nhc(JD(Yi(a.b,Tld,hic),16),c);e=Ohc(f,e,new Lic,d);Nhc(JD(Yi(a.b,Tld,gic),16),c);Nhc(JD(Yi(a.b,jmd,iic),16),c);e=Ohc(f,e,new Nic,d);Nhc(JD(Yi(a.b,jmd,hic),16),c);e=Ohc(f,e,new Pic,d);Nhc(JD(Yi(a.b,jmd,gic),16),c);Nhc(JD(Yi(a.b,lmd,iic),16),c);e=Ohc(f,e,new tic,d);Nhc(JD(Yi(a.b,lmd,hic),16),c);Nhc(JD(Yi(a.b,lmd,gic),16),c)} +function j8b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;b.Tg('Layer size calculation',1);k=ove;j=pve;e=false;for(h=new Hmb(a.b);h.a0.5?(r-=g*2*(o-0.5)):o<0.5&&(r+=f*2*(0.5-o));e=h.d.b;rq.a-p-k&&(r=q.a-p-k);h.n.a=b+r}} +function S7b(a){var b,c,d,e,f;d=JD(lNb(a,($xc(),qwc)),165);if(d==(Qrc(),Mrc)){for(c=new Yr(Dr(yYb(a).a.Jc(),new Dl));Wr(c);){b=JD(Xr(c),17);if(!U7b(b)){throw Icb(new pbd(Gye+wYb(a)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. "+'FIRST_SEPARATE nodes must not have incoming edges.'))}}}else if(d==Orc){for(f=new Yr(Dr(BYb(a).a.Jc(),new Dl));Wr(f);){e=JD(Xr(f),17);if(!U7b(e)){throw Icb(new pbd(Gye+wYb(a)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. "+'LAST_SEPARATE nodes must not have outgoing edges.'))}}}} +function wbd(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;if(a.e&&a.c.c>19!=0){b=pD(b);i=!i}g=hD(b);f=false;e=false;d=false;if(a.h==fve&&a.m==0&&a.l==0){e=true;f=true;if(g==-1){a=$C((ED(),AD));d=true;i=!i}else{h=tD(a,g);i&&fD(h);c&&(YC=_C(0,0,0));return h}}else if(a.h>>19!=0){f=true;a=pD(a);d=true;i=!i}if(g!=-1){return cD(a,g,i,f,c)}if(mD(a,b)<0){c&&(f?(YC=pD(a)):(YC=_C(a.l,a.m,a.h)));return _C(0,0,0)}return dD(d?a:_C(a.l,a.m,a.h),b,i,f,e,c)} +function Iib(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;g=a.e;i=b.e;if(g==0){return b}if(i==0){return a}f=a.d;h=b.d;if(f+h==2){c=Kcb(a.a[0],yve);d=Kcb(b.a[0],yve);if(g==i){k=Jcb(c,d);o=ddb(k);n=ddb(_cb(k,32));return n==0?new hib(g,o):new jib(g,2,WC(OC(cE,1),Pue,30,15,[o,n]))}return Whb(),Rcb(g<0?adb(d,c):adb(c,d),0)?qib(g<0?adb(d,c):adb(c,d)):cib(qib(Wcb(g<0?adb(d,c):adb(c,d))))}else if(g==i){m=g;l=f>=h?Jib(a.a,f,b.a,h):Jib(b.a,h,a.a,f)}else{e=f!=h?f>h?1:-1:Lib(a.a,b.a,f);if(e==0){return Whb(),Vhb}if(e==1){m=g;l=Oib(a.a,f,b.a,h)}else{m=i;l=Oib(b.a,h,a.a,f)}}j=new jib(m,l.length,l);Yhb(j);return j} +function eRc(a,b){var c,d,e,f,g,h,i;if(a.g>b.f||b.g>a.f){return}c=0;d=0;for(g=a.w.a.ec().Jc();g.Ob();){e=JD(g.Pb(),12);WRc(cgd(WC(OC(o2,1),Ote,8,0,[e.i.n,e.n,e.a])).b,b.g,b.f)&&++c}for(h=a.r.a.ec().Jc();h.Ob();){e=JD(h.Pb(),12);WRc(cgd(WC(OC(o2,1),Ote,8,0,[e.i.n,e.n,e.a])).b,b.g,b.f)&&--c}for(i=b.w.a.ec().Jc();i.Ob();){e=JD(i.Pb(),12);WRc(cgd(WC(OC(o2,1),Ote,8,0,[e.i.n,e.n,e.a])).b,a.g,a.f)&&++d}for(f=b.r.a.ec().Jc();f.Ob();){e=JD(f.Pb(),12);WRc(cgd(WC(OC(o2,1),Ote,8,0,[e.i.n,e.n,e.a])).b,a.g,a.f)&&--d}if(c=0){return c}switch(wde(Oce(a,c))){case 2:{if(sgb('',Mce(a,c.ok()).ve())){i=zde(Oce(a,c));h=yde(Oce(a,c));k=Pce(a,b,i,h);if(k){return k}e=Dce(a,b);for(g=0,l=e.gc();g1){throw Icb(new hfb(aJe))}k=nie(a.e.Ah(),b);d=JD(a.g,122);for(g=0;g1;for(j=new OZb(m.b);Emb(j.a)||Emb(j.b);){i=JD(Emb(j.a)?Fmb(j.a):Fmb(j.b),17);l=i.c==m?i.d:i.c;$wnd.Math.abs(cgd(WC(OC(o2,1),Ote,8,0,[l.i.n,l.n,l.a])).b-g.b)>1&&AOc(a,i,g,f,m)}}} +function RQc(a){var b,c,d,e,f,g;e=new Qjb(a.e,0);d=new Qjb(a.a,0);if(a.d){for(c=0;cmCe){f=b;g=0;while($wnd.Math.abs(b-f)0);e.a.Xb(e.c=--e.b);QQc(a,a.b-g,f,d,e);IDb(e.b0);d.a.Xb(d.c=--d.b)}if(!a.d){for(c=0;c0){a.f[k.p]=n/(k.e.c.length+k.g.c.length);a.c=$wnd.Math.min(a.c,a.f[k.p]);a.b=$wnd.Math.max(a.b,a.f[k.p])}else h&&(a.f[k.p]=n)}} +function vle(a){a.b=null;a.bb=null;a.fb=null;a.qb=null;a.a=null;a.c=null;a.d=null;a.e=null;a.f=null;a.n=null;a.M=null;a.L=null;a.Q=null;a.R=null;a.K=null;a.db=null;a.eb=null;a.g=null;a.i=null;a.j=null;a.k=null;a.gb=null;a.o=null;a.p=null;a.q=null;a.r=null;a.$=null;a.ib=null;a.S=null;a.T=null;a.t=null;a.s=null;a.u=null;a.v=null;a.w=null;a.B=null;a.A=null;a.C=null;a.D=null;a.F=null;a.G=null;a.H=null;a.I=null;a.J=null;a.P=null;a.Z=null;a.U=null;a.V=null;a.W=null;a.X=null;a.Y=null;a._=null;a.ab=null;a.cb=null;a.hb=null;a.nb=null;a.lb=null;a.mb=null;a.ob=null;a.pb=null;a.jb=null;a.kb=null;a.N=false;a.O=false} +function i2b(a,b,c){var d,e,f,g;c.Tg('Graph transformation ('+a.a+')',1);g=Uu(b.a);for(f=new Hmb(b.b);f.a=h.b.c)&&(h.b=b);if(!h.c||b.c<=h.c.c){h.d=h.c;h.c=b}(!h.e||b.d>=h.e.d)&&(h.e=b);(!h.f||b.d<=h.f.d)&&(h.f=b)}d=new oTb((OSb(),KSb));UTb(a,_Sb,new tnb(WC(OC(cP,1),rte,377,0,[d])));g=new oTb(NSb);UTb(a,$Sb,new tnb(WC(OC(cP,1),rte,377,0,[g])));e=new oTb(LSb);UTb(a,ZSb,new tnb(WC(OC(cP,1),rte,377,0,[e])));f=new oTb(MSb);UTb(a,YSb,new tnb(WC(OC(cP,1),rte,377,0,[f])));eTb(d.c,KSb);eTb(e.c,LSb);eTb(f.c,MSb);eTb(g.c,NSb);h.a.c.length=0;$lb(h.a,d.c);$lb(h.a,$u(e.c));$lb(h.a,f.c);$lb(h.a,$u(g.c));return h} +function V5c(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;b.Tg(RDe,1);n=Reb(MD(Pud(a,(A3c(),z3c))));g=Reb(MD(Pud(a,(D4c(),w4c))));h=JD(Pud(a,t4c),104);i7c((!a.a&&(a.a=new A3d(Q3,a,10,11)),a.a));k=A5c((!a.a&&(a.a=new A3d(Q3,a,10,11)),a.a),n,g);!a.a&&(a.a=new A3d(Q3,a,10,11));for(j=new Hmb(k);j.a0){a.a=i+(n-1)*f;b.c.b+=a.a;b.f.b+=a.a}}if(o.a.gc()!=0){m=new nQc(1,f);n=mQc(m,b,o,p,b.f.b+i-b.c.b);n>0&&(b.f.b+=i+(n-1)*f)}} +function Gmc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;k=Reb(MD(lNb(a,($xc(),wxc))));d=Reb(MD(lNb(a,Pxc)));m=new qqd;oNb(m,wxc,k+d);j=b;r=j.d;p=j.c.i;s=j.d.i;q=r$b(p.c);t=r$b(s.c);e=new imb;for(l=q;l<=t;l++){h=new KYb(a);IYb(h,(UYb(),PYb));oNb(h,(Krc(),hrc),j);oNb(h,bxc,(xld(),sld));oNb(h,yxc,m);n=JD(amb(a.b,l),25);l==q?GYb(h,n.a.c.length-c,n):HYb(h,n);u=Reb(MD(lNb(j,bwc)));if(u<0){u=0;oNb(j,bwc,u)}h.o.b=u;o=$wnd.Math.floor(u/2);g=new sZb;rZb(g,(mmd(),lmd));qZb(g,h);g.n.b=o;i=new sZb;rZb(i,Tld);qZb(i,h);i.n.b=o;yWb(j,g);f=new BWb;jNb(f,j);oNb(f,nwc,null);xWb(f,i);yWb(f,r);Hmc(h,j,f);nDb(e.c,f);j=f}return e} +function uNc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;p=b.b.c.length;if(p<3){return}n=SC(cE,Pue,30,p,15,1);l=0;for(k=new Hmb(b.b);k.ag)&&bsb(a.b,JD(q.b,17))}}++h}f=g}}}} +function o8b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;i=JD(FYb(a,(mmd(),lmd)).Jc().Pb(),12).e;n=JD(FYb(a,Tld).Jc().Pb(),12).g;h=i.c.length;t=lZb(JD(amb(a.j,0),12));while(h-->0){p=(JDb(0,i.c.length),JD(i.c[0],17));e=(JDb(0,n.c.length),JD(n.c[0],17));s=e.d.e;f=bmb(s,e,0);zWb(p,e.d,f);xWb(e,null);yWb(e,null);o=p.a;b&&Qtb(o,new Zfd(t));for(d=Wtb(e.a,0);d.b!=d.d.c;){c=JD(iub(d),8);Qtb(o,new Zfd(c))}r=p.b;for(m=new Hmb(e.b);m.a-2}default:{return false}}b=a.Pj();switch(a.p){case 0:return b!=null&&Odb(LD(b))!=Xcb(a.k,0);case 1:return b!=null&&JD(b,221).a!=ddb(a.k)<<24>>24;case 2:return b!=null&&JD(b,180).a!=(ddb(a.k)&Bue);case 6:return b!=null&&Xcb(JD(b,190).a,a.k);case 5:return b!=null&&JD(b,15).a!=ddb(a.k);case 7:return b!=null&&JD(b,191).a!=ddb(a.k)<<16>>16;case 3:return b!=null&&Reb(MD(b))!=a.j;case 4:return b!=null&&JD(b,164).a!=a.j;default:return b==null?a.n!=null:!pb(b,a.n);}} +function LZd(a,b,c){var d,e,f,g;if(a.ml()&&a.ll()){g=MZd(a,JD(c,57));if(XD(g)!==XD(c)){a.vj(b);a.Bj(b,NZd(a,b,g));if(a.$k()){f=(e=JD(c,52),a.kl()?a.il()?e.Qh(a.b,X3d(JD(tWd(bud(a.b),a.Jj()),19)).n,JD(tWd(bud(a.b),a.Jj()).Fk(),29).ik(),null):e.Qh(a.b,zWd(e.Ah(),X3d(JD(tWd(bud(a.b),a.Jj()),19))),null,null):e.Qh(a.b,-1-a.Jj(),null,null));!JD(g,52).Mh()&&(f=(d=JD(g,52),a.kl()?a.il()?d.Oh(a.b,X3d(JD(tWd(bud(a.b),a.Jj()),19)).n,JD(tWd(bud(a.b),a.Jj()).Fk(),29).ik(),f):d.Oh(a.b,zWd(d.Ah(),X3d(JD(tWd(bud(a.b),a.Jj()),19))),null,f):d.Oh(a.b,-1-a.Jj(),null,f)));!!f&&f.mj()}Vsd(a.b)&&a.Hj(a.Gj(9,c,g,b,false));return g}}return c} +function KGb(a){var b,c,d,e,f,g,h,i,j,k;d=new imb;for(g=new Hmb(a.e.a);g.a0&&(g=$wnd.Math.max(g,_Jb(a.C.b+d.d.b,e)))}else{n=m+k.d.c+a.w+d.d.b;g=$wnd.Math.max(g,(Sy(),Wy(Lwe),$wnd.Math.abs(l-e)<=Lwe||l==e||isNaN(l)&&isNaN(e)?0:n/(e-l)))}k=d;l=e;m=f}if(!!a.C&&a.C.c>0){n=m+a.C.c;j&&(n+=k.d.c);g=$wnd.Math.max(g,(Sy(),Wy(Lwe),$wnd.Math.abs(l-1)<=Lwe||l==1||isNaN(l)&&isNaN(1)?0:n/(1-l)))}c.n.b=0;c.a.a=g} +function eLb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;c=JD($qb(a.b,b),127);i=JD(JD(Qc(a.r,b),22),83);if(i.dc()){c.n.d=0;c.n.a=0;return}j=a.u.Gc((Lld(),Hld));g=0;a.A.Gc((Vmd(),Umd))&&jLb(a,b);h=i.Jc();k=null;m=0;l=0;while(h.Ob()){d=JD(h.Pb(),115);f=Reb(MD(d.b.mf((VKb(),UKb))));e=d.b.Kf().b;if(!k){!!a.C&&a.C.d>0&&(g=$wnd.Math.max(g,_Jb(a.C.d+d.d.d,f)))}else{n=l+k.d.a+a.w+d.d.d;g=$wnd.Math.max(g,(Sy(),Wy(Lwe),$wnd.Math.abs(m-f)<=Lwe||m==f||isNaN(m)&&isNaN(f)?0:n/(f-m)))}k=d;m=f;l=e}if(!!a.C&&a.C.a>0){n=l+a.C.a;j&&(n+=k.d.a);g=$wnd.Math.max(g,(Sy(),Wy(Lwe),$wnd.Math.abs(m-1)<=Lwe||m==1||isNaN(m)&&isNaN(1)?0:n/(1-m)))}c.n.d=0;c.a.b=g} +function EFc(a,b,c){var d,e,f,g,h,i;this.g=a;h=b.d.length;i=c.d.length;this.d=SC(RP,nye,9,h+i,0,1);for(g=0;g0?CFc(this,this.f/this.a):uFc(b.g,b.d[0]).a!=null&&uFc(c.g,c.d[0]).a!=null?CFc(this,(Reb(uFc(b.g,b.d[0]).a)+Reb(uFc(c.g,c.d[0]).a))/2):uFc(b.g,b.d[0]).a!=null?CFc(this,uFc(b.g,b.d[0]).a):uFc(c.g,c.d[0]).a!=null&&CFc(this,uFc(c.g,c.d[0]).a)} +function r5c(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r;o=false;j=M6c(c.q,b.f+b.b-c.q.f);n=d.f>b.b&&h;r=e-(c.q.e+j-g);l=(i=z6c(d,r,false),i.a);if(n&&l>d.f){return false}if(n){m=0;for(q=new Hmb(b.d);q.a=(JDb(f,a.c.length),JD(a.c[f],186)).e;if(!n&&l>b.b&&!k){return false}if(k||n||l<=b.b){if(k&&l>b.b){c.d=l;x6c(c,w6c(c,l))}else{N6c(c.q,j);c.c=true}x6c(d,e-(c.s+c.r));B6c(d,c.q.e+c.q.d,b.f);j7c(b,d);if(a.c.length>f){m7c((JDb(f,a.c.length),JD(a.c[f],186)),d);(JDb(f,a.c.length),JD(a.c[f],186)).a.c.length==0&&cmb(a,f)}o=true}return o} +function cRb(a,b){var c,d,e,f,g,h,i,j,k,l;a.a=new GRb(Brb(v2));for(d=new Hmb(b.a);d.a0&&(RDb(0,c.length),c.charCodeAt(0)!=47))){throw Icb(new hfb('invalid opaquePart: '+c))}if(a&&!(b!=null&&Aob(cQd,b.toLowerCase()))&&!(c==null||!kQd(c,$Pd,_Pd))){throw Icb(new hfb(IHe+c))}if(a&&b!=null&&Aob(cQd,b.toLowerCase())&&!CQd(c)){throw Icb(new hfb(IHe+c))}if(!DQd(d)){throw Icb(new hfb('invalid device: '+d))}if(!FQd(e)){g=e==null?'invalid segments: null':'invalid segment: '+rQd(e);throw Icb(new hfb(g))}if(!(f==null||xgb(f,Mgb(35))==-1)){throw Icb(new hfb('invalid query: '+f))}} +function SXb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;m=new Zfd(a.o);r=b.a/m.a;h=b.b/m.b;p=b.a-m.a;f=b.b-m.b;if(c){e=XD(lNb(a,($xc(),bxc)))===XD((xld(),sld));for(o=new Hmb(a.j);o.a=1){if(q-g>0&&l>=0){i.n.a+=p;i.n.b+=f*g}else if(q-g<0&&k>=0){i.n.a+=p*q;i.n.b+=f}}}a.o.a=b.a;a.o.b=b.b;oNb(a,($xc(),Nwc),(Vmd(),d=JD(teb(N2),10),new Krb(d,JD(kDb(d,d.length),10),0)))} +function _Dc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;c.Tg('Network simplex layering',1);a.b=b;r=JD(lNb(b,($xc(),Ixc)),15).a*4;q=a.b.a;if(q.c.length<1){c.Ug();return}f=XDc(a,q);p=null;for(e=Wtb(f,0);e.b!=e.d.c;){d=JD(iub(e),16);h=r*YD($wnd.Math.sqrt(d.gc()));g=$Dc(d);NGb($Gb(aHb(_Gb(cHb(g),h),p),true),c.dh(1));m=a.b.b;for(o=new Hmb(g.a);o.a1){p=SC(cE,Pue,30,a.b.b.c.length,15,1);l=0;for(j=new Hmb(a.b.b);j.a0){oA(a,c,0);c.a+=String.fromCharCode(d);e=tA(b,f);oA(a,c,e);f+=e-1;continue}if(d==39){if(f+10&&o.a<=0){i.c.length=0;nDb(i.c,o);break}n=o.i-o.d;if(n>=h){if(n>h){i.c.length=0;h=n}nDb(i.c,o)}}if(i.c.length!=0){g=JD(amb(i,Nvb(e,i.c.length)),116);t.a.Ac(g)!=null;g.g=k++;SOc(g,b,c,d);i.c.length=0}}q=a.c.length+1;for(m=new Hmb(a);m.apve||b.o==YMc&&k=h&&e<=i){if(h<=e&&f<=i){c[k++]=e;c[k++]=f;d+=2}else if(h<=e){c[k++]=e;c[k++]=i;a.b[d]=i+1;g+=2}else if(f<=i){c[k++]=h;c[k++]=f;d+=2}else{c[k++]=h;c[k++]=i;a.b[d]=i+1}}else if(ique)&&h<10);aSb(a.c,new CRb);pRb(a);YRb(a.c);_Qb(a.f)} +function dGc(a,b){var c,d,e,f,g,h,i,j,k,l,m;switch(a.k.g){case 1:d=JD(lNb(a,(Krc(),hrc)),17);c=JD(lNb(d,irc),78);!c?(c=new jgd):Odb(LD(lNb(d,vrc)))&&(c=ngd(c));j=JD(lNb(a,brc),12);if(j){k=cgd(WC(OC(o2,1),Ote,8,0,[j.i.n,j.n,j.a]));if(b<=k.a){return k.b}Ttb(c,k,c.a,c.a.a)}l=JD(lNb(a,crc),12);if(l){m=cgd(WC(OC(o2,1),Ote,8,0,[l.i.n,l.n,l.a]));if(m.a<=b){return m.b}Ttb(c,m,c.c.b,c.c)}if(c.b>=2){i=Wtb(c,0);g=JD(iub(i),8);h=JD(iub(i),8);while(h.a0&&qFb(j,true,(ojd(),ljd));h.k==(UYb(),NYb)&&rFb(j);ejb(a.f,h,b)}}} +function p7c(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;j=ove;k=ove;h=pve;i=pve;for(m=new Hmb(b.i);m.a=a.j){++a.j;Ylb(a.b,zfb(1));Ylb(a.c,k)}else{d=a.d[b.p][1];fmb(a.b,j,zfb(JD(amb(a.b,j),15).a+1-d));fmb(a.c,j,Reb(MD(amb(a.c,j)))+k-d*a.f)}(a.r==(Czc(),vzc)&&(JD(amb(a.b,j),15).a>a.k||JD(amb(a.b,j-1),15).a>a.k)||a.r==yzc&&(Reb(MD(amb(a.c,j)))>a.n||Reb(MD(amb(a.c,j-1)))>a.n))&&(i=false);for(g=new Yr(Dr(yYb(b).a.Jc(),new Dl));Wr(g);){f=JD(Xr(g),17);h=f.c.i;if(a.g[h.p]==j){l=D8b(a,h);e=e+JD(l.a,15).a;i=i&&Odb(LD(l.b))}}a.g[b.p]=j;e=e+a.d[b.p][0];return new ard(zfb(e),(Ndb(),i?true:false))} +function Kgc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(m=a.c[b],n=a.c[c],(o=JD(lNb(m,(Krc(),Xqc)),16),!!o&&o.gc()!=0&&o.Gc(n))||(p=m.k!=(UYb(),PYb)&&n.k!=PYb,q=JD(lNb(m,Wqc),9),r=JD(lNb(n,Wqc),9),s=q!=r,t=!!q&&q!=m||!!r&&r!=n,u=Lgc(m,(mmd(),Uld)),v=Lgc(n,jmd),t=t|(Lgc(m,jmd)||Lgc(n,Uld)),w=t&&s||u||v,p&&w)||m.k==(UYb(),SYb)&&n.k==RYb||n.k==(UYb(),SYb)&&m.k==RYb){return false}k=a.c[b];f=a.c[c];e=FIc(a.e,k,f,(mmd(),lmd));i=FIc(a.i,k,f,Tld);Bgc(a.f,k,f);j=kgc(a.b,k,f)+JD(e.a,15).a+JD(i.a,15).a+a.f.d;h=kgc(a.b,f,k)+JD(e.b,15).a+JD(i.b,15).a+a.f.b;if(a.a){l=JD(lNb(k,hrc),12);g=JD(lNb(f,hrc),12);d=DIc(a.g,l,g);j+=JD(d.a,15).a;h+=JD(d.b,15).a}return j>h} +function DQb(a,b){var c,d,e,f,g;c=Reb(MD(lNb(b,($xc(),txc))));c<2&&oNb(b,txc,2);d=JD(lNb(b,Pvc),86);d==(ojd(),mjd)&&oNb(b,Pvc,JXb(b));e=JD(lNb(b,nxc),15);e.a==0?oNb(b,(Krc(),trc),new Svb):oNb(b,(Krc(),trc),new Tvb(e.a));f=LD(lNb(b,Iwc));f==null&&oNb(b,Iwc,(Ndb(),XD(lNb(b,Wvc))===XD((Ujd(),Qjd))?true:false));VBb(new gCb(null,new Wvb(b.a,16)),new GQb(a));VBb(UBb(new gCb(null,new Wvb(b.b,16)),new IQb),new KQb(a));g=new IAc(b);oNb(b,(Krc(),yrc),g);ybd(a.a);Bbd(a.a,(TQb(),OQb),JD(lNb(b,Nvc),188));Bbd(a.a,PQb,JD(lNb(b,wwc),188));Bbd(a.a,QQb,JD(lNb(b,Mvc),188));Bbd(a.a,RQb,JD(lNb(b,Mwc),188));Bbd(a.a,SQb,eOc(JD(lNb(b,Wvc),222)));vbd(a.a,CQb(b));oNb(b,rrc,wbd(a.a,b))} +function mQc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;l=new Yrb;g=new imb;kQc(a,c,a.d.zg(),g,l);kQc(a,d,a.d.Ag(),g,l);a.b=0.2*(p=lQc(UBb(new gCb(null,new Wvb(g,16)),new rQc)),q=lQc(UBb(new gCb(null,new Wvb(g,16)),new tQc)),$wnd.Math.min(p,q));f=0;for(h=0;h=2&&(r=QOc(g,true,m),!a.e&&(a.e=new TPc(a)),PPc(a.e,r,g,a.b),undefined);oQc(g,m);qQc(g);n=-1;for(k=new Hmb(g);k.a0){c+=i.n.a+i.o.a/2;++l}for(o=new Hmb(i.j);o.a0&&(c/=l);r=SC(aE,vve,30,d.a.c.length,15,1);h=0;for(j=new Hmb(d.a);j.a-1){for(e=Wtb(h,0);e.b!=e.d.c;){d=JD(iub(e),132);d.v=g}while(h.b!=0){d=JD(bu(h,0),132);for(c=new Hmb(d.i);c.a-1){for(f=new Hmb(h);f.a0){continue}lPc(i,$wnd.Math.min(i.o,e.o-1));kPc(i,i.i-1);i.i==0&&(nDb(h.c,i),true)}}}} +function rfd(a,b,c,d,e){var f,g,h,i;i=ove;g=false;h=mfd(a,Vfd(new Yfd(b.a,b.b),a),Gfd(new Yfd(c.a,c.b),e),Vfd(new Yfd(d.a,d.b),c));f=!!h&&!($wnd.Math.abs(h.a-a.a)<=wEe&&$wnd.Math.abs(h.b-a.b)<=wEe||$wnd.Math.abs(h.a-b.a)<=wEe&&$wnd.Math.abs(h.b-b.b)<=wEe);h=mfd(a,Vfd(new Yfd(b.a,b.b),a),c,e);!!h&&(($wnd.Math.abs(h.a-a.a)<=wEe&&$wnd.Math.abs(h.b-a.b)<=wEe)==($wnd.Math.abs(h.a-b.a)<=wEe&&$wnd.Math.abs(h.b-b.b)<=wEe)||f?(i=$wnd.Math.min(i,Mfd(Vfd(h,c)))):(g=true));h=mfd(a,Vfd(new Yfd(b.a,b.b),a),d,e);!!h&&(g||($wnd.Math.abs(h.a-a.a)<=wEe&&$wnd.Math.abs(h.b-a.b)<=wEe)==($wnd.Math.abs(h.a-b.a)<=wEe&&$wnd.Math.abs(h.b-b.b)<=wEe)||f)&&(i=$wnd.Math.min(i,Mfd(Vfd(h,d))));return i} +function FPb(a){kdd(a,new vcd(Ccd(Gcd(Dcd(Fcd(Ecd(new Icd,Txe),Uxe),"Minimizes the stress within a layout using stress majorization. Stress exists if the euclidean distance between a pair of nodes doesn't match their graph theoretic distance, that is, the shortest path between the two nodes. The method allows to specify individual edge lengths."),new IPb),oxe)));idd(a,Txe,wxe,mEd(wPb));idd(a,Txe,yxe,(Ndb(),true));idd(a,Txe,Cxe,mEd(zPb));idd(a,Txe,Vxe,mEd(APb));idd(a,Txe,Bxe,mEd(BPb));idd(a,Txe,Dxe,mEd(yPb));idd(a,Txe,zxe,mEd(CPb));idd(a,Txe,Exe,mEd(DPb));idd(a,Txe,Oxe,mEd(vPb));idd(a,Txe,Qxe,mEd(tPb));idd(a,Txe,Rxe,mEd(uPb));idd(a,Txe,Sxe,mEd(xPb));idd(a,Txe,Pxe,mEd(sPb))} +function pFc(a){var b,c,d,e,f,g,h,i;b=null;for(d=new Hmb(a);d.a0&&c.c==0){!b&&(b=new imb);nDb(b.c,c)}}if(b){while(b.c.length!=0){c=JD(cmb(b,0),239);if(!!c.b&&c.b.c.length>0){for(f=(!c.b&&(c.b=new imb),new Hmb(c.b));f.abmb(a,c,0)){return new ard(e,c)}}else if(Reb(uFc(e.g,e.d[0]).a)>Reb(uFc(c.g,c.d[0]).a)){return new ard(e,c)}}}for(h=(!c.e&&(c.e=new imb),c.e).Jc();h.Ob();){g=JD(h.Pb(),239);i=(!g.b&&(g.b=new imb),g.b);MDb(0,i.c.length);lDb(i.c,0,c);g.c==i.c.length&&(nDb(b.c,g),true)}}}return null} +function ure(a,b){var c,d,e,f,g,h,i,j,k;if(b.e==5){rre(a,b);return}j=b;if(j.b==null||a.b==null)return;tre(a);qre(a);tre(j);qre(j);c=SC(cE,Pue,30,a.b.length+j.b.length,15,1);k=0;d=0;g=0;while(d=h&&e<=i){if(h<=e&&f<=i){d+=2}else if(h<=e){a.b[d]=i+1;g+=2}else if(f<=i){c[k++]=e;c[k++]=h-1;d+=2}else{c[k++]=e;c[k++]=h-1;a.b[d]=i+1;g+=2}}else if(i0),JD(k.a.Xb(k.c=--k.b),17));while(f!=d&&k.b>0){a.a[f.p]=true;a.a[d.p]=true;f=(IDb(k.b>0),JD(k.a.Xb(k.c=--k.b),17))}k.b>0&&Jjb(k)}}}}} +function UEc(a,b,c){var d,e,f,g,h,i,j,k,l,m;if(c){d=-1;k=new Qjb(b,0);while(k.b0?(e-=86400000):(e+=86400000);i=new oB(Jcb(Pcb(b.q.getTime()),e))}k=new jhb;j=a.a.length;for(f=0;f=97&&d<=122||d>=65&&d<=90){for(g=f+1;g=j){throw Icb(new hfb("Missing trailing '"))}g+1=14&&k<=16))){if(b.a._b(d)){!c.a?(c.a=new khb(c.d)):ehb(c.a,c.b);bhb(c.a,'[...]')}else{h=KD(d);j=new gsb(b);Kxb(c,Pmb(h,j))}}else RD(d,171)?Kxb(c,onb(JD(d,171))):RD(d,195)?Kxb(c,hnb(JD(d,195))):RD(d,201)?Kxb(c,inb(JD(d,201))):RD(d,2073)?Kxb(c,nnb(JD(d,2073))):RD(d,54)?Kxb(c,lnb(JD(d,54))):RD(d,584)?Kxb(c,mnb(JD(d,584))):RD(d,830)?Kxb(c,knb(JD(d,830))):RD(d,108)&&Kxb(c,jnb(JD(d,108)))}else{Kxb(c,d==null?vte:qdb(d))}}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)} +function IVd(a,b){var c,d,e,f;f=a.F;if(b==null){a.F=null;wVd(a,null)}else{a.F=(KDb(b),b);d=xgb(b,Mgb(60));if(d!=-1){e=(QDb(0,d,b.length),b.substr(0,d));xgb(b,Mgb(46))==-1&&!sgb(e,hte)&&!sgb(e,ZHe)&&!sgb(e,$He)&&!sgb(e,_He)&&!sgb(e,aIe)&&!sgb(e,bIe)&&!sgb(e,cIe)&&!sgb(e,dIe)&&(e=eIe);c=Agb(b,Mgb(62));c!=-1&&(e+=''+(RDb(c+1,b.length+1),b.substr(c+1)));wVd(a,e)}else{e=b;if(xgb(b,Mgb(46))==-1){d=xgb(b,Mgb(91));d!=-1&&(e=(QDb(0,d,b.length),b.substr(0,d)));if(!sgb(e,hte)&&!sgb(e,ZHe)&&!sgb(e,$He)&&!sgb(e,_He)&&!sgb(e,aIe)&&!sgb(e,bIe)&&!sgb(e,cIe)&&!sgb(e,dIe)){e=eIe;d!=-1&&(e+=''+(RDb(d,b.length+1),b.substr(d)))}else{e=b}}wVd(a,e);e==b&&(a.F=a.D)}}(a.Db&4)!=0&&(a.Db&1)==0&&zsd(a,new L1d(a,1,5,f,b))} +function gVb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;a.c=a.e;o=LD(lNb(b,($xc(),oxc)));n=o==null||(KDb(o),o);f=JD(lNb(b,(Krc(),Rqc)),22).Gc((Lpc(),Epc));e=JD(lNb(b,bxc),102);c=!(e==(xld(),rld)||e==tld||e==sld);if(n&&(c||!f)){for(l=new Hmb(b.a);l.a=0){f=btd(b,(QDb(1,h,c.length),c.substr(1,h-1)));l=(QDb(h+1,j,c.length),c.substr(h+1,j-(h+1)));return Wsd(b,l,f)}}else{d=-1;geb==null&&(geb=new RegExp('\\d'));if(geb.test(String.fromCharCode(i))){d=Bgb(c,Mgb(46),j-1);if(d>=0){e=JD(Osd(b,gtd(b,(QDb(1,d,c.length),c.substr(1,d-1))),false),61);k=0;try{k=Vdb((RDb(d+1,c.length+1),c.substr(d+1)),rue,lte)}catch(a){a=Hcb(a);if(RD(a,131)){g=a;throw Icb(new PQd(g))}else throw Icb(a)}if(k>16==-10){c=JD(a.Cb,293).Wk(b,c)}else if(a.Db>>16==-15){!b&&(b=(HRd(),uRd));!j&&(j=(HRd(),uRd));if(a.Cb.Vh()){i=new N1d(a.Cb,1,13,j,b,dXd(m2d(JD(a.Cb,62)),a),false);!c?(c=i):c.lj(i)}}}else if(RD(a.Cb,88)){if(a.Db>>16==-23){RD(b,88)||(b=(HRd(),xRd));RD(j,88)||(j=(HRd(),xRd));if(a.Cb.Vh()){i=new N1d(a.Cb,1,10,j,b,dXd(rWd(JD(a.Cb,29)),a),false);!c?(c=i):c.lj(i)}}}else if(RD(a.Cb,446)){h=JD(a.Cb,834);g=(!h.b&&(h.b=new n8d(new j8d)),h.b);for(f=(d=new Cjb((new tjb(g.a)).a),new v8d(d));f.a.b;){e=JD(Ajb(f.a).jd(),87);c=m0d(e,i0d(e,h),c)}}}return c} +function D$b(a,b){var c,d,e,f,g,h,i,j,k,l,m;g=Odb(LD(Pud(a,($xc(),jwc))));m=JD(Pud(a,exc),22);i=false;j=false;l=new fKd((!a.c&&(a.c=new A3d(R3,a,9,9)),a.c));while(l.e!=l.i.gc()&&(!i||!j)){f=JD(dKd(l),125);h=0;for(e=Gl(yl(WC(OC(VI,1),rte,20,0,[(!f.d&&(f.d=new Wge(N3,f,8,5)),f.d),(!f.e&&(f.e=new Wge(N3,f,7,4)),f.e)])));Wr(e);){d=JD(Xr(e),85);k=g&&vwd(d)&&Odb(LD(Pud(d,kwc)));c=aXd((!d.b&&(d.b=new Wge(L3,d,4,7)),d.b),f)?a==Czd(EEd(JD(SFd((!d.c&&(d.c=new Wge(L3,d,5,8)),d.c),0),84))):a==Czd(EEd(JD(SFd((!d.b&&(d.b=new Wge(L3,d,4,7)),d.b),0),84)));if(k||c){++h;if(h>1){break}}}h>0?(i=true):m.Gc((Lld(),Hld))&&(!f.n&&(f.n=new A3d(P3,f,1,7)),f.n).i>0&&(i=true);h>1&&(j=true)}i&&b.Ec((Lpc(),Epc));j&&b.Ec((Lpc(),Fpc))} +function Qpd(a){var b,c,d,e,f,g,h,i,j,k,l,m;m=JD(Pud(a,(gjd(),Vhd)),22);if(m.dc()){return null}h=0;g=0;if(m.Gc((Vmd(),Tmd))){k=JD(Pud(a,qid),102);d=2;c=2;e=2;f=2;b=!Czd(a)?JD(Pud(a,shd),86):JD(Pud(Czd(a),shd),86);for(j=new fKd((!a.c&&(a.c=new A3d(R3,a,9,9)),a.c));j.e!=j.i.gc();){i=JD(dKd(j),125);l=JD(Pud(i,xid),64);if(l==(mmd(),kmd)){l=Bpd(i,b);Rud(i,xid,l)}if(k==(xld(),sld)){switch(l.g){case 1:d=$wnd.Math.max(d,i.i+i.g);break;case 2:c=$wnd.Math.max(c,i.j+i.f);break;case 3:e=$wnd.Math.max(e,i.i+i.g);break;case 4:f=$wnd.Math.max(f,i.j+i.f);}}else{switch(l.g){case 1:d+=i.g+2;break;case 2:c+=i.f+2;break;case 3:e+=i.g+2;break;case 4:f+=i.f+2;}}}h=$wnd.Math.max(d,e);g=$wnd.Math.max(c,f)}return Rpd(a,h,g,true,true)} +function SKc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;e=null;for(d=new Hmb(b.a);d.a1){e=a.e.b;Qtb(a.e,i);for(h=i.a.ec().Jc();h.Ob();){g=JD(h.Pb(),9);ejb(a.c,g,zfb(e))}}}} +function IUb(a,b,c,d){var e,f,g,h,i,j,k,l,m,n;f=new UUb(b);l=DUb(a,b,f);n=$wnd.Math.max(Reb(MD(lNb(b,($xc(),bwc)))),1);for(k=new Hmb(l.a);k.a=0){i=null;h=new Qjb(k.a,j+1);while(h.b0;if(j){if(j){m=r.p;g?++m:--m;l=JD(amb(r.c.a,m),9);d=F1b(l);n=!(kfd(d,w,c[0])||gfd(d,w,c[0]))}}else{n=true}}o=false;v=b.D.i;if(!!v&&!!v.c&&h.e){k=g&&v.p>0||!g&&v.p=0&&pg?1:Rdb(isNaN(0),isNaN(g)))<0&&(null,Wy(hCe),($wnd.Math.abs(g-1)<=hCe||g==1||isNaN(g)&&isNaN(1)?0:g<1?-1:g>1?1:Rdb(isNaN(g),isNaN(1)))<0)&&(null,Wy(hCe),($wnd.Math.abs(0-h)<=hCe||0==h||isNaN(0)&&isNaN(h)?0:0h?1:Rdb(isNaN(0),isNaN(h)))<0)&&(null,Wy(hCe),($wnd.Math.abs(h-1)<=hCe||h==1||isNaN(h)&&isNaN(1)?0:h<1?-1:h>1?1:Rdb(isNaN(h),isNaN(1)))<0));return f} +function OKc(a){var b,c,d,e,f,g,h,i,j,k,l;a.j=SC(cE,Pue,30,a.g,15,1);a.o=new imb;VBb(UBb(new gCb(null,new Wvb(a.e.b,16)),new WLc),new YLc(a));a.a=SC(Fcb,zwe,30,a.b,16,1);aCb(new gCb(null,new Wvb(a.e.b,16)),new lMc(a));d=(l=new imb,VBb(SBb(UBb(new gCb(null,new Wvb(a.e.b,16)),new bMc),new dMc(a)),new fMc(a,l)),l);for(i=new Hmb(d);i.a=j.c.c.length?(k=DKc((UYb(),RYb),PYb)):(k=DKc((UYb(),PYb),PYb));k*=2;f=c.a.g;c.a.g=$wnd.Math.max(f,f+(k-f));g=c.b.g;c.b.g=$wnd.Math.max(g,g+(k-g));e=b}}} +function ZEb(a,b){var c;if(a.e){throw Icb(new kfb((seb(PM),lwe+PM.k+mwe)))}if(!sEb(a.a,b)){throw Icb(new qz(nwe+b+owe))}if(b==a.d){return a}c=a.d;a.d=b;switch(c.g){case 0:switch(b.g){case 2:WEb(a);break;case 1:cFb(a);WEb(a);break;case 4:iFb(a);WEb(a);break;case 3:iFb(a);cFb(a);WEb(a);}break;case 2:switch(b.g){case 1:cFb(a);dFb(a);break;case 4:iFb(a);WEb(a);break;case 3:iFb(a);cFb(a);WEb(a);}break;case 1:switch(b.g){case 2:cFb(a);dFb(a);break;case 4:cFb(a);iFb(a);WEb(a);break;case 3:cFb(a);iFb(a);cFb(a);WEb(a);}break;case 4:switch(b.g){case 2:iFb(a);WEb(a);break;case 1:iFb(a);cFb(a);WEb(a);break;case 3:cFb(a);dFb(a);}break;case 3:switch(b.g){case 2:cFb(a);iFb(a);WEb(a);break;case 1:cFb(a);iFb(a);cFb(a);WEb(a);break;case 4:cFb(a);dFb(a);}}return a} +function WRb(a,b){var c;if(a.d){throw Icb(new kfb((seb(MO),lwe+MO.k+mwe)))}if(!FRb(a.a,b)){throw Icb(new qz(nwe+b+owe))}if(b==a.c){return a}c=a.c;a.c=b;switch(c.g){case 0:switch(b.g){case 2:TRb(a);break;case 1:$Rb(a);TRb(a);break;case 4:cSb(a);TRb(a);break;case 3:cSb(a);$Rb(a);TRb(a);}break;case 2:switch(b.g){case 1:$Rb(a);_Rb(a);break;case 4:cSb(a);TRb(a);break;case 3:cSb(a);$Rb(a);TRb(a);}break;case 1:switch(b.g){case 2:$Rb(a);_Rb(a);break;case 4:$Rb(a);cSb(a);TRb(a);break;case 3:$Rb(a);cSb(a);$Rb(a);TRb(a);}break;case 4:switch(b.g){case 2:cSb(a);TRb(a);break;case 1:cSb(a);$Rb(a);TRb(a);break;case 3:$Rb(a);_Rb(a);}break;case 3:switch(b.g){case 2:$Rb(a);cSb(a);TRb(a);break;case 1:$Rb(a);cSb(a);$Rb(a);TRb(a);break;case 4:$Rb(a);_Rb(a);}}return a} +function qmc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;l=a.b;k=new Qjb(l,0);Pjb(k,new s$b(a));s=false;g=1;while(k.b0&&(b.a+=pte,b);Ppd(JD(dKd(h),174),b)}b.a+=jye;i=new oKd((!d.c&&(d.c=new Wge(L3,d,5,8)),d.c));while(i.e!=i.i.gc()){i.e>0&&(b.a+=pte,b);Ppd(JD(dKd(i),174),b)}b.a+=')'}}} +function _Mb(a,b,c){var d,e,f,g,h,i,j,k;for(i=new fKd((!a.a&&(a.a=new A3d(Q3,a,10,11)),a.a));i.e!=i.i.gc();){h=JD(dKd(i),26);for(e=new Yr(Dr(DEd(h).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),85);!d.b&&(d.b=new Wge(L3,d,4,7));if(!(d.b.i<=1&&(!d.c&&(d.c=new Wge(L3,d,5,8)),d.c.i<=1))){throw Icb(new qbd('Graph must not contain hyperedges.'))}if(!uwd(d)&&h!=EEd(JD(SFd((!d.c&&(d.c=new Wge(L3,d,5,8)),d.c),0),84))){j=new DNb;jNb(j,d);oNb(j,(iPb(),gPb),d);ANb(j,JD(Wd(vsb(c.f,h)),155));BNb(j,JD(bjb(c,EEd(JD(SFd((!d.c&&(d.c=new Wge(L3,d,5,8)),d.c),0),84))),155));Ylb(b.c,j);for(g=new fKd((!d.n&&(d.n=new A3d(P3,d,1,7)),d.n));g.e!=g.i.gc();){f=JD(dKd(g),157);k=new JNb(j,f.a);jNb(k,f);oNb(k,gPb,f);k.e.a=$wnd.Math.max(f.g,1);k.e.b=$wnd.Math.max(f.f,1);INb(k);Ylb(b.d,k)}}}}} +function C8b(a,b,c){var d,e,f,g,h,i,j,k,l,m;c.Tg('Node promotion heuristic',1);a.i=b;a.r=JD(lNb(b,($xc(),vwc)),243);a.r!=(Czc(),tzc)&&a.r!=uzc?A8b(a):B8b(a);k=JD(lNb(a.i,uwc),15).a;f=new W8b;switch(a.r.g){case 2:case 1:F8b(a,f);break;case 3:a.r=Bzc;F8b(a,f);i=0;for(h=new Hmb(a.b);h.aa.k){a.r=vzc;F8b(a,f)}break;case 4:a.r=Bzc;F8b(a,f);j=0;for(e=new Hmb(a.c);e.aa.n){a.r=yzc;F8b(a,f)}break;case 6:m=YD($wnd.Math.ceil(a.g.length*k/100));F8b(a,new Z8b(m));break;case 5:l=YD($wnd.Math.ceil(a.e*k/100));F8b(a,new a9b(l));break;case 8:z8b(a,true);break;case 9:z8b(a,false);break;default:F8b(a,f);}a.r!=tzc&&a.r!=uzc?G8b(a,b):H8b(a,b);c.Ug()} +function fHb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;l=new cJb(a);BKb(l,!(b==(ojd(),njd)||b==jjd));k=l.a;m=new aZb;for(e=(zHb(),WC(OC(hN,1),kue,237,0,[wHb,xHb,yHb])),g=0,i=e.length;g0){m.d+=k.n.d;m.d+=k.d}if(m.a>0){m.a+=k.n.a;m.a+=k.d}if(m.b>0){m.b+=k.n.b;m.b+=k.d}if(m.c>0){m.c+=k.n.c;m.c+=k.d}return m} +function a3b(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;m=c.d;l=c.c;f=new Yfd(c.f.a+c.d.b+c.d.c,c.f.b+c.d.d+c.d.a);g=f.b;for(j=new Hmb(a.a);j.a0){a.c[b.c.p][b.p].d+=Ovb(a.i,24)*Nve*0.07000000029802322-0.03500000014901161;a.c[b.c.p][b.p].a=a.c[b.c.p][b.p].d/a.c[b.c.p][b.p].b}} +function j2b(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;for(o=new Hmb(a);o.ad.d;d.d=$wnd.Math.max(d.d,b);if(h&&c){d.d=$wnd.Math.max(d.d,d.a);d.a=d.d+e}break;case 3:c=b>d.a;d.a=$wnd.Math.max(d.a,b);if(h&&c){d.a=$wnd.Math.max(d.a,d.d);d.d=d.a+e}break;case 2:c=b>d.c;d.c=$wnd.Math.max(d.c,b);if(h&&c){d.c=$wnd.Math.max(d.b,d.c);d.b=d.c+e}break;case 4:c=b>d.b;d.b=$wnd.Math.max(d.b,b);if(h&&c){d.b=$wnd.Math.max(d.b,d.c);d.c=d.b+e}}}}} +function hA(a,b){var c,d,e,f,g,h,i,j,k;j='';if(b.length==0){return a.le(zue,xue,-1,-1)}k=Kgb(b);sgb(k.substr(0,3),'at ')&&(k=(RDb(3,k.length+1),k.substr(3)));k=k.replace(/\[.*?\]/g,'');g=k.indexOf('(');if(g==-1){g=k.indexOf('@');if(g==-1){j=k;k=''}else{j=Kgb((RDb(g+1,k.length+1),k.substr(g+1)));k=Kgb((QDb(0,g,k.length),k.substr(0,g)))}}else{c=k.indexOf(')',g);j=(QDb(g+1,c,k.length),k.substr(g+1,c-(g+1)));k=Kgb((QDb(0,g,k.length),k.substr(0,g)))}g=xgb(k,Mgb(46));g!=-1&&(k=(RDb(g+1,k.length+1),k.substr(g+1)));(k.length==0||sgb(k,'Anonymous function'))&&(k=xue);h=Agb(j,Mgb(58));e=Bgb(j,Mgb(58),h-1);i=-1;d=-1;f=zue;if(h!=-1&&e!=-1){f=(QDb(0,e,j.length),j.substr(0,e));i=bA((QDb(e+1,h,j.length),j.substr(e+1,h-(e+1))));d=bA((RDb(h+1,j.length+1),j.substr(h+1)))}return a.le(f,k,i,d)} +function i0b(a){var b,c,d,e,f,g,h,i,j,k,l;for(j=new Hmb(a);j.a0||k.j==lmd&&k.e.c.length-k.g.c.length<0)){b=false;break}for(e=new Hmb(k.g);e.a=j&&v>=q){m+=o.n.b+p.n.b+p.a.b-u;++h}}}}if(c){for(g=new Hmb(s.e);g.a=j&&v>=q){m+=o.n.b+p.n.b+p.a.b-u;++h}}}}}if(h>0){w+=m/h;++n}}if(n>0){b.a=e*w/n;b.g=n}else{b.a=0;b.g=0}} +function gHb(a,b,c,d){var e,f,g,h,i;h=new cJb(b);KKb(h,d);e=true;if(!!a&&a.nf((gjd(),shd))){f=JD(a.mf((gjd(),shd)),86);e=f==(ojd(),mjd)||f==kjd||f==ljd}AKb(h,false);_lb(h.e.Pf(),new FKb(h,false,e));eKb(h,h.f,(zHb(),wHb),(mmd(),Uld));eKb(h,h.f,yHb,jmd);eKb(h,h.g,wHb,lmd);eKb(h,h.g,yHb,Tld);gKb(h,Uld);gKb(h,jmd);fKb(h,Tld);fKb(h,lmd);rKb();g=h.A.Gc((Vmd(),Rmd))&&h.B.Gc((ind(),dnd))?sKb(h):null;!!g&&WHb(h.a,g);xKb(h);ZJb(h);gLb(h);UJb(h);IKb(h);$Kb(h);QKb(h,Uld);QKb(h,jmd);VJb(h);HKb(h);if(!c){return h.o}vKb(h);cLb(h);QKb(h,Tld);QKb(h,lmd);i=h.B.Gc((ind(),end));iKb(h,i,Uld);iKb(h,i,jmd);jKb(h,i,Tld);jKb(h,i,lmd);VBb(new gCb(null,new Wvb(new nkb(h.i),0)),new kKb);VBb(SBb(new gCb(null,ii(h.r).a.oc()),new mKb),new oKb);wKb(h);h.e.Nf(h.o);VBb(new gCb(null,ii(h.r).a.oc()),new yKb);return h.o} +function kSb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;j=ove;for(d=new Hmb(a.a.b);d.a1){n=new TRc(o,t,d);Efb(t,new JRc(a,n));nDb(g.c,n);for(l=t.a.ec().Jc();l.Ob();){k=JD(l.Pb(),49);dmb(f,k.b)}}if(h.a.gc()>1){n=new TRc(o,h,d);Efb(h,new LRc(a,n));nDb(g.c,n);for(l=h.a.ec().Jc();l.Ob();){k=JD(l.Pb(),49);dmb(f,k.b)}}}} +function n4b(a,b){var c,d,e,f,g,h;if(!JD(lNb(b,(Krc(),Rqc)),22).Gc((Lpc(),Epc))){return}for(h=new Hmb(b.a);h.a=0&&g0&&(JD($qb(a.b,b),127).a.b=c)} +function I$b(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;n=0;d=new esb;for(f=new fKd((!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a));f.e!=f.i.gc();){e=JD(dKd(f),26);if(!Odb(LD(Pud(e,($xc(),Rwc))))){l=Czd(e);if(M$b(l)&&!Odb(LD(Pud(e,yvc)))){Rud(e,(Krc(),grc),zfb(n));++n;Qud(e,wvc)&&bsb(d,JD(Pud(e,wvc),15))}Q$b(a,e,c)}}oNb(c,(Krc(),frc),zfb(n));oNb(c,Bqc,zfb(d.a.gc()));n=0;for(k=new fKd((!b.b&&(b.b=new A3d(N3,b,12,3)),b.b));k.e!=k.i.gc();){i=JD(dKd(k),85);if(M$b(b)){Rud(i,grc,zfb(n));++n}q=NEd(i);r=OEd(i);m=Odb(LD(Pud(q,($xc(),jwc))));p=!Odb(LD(Pud(i,Rwc)));o=m&&vwd(i)&&Odb(LD(Pud(i,kwc)));g=Czd(q)==b&&Czd(q)==Czd(r);h=(Czd(q)==b&&r==b)^(Czd(r)==b&&q==b);p&&!o&&(h||g)&&N$b(a,i,b,c)}if(Czd(b)){for(j=new fKd(Bzd(Czd(b)));j.e!=j.i.gc();){i=JD(dKd(j),85);q=NEd(i);if(q==b&&vwd(i)){o=Odb(LD(Pud(q,($xc(),jwc))))&&Odb(LD(Pud(i,kwc)));o&&N$b(a,i,b,c)}}}} +function c3b(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;w=new imb;for(o=new Hmb(a.b);o.a=b.length)return {done:true};var a=b[d++];return {value:[a,c.get(a)],done:false}}}};if(!Ksb()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype[Jve]=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e} +function MWc(){MWc=ndb;DWc=new nEd(Kxe);new nEd(Lxe);new oEd('DEPTH',zfb(0));rWc=new oEd('FAN',zfb(0));pWc=new oEd(DCe,zfb(0));JWc=new oEd('ROOT',(Ndb(),false));xWc=new oEd('LEFTNEIGHBOR',null);HWc=new oEd('RIGHTNEIGHBOR',null);yWc=new oEd('LEFTSIBLING',null);IWc=new oEd('RIGHTSIBLING',null);qWc=new oEd('DUMMY',false);new oEd('LEVEL',zfb(0));GWc=new oEd('REMOVABLE_EDGES',new aub);KWc=new oEd('XCOOR',zfb(0));LWc=new oEd('YCOOR',zfb(0));zWc=new oEd('LEVELHEIGHT',0);BWc=new oEd('LEVELMIN',0);AWc=new oEd('LEVELMAX',0);tWc=new oEd('GRAPH_XMIN',0);vWc=new oEd('GRAPH_YMIN',0);sWc=new oEd('GRAPH_XMAX',0);uWc=new oEd('GRAPH_YMAX',0);oWc=new oEd('COMPACT_LEVEL_ASCENSION',false);nWc=new oEd('COMPACT_CONSTRAINTS',new imb);wWc=new oEd('ID','');EWc=new oEd('POSITION',zfb(0));FWc=new oEd('PRELIM',0);CWc=new oEd('MODIFIER',0);mWc=new nEd(Mxe);lWc=new nEd(Nxe)} +function zoe(a){xoe();var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(a==null)return null;l=a.length*8;if(l==0){return ''}h=l%24;n=l/24|0;m=h!=0?n+1:n;f=null;f=SC(_D,Aue,30,m*4,15,1);j=0;k=0;b=0;c=0;d=0;g=0;e=0;for(i=0;i>24;j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;p=(c&-128)==0?c>>4<<24>>24:(c>>4^240)<<24>>24;q=(d&-128)==0?d>>6<<24>>24:(d>>6^252)<<24>>24;f[g++]=woe[o];f[g++]=woe[p|j<<4];f[g++]=woe[k<<2|q];f[g++]=woe[d&63]}if(h==8){b=a[e];j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;f[g++]=woe[o];f[g++]=woe[j<<4];f[g++]=61;f[g++]=61}else if(h==16){b=a[e];c=a[e+1];k=(c&15)<<24>>24;j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;p=(c&-128)==0?c>>4<<24>>24:(c>>4^240)<<24>>24;f[g++]=woe[o];f[g++]=woe[p|j<<4];f[g++]=woe[k<<2];f[g++]=61}return Pgb(f,0,f.length)} +function uB(a,b){var c,d,e,f,g,h,i;a.e==0&&a.p>0&&(a.p=-(a.p-1));a.p>rue&&lB(b,a.p-Oue);g=b.q.getDate();fB(b,1);a.k>=0&&iB(b,a.k);if(a.c>=0){fB(b,a.c)}else if(a.k>=0){i=new nB(b.q.getFullYear()-Oue,b.q.getMonth(),35);d=35-i.q.getDate();fB(b,$wnd.Math.min(d,g))}else{fB(b,g)}a.f<0&&(a.f=b.q.getHours());a.b>0&&a.f<12&&(a.f+=12);gB(b,a.f==24&&a.g?0:a.f);a.j>=0&&hB(b,a.j);a.n>=0&&jB(b,a.n);a.i>=0&&kB(b,Jcb(Vcb(Ncb(Pcb(b.q.getTime()),hue),hue),a.i));if(a.a){e=new mB;lB(e,e.q.getFullYear()-Oue-80);Tcb(Pcb(b.q.getTime()),Pcb(e.q.getTime()))&&lB(b,e.q.getFullYear()-Oue+100)}if(a.d>=0){if(a.c==-1){c=(7+a.d-b.q.getDay())%7;c>3&&(c-=7);h=b.q.getMonth();fB(b,b.q.getDate()+c);b.q.getMonth()!=h&&fB(b,b.q.getDate()+(c>0?-7:7))}else{if(b.q.getDay()!=a.d){return false}}}if(a.o>rue){f=b.q.getTimezoneOffset();kB(b,Jcb(Pcb(b.q.getTime()),(a.o-f)*60*hue))}return true} +function p_b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;e=lNb(b,(Krc(),hrc));if(!RD(e,206)){return}o=JD(e,26);p=b.e;m=new Zfd(b.c);f=b.d;m.a+=f.b;m.b+=f.d;u=JD(Pud(o,($xc(),Qwc)),182);if(Hrb(u,(ind(),and))){n=JD(Pud(o,Swc),104);dYb(n,f.a);gYb(n,f.d);eYb(n,f.b);fYb(n,f.c)}c=new imb;for(k=new Hmb(b.a);k.ad.c.length-1){Ylb(d,new ard(dCe,xCe))}c=JD(lNb(e,BXc),15).a;if(pjd(JD(lNb(a,bXc),86))){e.e.aReb(MD((JDb(c,d.c.length),JD(d.c[c],49)).b))&&_qd((JDb(c,d.c.length),JD(d.c[c],49)),e.e.a+e.f.a)}else{e.e.bReb(MD((JDb(c,d.c.length),JD(d.c[c],49)).b))&&_qd((JDb(c,d.c.length),JD(d.c[c],49)),e.e.b+e.f.b)}}for(f=Wtb(a.b,0);f.b!=f.d.c;){e=JD(iub(f),40);c=JD(lNb(e,(DXc(),BXc)),15).a;oNb(e,(MWc(),BWc),MD((JDb(c,d.c.length),JD(d.c[c],49)).a));oNb(e,AWc,MD((JDb(c,d.c.length),JD(d.c[c],49)).b))}b.Ug()} +function A8b(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;a.o=Reb(MD(lNb(a.i,($xc(),Dxc))));a.f=Reb(MD(lNb(a.i,xxc)));a.j=a.i.b.c.length;h=a.j-1;m=0;a.k=0;a.n=0;a.b=Wu(SC(UI,Ote,15,a.j,0,1));a.c=Wu(SC(LI,Ote,346,a.j,7,1));for(g=new Hmb(a.i.b);g.a0&&Ylb(a.q,k);Ylb(a.p,k)}b-=d;n=i+b;j+=b*a.f;fmb(a.b,h,zfb(n));fmb(a.c,h,j);a.k=$wnd.Math.max(a.k,n);a.n=$wnd.Math.max(a.n,j);a.e+=b;b+=p}} +function PUc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;if(b.b!=0){n=new aub;h=null;o=null;d=YD($wnd.Math.floor($wnd.Math.log(b.b)*$wnd.Math.LOG10E)+1);i=0;for(t=Wtb(b,0);t.b!=t.d.c;){r=JD(iub(t),40);if(XD(o)!==XD(lNb(r,(MWc(),wWc)))){o=OD(lNb(r,wWc));i=0}o!=null?(h=o+SUc(i++,d)):(h=SUc(i++,d));oNb(r,wWc,h);for(q=(e=Wtb((new zTc(r)).a.d,0),new CTc(e));hub(q.a);){p=JD(iub(q.a),65).c;Ttb(n,p,n.c.b,n.c);oNb(p,wWc,h)}}m=new Yrb;for(g=0;g0&&(t-=n);QXb(g,t);k=0;for(m=new Hmb(g.a);m.a0);h.a.Xb(h.c=--h.b)}i=0.4*d*k;!f&&h.b0){j=(RDb(0,c.length),c.charCodeAt(0));if(j!=64){if(j==37){m=c.lastIndexOf('%');k=false;if(m!=0&&(m==n-1||(k=(RDb(m+1,c.length),c.charCodeAt(m+1)==46)))){h=(QDb(1,m,c.length),c.substr(1,m-1));u=sgb('%',h)?null:mQd(h);e=0;if(k){try{e=Vdb((RDb(m+2,c.length+1),c.substr(m+2)),rue,lte)}catch(a){a=Hcb(a);if(RD(a,131)){i=a;throw Icb(new PQd(i))}else throw Icb(a)}}for(r=N0d(b.Dh());r.Ob();){p=i1d(r);if(RD(p,504)){f=JD(p,587);t=f.d;if((u==null?t==null:sgb(u,t))&&e--==0){return f}}}return null}}l=c.lastIndexOf('.');o=l==-1?c:(QDb(0,l,c.length),c.substr(0,l));d=0;if(l!=-1){try{d=Vdb((RDb(l+1,c.length+1),c.substr(l+1)),rue,lte)}catch(a){a=Hcb(a);if(RD(a,131)){o=c}else throw Icb(a)}}o=sgb('%',o)?null:mQd(o);for(q=N0d(b.Dh());q.Ob();){p=i1d(q);if(RD(p,197)){g=JD(p,197);s=g.ve();if((o==null?s==null:sgb(o,s))&&d--==0){return g}}}return null}}return Ysd(b,c)} +function Gfc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;k=new Yrb;i=new Np;for(d=new Hmb(a.a.a.b);d.ab.d.c){n=a.c[b.a.d];q=a.c[l.a.d];if(n==q){continue}UFb(XFb(WFb(YFb(VFb(new ZFb,1),100),n),q))}}}}}}} +function OKb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;m=JD(JD(Qc(a.r,b),22),83);if(b==(mmd(),Tld)||b==lmd){SKb(a,b);return}f=b==Uld?(OLb(),KLb):(OLb(),NLb);u=b==Uld?(XIb(),WIb):(XIb(),UIb);c=JD($qb(a.b,b),127);d=c.i;e=d.c+nfd(WC(OC(aE,1),vve,30,15,[c.n.b,a.C.b,a.k]));r=d.c+d.b-nfd(WC(OC(aE,1),vve,30,15,[c.n.c,a.C.c,a.k]));g=wLb(BLb(f),a.t);s=b==Uld?pve:ove;for(l=m.Jc();l.Ob();){j=JD(l.Pb(),115);if(!j.c||j.c.d.c.length<=0){continue}q=j.b.Kf();p=j.e;n=j.c;o=n.i;o.b=(i=n.n,n.e.a+i.b+i.c);o.a=(h=n.n,n.e.b+h.d+h.a);Mub(u,Hwe);n.f=u;rIb(n,(eIb(),dIb));o.c=p.a-(o.b-q.a)/2;v=$wnd.Math.min(e,p.a);w=$wnd.Math.max(r,p.a+q.a);o.cw&&(o.c=w-o.b);Ylb(g.d,new ULb(o,uLb(g,o)));s=b==Uld?$wnd.Math.max(s,p.b+j.b.Kf().b):$wnd.Math.min(s,p.b)}s+=b==Uld?a.t:-a.t;t=vLb((g.e=s,g));t>0&&(JD($qb(a.b,b),127).a.b=t);for(k=m.Jc();k.Ob();){j=JD(k.Pb(),115);if(!j.c||j.c.d.c.length<=0){continue}o=j.c.i;o.c-=j.e.a;o.d-=j.e.b}} +function Gib(a,b){Eib();var c,d,e,f,g,h,i,j,k,l,m,n,o,p;i=Lcb(a,0)<0;i&&(a=Wcb(a));if(Lcb(a,0)==0){switch(b){case 0:return '0';case 1:return zve;case 2:return '0.00';case 3:return '0.000';case 4:return '0.0000';case 5:return '0.00000';case 6:return '0.000000';default:n=new ihb;b<0?(n.a+='0E+',n):(n.a+='0E',n);n.a+=b==rue?'2147483648':''+-b;return n.a;}}k=18;l=SC(_D,Aue,30,k+1,15,1);c=k;p=a;do{j=p;p=Ncb(p,10);l[--c]=ddb(Jcb(48,adb(j,Vcb(p,10))))&Bue}while(Lcb(p,0)!=0);e=adb(adb(adb(k,c),b),1);if(b==0){i&&(l[--c]=45);return Pgb(l,c,k-c)}if(b>0&&Lcb(e,-6)>=0){if(Lcb(e,0)>=0){f=c+ddb(e);for(h=k-1;h>=f;h--){l[h+1]=l[h]}l[++f]=46;i&&(l[--c]=45);return Pgb(l,c,k-c+1)}for(g=2;Tcb(g,Jcb(Wcb(e),1));g++){l[--c]=48}l[--c]=46;l[--c]=48;i&&(l[--c]=45);return Pgb(l,c,k-c)}o=c+1;d=k;m=new jhb;i&&(m.a+='-',m);if(d-o>=1){$gb(m,l[c]);m.a+='.';m.a+=Pgb(l,c+1,k-c-1)}else{m.a+=Pgb(l,c,k-c)}m.a+='E';Lcb(e,0)>0&&(m.a+='+',m);m.a+=''+edb(e);return m.a} +function v1c(a){kdd(a,new vcd(Ccd(Gcd(Dcd(Fcd(Ecd(new Icd,pDe),'ELK Radial'),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new y1c),pDe)));idd(a,pDe,PBe,mEd(l1c));idd(a,pDe,qxe,mEd(s1c));idd(a,pDe,Cxe,mEd(e1c));idd(a,pDe,Vxe,mEd(f1c));idd(a,pDe,Bxe,mEd(g1c));idd(a,pDe,Dxe,mEd(d1c));idd(a,pDe,zxe,mEd(h1c));idd(a,pDe,Exe,mEd(k1c));idd(a,pDe,gDe,mEd(b1c));idd(a,pDe,fDe,mEd(c1c));idd(a,pDe,eDe,mEd(n1c));idd(a,pDe,kDe,mEd(q1c));idd(a,pDe,lDe,mEd(o1c));idd(a,pDe,mDe,mEd(p1c));idd(a,pDe,jDe,mEd(i1c));idd(a,pDe,cDe,mEd(j1c));idd(a,pDe,dDe,mEd(m1c));idd(a,pDe,hDe,mEd(r1c));idd(a,pDe,iDe,mEd(t1c));idd(a,pDe,bDe,mEd(a1c))} +function Rpd(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;q=new Yfd(a.g,a.f);p=Ipd(a);p.a=$wnd.Math.max(p.a,b);p.b=$wnd.Math.max(p.b,c);w=p.a/q.a;k=p.b/q.b;u=p.a-q.a;i=p.b-q.b;if(d){g=!Czd(a)?JD(Pud(a,(gjd(),shd)),86):JD(Pud(Czd(a),(gjd(),shd)),86);h=XD(Pud(a,(gjd(),qid)))===XD((xld(),sld));for(s=new fKd((!a.c&&(a.c=new A3d(R3,a,9,9)),a.c));s.e!=s.i.gc();){r=JD(dKd(s),125);t=JD(Pud(r,xid),64);if(t==(mmd(),kmd)){t=Bpd(r,g);Rud(r,xid,t)}switch(t.g){case 1:h||Mvd(r,r.i*w);break;case 2:Mvd(r,r.i+u);h||Nvd(r,r.j*k);break;case 3:h||Mvd(r,r.i*w);Nvd(r,r.j+i);break;case 4:h||Nvd(r,r.j*k);}}}Ivd(a,p.a,p.b);if(e){for(m=new fKd((!a.n&&(a.n=new A3d(P3,a,1,7)),a.n));m.e!=m.i.gc();){l=JD(dKd(m),157);n=l.i+l.g/2;o=l.j+l.f/2;v=n/q.a;j=o/q.b;if(v+j>=1){if(v-j>0&&o>=0){Mvd(l,l.i+u);Nvd(l,l.j+i*j)}else if(v-j<0&&n>=0){Mvd(l,l.i+u*v);Nvd(l,l.j+i)}}}}Rud(a,(gjd(),Vhd),(Vmd(),f=JD(teb(N2),10),new Krb(f,JD(kDb(f,f.length),10),0)));return new Yfd(w,k)} +function Wdb(a){var b,c,d,e,f,g,h,i,j,k,l;if(a==null){throw Icb(new agb(vte))}j=a;f=a.length;i=false;if(f>0){b=(RDb(0,a.length),a.charCodeAt(0));if(b==45||b==43){a=(RDb(1,a.length+1),a.substr(1));--f;i=b==45}}if(f==0){throw Icb(new agb(nve+j+'"'))}while(a.length>0&&(RDb(0,a.length),a.charCodeAt(0)==48)){a=(RDb(1,a.length+1),a.substr(1));--f}if(f>(_fb(),Zfb)[10]){throw Icb(new agb(nve+j+'"'))}for(e=0;e0){l=-parseInt((QDb(0,d,a.length),a.substr(0,d)),10);a=(RDb(d,a.length+1),a.substr(d));f-=d;c=false}while(f>=g){d=parseInt((QDb(0,g,a.length),a.substr(0,g)),10);a=(RDb(g,a.length+1),a.substr(g));f-=g;if(c){c=false}else{if(Lcb(l,h)<0){throw Icb(new agb(nve+j+'"'))}l=Vcb(l,k)}l=adb(l,d)}if(Lcb(l,0)>0){throw Icb(new agb(nve+j+'"'))}if(!i){l=Wcb(l);if(Lcb(l,0)<0){throw Icb(new agb(nve+j+'"'))}}return l} +function mQd(a){eQd();var b,c,d,e,f,g,h,i;if(a==null)return null;e=xgb(a,Mgb(37));if(e<0){return a}else{i=new khb((QDb(0,e,a.length),a.substr(0,e)));b=SC($D,SFe,30,4,15,1);h=0;d=0;for(g=a.length;ee+2&&xQd((RDb(e+1,a.length),a.charCodeAt(e+1)),VPd,WPd)&&xQd((RDb(e+2,a.length),a.charCodeAt(e+2)),VPd,WPd)){c=BQd((RDb(e+1,a.length),a.charCodeAt(e+1)),(RDb(e+2,a.length),a.charCodeAt(e+2)));e+=2;if(d>0){(c&192)==128?(b[h++]=c<<24>>24):(d=0)}else if(c>=128){if((c&224)==192){b[h++]=c<<24>>24;d=2}else if((c&240)==224){b[h++]=c<<24>>24;d=3}else if((c&248)==240){b[h++]=c<<24>>24;d=4}}if(d>0){if(h==d){switch(h){case 2:{$gb(i,((b[0]&31)<<6|b[1]&63)&Bue);break}case 3:{$gb(i,((b[0]&15)<<12|(b[1]&63)<<6|b[2]&63)&Bue);break}}h=0;d=0}}else{for(f=0;f=2){if((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a).i==0){c=(ksd(),e=new Ywd,e);YEd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a),c)}else if((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a).i>1){m=new oKd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a));while(m.e!=m.i.gc()){eKd(m)}}ypd(b,JD(SFd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a),0),170))}if(l){for(d=new fKd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a));d.e!=d.i.gc();){c=JD(dKd(d),170);for(j=new fKd((!c.a&&(c.a=new VXd(K3,c,5)),c.a));j.e!=j.i.gc();){i=JD(dKd(j),372);h.a=$wnd.Math.max(h.a,i.a);h.b=$wnd.Math.max(h.b,i.b)}}}for(g=new fKd((!a.n&&(a.n=new A3d(P3,a,1,7)),a.n));g.e!=g.i.gc();){f=JD(dKd(g),157);k=JD(Pud(f,qkd),8);!!k&&Kvd(f,k.a,k.b);if(l){h.a=$wnd.Math.max(h.a,f.i+f.g);h.b=$wnd.Math.max(h.b,f.j+f.f)}}return h} +function EA(a,b,c,d,e){var f,g,h;CA(a,b);g=b[0];f=pgb(c.c,0);h=-1;if(vA(c)){if(d>0){if(g+d>a.length){return false}h=zA((QDb(0,g+d,a.length),a.substr(0,g+d)),b)}else{h=zA(a,b)}}switch(f){case 71:h=wA(a,g,WC(OC(hJ,1),Ote,2,6,[Que,Rue]),b);e.e=h;return true;case 77:return HA(a,b,e,h,g);case 76:return JA(a,b,e,h,g);case 69:return FA(a,b,g,e);case 99:return IA(a,b,g,e);case 97:h=wA(a,g,WC(OC(hJ,1),Ote,2,6,['AM','PM']),b);e.b=h;return true;case 121:return LA(a,b,g,h,c,e);case 100:if(h<=0){return false}e.c=h;return true;case 83:if(h<0){return false}return GA(h,g,b[0],e);case 104:h==12&&(h=0);case 75:case 72:if(h<0){return false}e.f=h;e.g=false;return true;case 107:if(h<0){return false}e.f=h;e.g=true;return true;case 109:if(h<0){return false}e.j=h;return true;case 115:if(h<0){return false}e.n=h;return true;case 90:if(gB[i]&&(q=i);for(l=new Hmb(a.a.b);l.a=h){IDb(s.b>0);s.a.Xb(s.c=--s.b);break}else if(q.a>i){if(!d){Ylb(q.b,k);q.c=$wnd.Math.min(q.c,i);q.a=$wnd.Math.max(q.a,h);d=q}else{$lb(d.b,q.b);d.a=$wnd.Math.max(d.a,q.a);Jjb(s)}}}if(!d){d=new oDc;d.c=i;d.a=h;Pjb(s,d);Ylb(d.b,k)}}g=a.b;j=0;for(r=new Hmb(c);r.a1){e=t5c(b);l=f.g;o=JD(Pud(b,t4c),104);p=Reb(MD(Pud(b,c4c)));(!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a).i>1&&Reb(MD(Pud(b,(A3c(),w3c))))!=ove&&(f.c+(o.b+o.c))/(f.b+(o.d+o.a))1&&Reb(MD(Pud(b,(A3c(),v3c))))!=ove&&(f.c+(o.b+o.c))/(f.b+(o.d+o.a))>p&&Rud(e,(A3c(),z3c),$wnd.Math.max(Reb(MD(Pud(b,x3c))),Reb(MD(Pud(e,z3c)))-Reb(MD(Pud(b,v3c)))));n=new U5c(d,k);i=T5c(n,e,m);j=i.g;if(j>=l&&j==j){for(g=0;g<(!e.a&&(e.a=new A3d(Q3,e,10,11)),e.a).i;g++){u5c(a,JD(SFd((!e.a&&(e.a=new A3d(Q3,e,10,11)),e.a),g),26),JD(SFd((!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a),g),26))}v5c(b,n);S6c(f,i.c);R6c(f,i.b)}--h}Rud(b,(A3c(),q3c),f.b);Rud(b,r3c,f.c);c.Ug()} +function IVb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;b.Tg('Compound graph postprocessor',1);c=Odb(LD(lNb(a,($xc(),Oxc))));h=JD(lNb(a,(Krc(),Gqc)),229);k=new esb;for(r=h.ec().Jc();r.Ob();){q=JD(r.Pb(),17);g=new kmb(h.cc(q));Fnb();gmb(g,new lWb(a));v=gWb((JDb(0,g.c.length),JD(g.c[0],250)));A=hWb(JD(amb(g,g.c.length-1),250));t=v.i;OXb(A.i,t)?(s=t.e):(s=xYb(t));l=JVb(q,g);_tb(q.a);m=null;for(f=new Hmb(g);f.ajxe;C=$wnd.Math.abs(m.b-o.b)>jxe;(!c&&B&&C||c&&(B||C))&&Qtb(q.a,u)}xe(q.a,d);d.b==0?(m=u):(m=(IDb(d.b!=0),JD(d.c.b.c,8)));KVb(n,l,p);if(hWb(e)==A){if(xYb(A.i)!=e.a){p=new Wfd;FXb(p,xYb(A.i),s)}oNb(q,Erc,p)}LVb(n,q,s);k.a.yc(n,k)}xWb(q,v);yWb(q,A)}for(j=k.a.ec().Jc();j.Ob();){i=JD(j.Pb(),17);xWb(i,null);yWb(i,null)}b.Ug()} +function HTc(a,b){var c,d,e,f,g,h,i,j,k,l,m;e=JD(lNb(a,(DXc(),bXc)),86);k=e==(ojd(),kjd)||e==ljd?jjd:ljd;c=JD(PBb(SBb(new gCb(null,new Wvb(a.b,16)),new uUc),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[(CAb(),AAb)]))),16);i=JD(PBb(WBb(c.Mc(),new wUc(b)),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[AAb]))),16);i.Fc(JD(PBb(WBb(c.Mc(),new yUc(b)),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[AAb]))),18));i.gd(new AUc(k));m=new Dzb(new EUc(e));d=new Yrb;for(h=i.Jc();h.Ob();){g=JD(h.Pb(),240);j=JD(g.a,40);if(Odb(LD(g.c))){m.a.yc(j,(Ndb(),Ldb))==null;(new Ezb(m.a.Xc(j,false))).a.gc()>0&&ejb(d,j,JD((new Ezb(m.a.Xc(j,false))).a.Tc(),40));(new Ezb(m.a.$c(j,true))).a.gc()>1&&ejb(d,JTc(m,j),j)}else{if((new Ezb(m.a.Xc(j,false))).a.gc()>0){f=JD((new Ezb(m.a.Xc(j,false))).a.Tc(),40);XD(f)===XD(Wd(vsb(d.f,j)))&&JD(lNb(j,(MWc(),nWc)),16).Ec(f)}if((new Ezb(m.a.$c(j,true))).a.gc()>1){l=JTc(m,j);XD(Wd(vsb(d.f,l)))===XD(j)&&JD(lNb(l,(MWc(),nWc)),16).Ec(j)}m.a.Ac(j)!=null}}} +function RMb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;if(a.gc()==1){return JD(a.Xb(0),235)}else if(a.gc()<=0){return new HNb}for(e=a.Jc();e.Ob();){c=JD(e.Pb(),235);o=0;k=lte;l=lte;i=rue;j=rue;for(n=new Hmb(c.e);n.ah){t=0;u+=g+r;g=0}QMb(p,c,t,u);b=$wnd.Math.max(b,t+q.a);g=$wnd.Math.max(g,q.b);t+=q.a+r}return p} +function yoe(a){xoe();var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(a==null)return null;f=Hgb(a);o=Boe(f);if(o%4!=0){return null}p=o/4|0;if(p==0)return SC($D,SFe,30,0,15,1);l=null;b=0;c=0;d=0;e=0;g=0;h=0;i=0;j=0;n=0;m=0;k=0;l=SC($D,SFe,30,p*3,15,1);for(;n>4)<<24>>24;l[m++]=((c&15)<<4|d>>2&15)<<24>>24;l[m++]=(d<<6|e)<<24>>24}if(!Aoe(g=f[k++])||!Aoe(h=f[k++])){return null}b=voe[g];c=voe[h];i=f[k++];j=f[k++];if(voe[i]==-1||voe[j]==-1){if(i==61&&j==61){if((c&15)!=0)return null;q=SC($D,SFe,30,n*3+1,15,1);ohb(l,0,q,0,n*3);q[m]=(b<<2|c>>4)<<24>>24;return q}else if(i!=61&&j==61){d=voe[i];if((d&3)!=0)return null;q=SC($D,SFe,30,n*3+2,15,1);ohb(l,0,q,0,n*3);q[m++]=(b<<2|c>>4)<<24>>24;q[m]=((c&15)<<4|d>>2&15)<<24>>24;return q}else{return null}}else{d=voe[i];e=voe[j];l[m++]=(b<<2|c>>4)<<24>>24;l[m++]=((c&15)<<4|d>>2&15)<<24>>24;l[m++]=(d<<6|e)<<24>>24}return l} +function d9b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;b.Tg(Jye,1);o=JD(lNb(a,($xc(),Wvc)),222);for(e=new Hmb(a.b);e.a=2){p=true;m=new Hmb(f.j);c=JD(Fmb(m),12);n=null;while(m.a0){d=l.gc();j=YD($wnd.Math.floor((d+1)/2))-1;e=YD($wnd.Math.ceil((d+1)/2))-1;if(b.o==ZMc){for(k=e;k>=j;k--){if(b.a[u.p]==u){p=JD(l.Xb(k),49);o=JD(p.a,9);if(!csb(c,p.b)&&n>a.b.e[o.p]){b.a[o.p]=u;b.g[u.p]=b.g[o.p];b.a[u.p]=b.g[u.p];b.f[b.g[u.p].p]=(Ndb(),Odb(b.f[b.g[u.p].p])&u.k==(UYb(),PYb)?true:false);n=a.b.e[o.p]}}}}else{for(k=j;k<=e;k++){if(b.a[u.p]==u){r=JD(l.Xb(k),49);q=JD(r.a,9);if(!csb(c,r.b)&&n0){e=JD(amb(q.c.a,w-1),9);g=a.i[e.p];B=$wnd.Math.ceil(DAc(a.n,e,q));f=v.a.e-q.d.d-(g.a.e+e.o.b+e.d.a)-B}j=ove;if(w0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)<0;o=t.a.e.e-t.a.a-(t.b.e.e-t.b.a)<0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)>0;n=t.a.e.e+t.b.aA.b.e.e+A.a.a;u=0;!p&&!o&&(m?f+l>0?(u=l):j-d>0&&(u=d):n&&(f+h>0?(u=h):j-s>0&&(u=s)));v.a.e+=u;v.b&&(v.d.e+=u);return false} +function oHb(a,b,c){var d,e,f,g,h,i,j,k,l,m;d=new Afd(b.Jf().a,b.Jf().b,b.Kf().a,b.Kf().b);e=new zfd;if(a.c){for(g=new Hmb(b.Pf());g.a0&&HYb(n,(JDb(c,b.c.length),JD(b.c[c],25)));f=0;m=true;r=$u(Uu(yYb(n)));for(i=r.Jc();i.Ob();){h=JD(i.Pb(),17);m=false;l=h;for(j=0;j(JDb(j,b.c.length),JD(b.c[j],25)).a.c.length?HYb(e,(JDb(j,b.c.length),JD(b.c[j],25))):GYb(e,d+f,(JDb(j,b.c.length),JD(b.c[j],25)));l=v8b(l,e)}c>0&&(f+=1)}if(m){for(j=0;j(JDb(j,b.c.length),JD(b.c[j],25)).a.c.length?HYb(e,(JDb(j,b.c.length),JD(b.c[j],25))):GYb(e,d+f,(JDb(j,b.c.length),JD(b.c[j],25)))}c>0&&(f+=1)}g=false;for(p=new Yr(Dr(BYb(n).a.Jc(),new Dl));Wr(p);){o=JD(Xr(p),17);l=o;for(k=c+1;k(JDb(j,b.c.length),JD(b.c[j],25)).a.c.length?HYb(q,(JDb(j,b.c.length),JD(b.c[j],25))):GYb(q,d+1,(JDb(j,b.c.length),JD(b.c[j],25)))}}g&&(f+=1);g=true}return f>0?f-1:0} +function fre(a,b){Tqe();var c,d,e,f,g,h,i,j,k,l,m,n,o;if(ijb(uqe)==0){l=SC(ycb,Ote,121,wqe.length,0,1);for(g=0;gj&&(d.a+=Ogb(SC(_D,Aue,30,-j,15,1)));d.a+='Is';if(xgb(i,Mgb(32))>=0){for(e=0;e=d.o.b/2}else{s=!l}if(s){r=JD(lNb(d,(Krc(),Irc)),16);if(!r){f=new imb;oNb(d,Irc,f)}else if(m){f=r}else{e=JD(lNb(d,zqc),16);if(!e){f=new imb;oNb(d,zqc,f)}else{r.gc()<=e.gc()?(f=r):(f=e)}}}else{e=JD(lNb(d,(Krc(),zqc)),16);if(!e){f=new imb;oNb(d,zqc,f)}else if(l){f=e}else{r=JD(lNb(d,Irc),16);if(!r){f=new imb;oNb(d,Irc,f)}else{e.gc()<=r.gc()?(f=e):(f=r)}}}f.Ec(a);oNb(a,(Krc(),Cqc),c);if(b.d==c){yWb(b,null);c.e.c.length+c.g.c.length==0&&qZb(c,null);a0b(c)}else{xWb(b,null);c.e.c.length+c.g.c.length==0&&qZb(c,null)}_tb(b.a)} +function LDc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I;c.Tg('MinWidth layering',1);n=b.b;A=b.a;I=JD(lNb(b,($xc(),swc)),15).a;h=JD(lNb(b,twc),15).a;a.b=Reb(MD(lNb(b,txc)));a.d=ove;for(u=new Hmb(A);u.an){if(f){Stb(w,m);Stb(B,zfb(j.b-1))}H=c.b;I+=m+b;m=0;k=$wnd.Math.max(k,c.b+c.c+G)}Mvd(h,H);Nvd(h,I);k=$wnd.Math.max(k,H+G+c.c);m=$wnd.Math.max(m,l);H+=G+b}k=$wnd.Math.max(k,d);F=I+m+c.a;if(F0){j=0;!!q&&(j+=h);j+=(C-1)*g;!!t&&(j+=h);B&&!!t&&(j=$wnd.Math.max(j,dRc(t,g,s,A)));if(j=a.a){d=B3b(a,s);k=$wnd.Math.max(k,d.b);u=$wnd.Math.max(u,d.d);Ylb(h,new ard(s,d))}}B=new imb;for(j=0;j0),q.a.Xb(q.c=--q.b),C=new s$b(a.b),Pjb(q,C),IDb(q.b0){m=k<100?null:new iJd(k);j=new aGd(b);o=j.g;r=SC(cE,Pue,30,k,15,1);d=0;u=new _Fd(k);for(e=0;e=0;){if(n!=null?pb(n,o[i]):XD(n)===XD(o[i])){if(r.length<=d){q=r;r=SC(cE,Pue,30,2*r.length,15,1);ohb(q,0,r,0,d)}r[d++]=e;YEd(u,o[i]);break v}}n=n;if(XD(n)===XD(h)){break}}}j=u;o=u.g;k=d;if(d>r.length){q=r;r=SC(cE,Pue,30,d,15,1);ohb(q,0,r,0,d)}if(d>0){t=true;for(f=0;f=0;){VFd(a,r[g])}if(d!=k){for(e=k;--e>=d;){VFd(j,e)}q=r;r=SC(cE,Pue,30,d,15,1);ohb(q,0,r,0,d)}b=j}}}else{b=cFd(a,b);for(e=a.i;--e>=0;){if(b.Gc(a.g[e])){VFd(a,e);t=true}}}if(t){if(r!=null){c=b.gc();l=c==1?bXd(a,4,b.Jc().Pb(),null,r[0],p):bXd(a,6,b,r,r[0],p);m=c<100?null:new iJd(c);for(e=b.Jc();e.Ob();){n=e.Pb();m=mee(a,JD(n,75),m)}if(!m){zsd(a.e,l)}else{m.lj(l);m.mj()}}else{m=vJd(b.gc());for(e=b.Jc();e.Ob();){n=e.Pb();m=mee(a,JD(n,75),m)}!!m&&m.mj()}return true}else{return false}} +function JUb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;c=new QUb(b);c.a||CUb(b);j=BUb(b);i=new Np;q=new cVb;for(p=new Hmb(b.a);p.a0||c.o==ZMc&&e=c} +function kKc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;for(t=a.a,u=0,v=t.length;u0){l=JD(amb(m.c.a,g-1),9);B=DAc(a.b,m,l);q=m.n.b-m.d.d-(l.n.b+l.o.b+l.d.a+B)}else{q=m.n.b-m.d.d}j=$wnd.Math.min(q,j);if(g1&&(g=$wnd.Math.min(g,$wnd.Math.abs(JD(au(h.a,1),8).b-k.b)))}}}}}else{for(p=new Hmb(b.j);p.ae){f=m.a-e;g=lte;d.c.length=0;e=m.a}if(m.a>=e){nDb(d.c,h);h.a.b>1&&(g=$wnd.Math.min(g,$wnd.Math.abs(JD(au(h.a,h.a.b-2),8).b-m.b)))}}}}}if(d.c.length!=0&&f>b.o.a/2&&g>b.o.b/2){n=new sZb;qZb(n,b);rZb(n,(mmd(),Uld));n.n.a=b.o.a/2;r=new sZb;qZb(r,b);rZb(r,jmd);r.n.a=b.o.a/2;r.n.b=b.o.b;for(i=new Hmb(d);i.a=j.b?xWb(h,r):xWb(h,n)}else{j=JD(Ztb(h.a),8);q=h.a.b==0?lZb(h.c):JD(Vtb(h.a),8);q.b>=j.b?yWb(h,r):yWb(h,n)}l=JD(lNb(h,($xc(),nwc)),78);!!l&&ye(l,j,true)}b.n.a=e-b.o.a/2}} +function $Yc(a,b,c){var d,e,f,g,h,i,j,k,l,m;for(h=Wtb(a.b,0);h.b!=h.d.c;){g=JD(iub(h),40);if(sgb(g.c,vCe)){continue}j=ESc(g,a);b==(ojd(),kjd)||b==ljd?gmb(j,new ZZc):gmb(j,new b$c);i=j.c.length;for(d=0;d=0?(n=rmd(h)):(n=omd(rmd(h)));a.of(gxc,n)}j=new Wfd;m=false;if(a.nf(_wc)){Tfd(j,JD(a.mf(_wc),8));m=true}else{Sfd(j,g.a/2,g.b/2)}switch(n.g){case 4:oNb(k,qwc,(Qrc(),Mrc));oNb(k,Iqc,(Eoc(),Doc));k.o.b=g.b;p<0&&(k.o.a=-p);rZb(l,(mmd(),Tld));m||(j.a=g.a);j.a-=g.a;break;case 2:oNb(k,qwc,(Qrc(),Orc));oNb(k,Iqc,(Eoc(),Boc));k.o.b=g.b;p<0&&(k.o.a=-p);rZb(l,(mmd(),lmd));m||(j.a=0);break;case 1:oNb(k,Vqc,(kqc(),jqc));k.o.a=g.a;p<0&&(k.o.b=-p);rZb(l,(mmd(),jmd));m||(j.b=g.b);j.b-=g.b;break;case 3:oNb(k,Vqc,(kqc(),hqc));k.o.a=g.a;p<0&&(k.o.b=-p);rZb(l,(mmd(),Uld));m||(j.b=0);}Tfd(l.n,j);oNb(k,_wc,j);if(b==rld||b==tld||b==sld){o=0;if(b==rld&&a.nf(cxc)){switch(n.g){case 1:case 2:o=JD(a.mf(cxc),15).a;break;case 3:case 4:o=-JD(a.mf(cxc),15).a;}}else{switch(n.g){case 4:case 2:o=f.b;b==tld&&(o/=e.b);break;case 1:case 3:o=f.a;b==tld&&(o/=e.a);}}oNb(k,qrc,o)}oNb(k,Oqc,n);return k} +function QGd(){OGd();function h(f){var g=this;this.dispatch=function(a){var b=a.data;switch(b.cmd){case 'algorithms':var c=RGd((Fnb(),new Eob(new nkb(NGd.b))));f.postMessage({id:b.id,data:c});break;case 'categories':var d=RGd((Fnb(),new Eob(new nkb(NGd.c))));f.postMessage({id:b.id,data:d});break;case 'options':var e=RGd((Fnb(),new Eob(new nkb(NGd.d))));f.postMessage({id:b.id,data:e});break;case 'register':UGd(b.algorithms);f.postMessage({id:b.id});break;case 'layout':SGd(b.graph,b.layoutOptions||{},b.options||{});f.postMessage({id:b.id,data:b.graph});break;}};this.saveDispatch=function(b){try{g.dispatch(b)}catch(a){f.postMessage({id:b.data.id,error:a})}}} +function j(b){var c=this;this.dispatcher=new h({postMessage:function(a){c.onmessage({data:a})}});this.postMessage=function(a){setTimeout(function(){c.dispatcher.saveDispatch({data:a})},0)}} +if(typeof document===Yve&&typeof self!==Yve){var i=new h(self);self.onmessage=i.saveDispatch}else if(typeof module!==Yve&&module.exports){Object.defineProperty(exports,'__esModule',{value:true});module.exports={'default':j,Worker:j}}} +function vod(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I;p=0;D=0;for(j=new Hmb(a.b);j.ap){if(f){Stb(w,n);Stb(B,zfb(k.b-1));Ylb(a.d,o);h.c.length=0}H=c.b;I+=n+b;n=0;l=$wnd.Math.max(l,c.b+c.c+G)}nDb(h.c,i);Kod(i,H,I);l=$wnd.Math.max(l,H+G+c.c);n=$wnd.Math.max(n,m);H+=G+b;o=i}$lb(a.a,h);Ylb(a.d,JD(amb(h,h.c.length-1),167));l=$wnd.Math.max(l,d);F=I+n+c.a;if(Fe.d.d+e.d.a){k.f.d=true}else{k.f.d=true;k.f.a=true}}}d.b!=d.d.c&&(b=c)}if(k){f=JD(bjb(a.f,g.d.i),60);if(b.bf.d.d+f.d.a){k.f.d=true}else{k.f.d=true;k.f.a=true}}}}for(h=new Yr(Dr(yYb(n).a.Jc(),new Dl));Wr(h);){g=JD(Xr(h),17);if(g.a.b!=0){b=JD(Vtb(g.a),8);if(g.d.j==(mmd(),Uld)){q=new Mfc(b,new Yfd(b.a,e.d.d),e,g);q.f.a=true;q.a=g.d;nDb(p.c,q)}if(g.d.j==jmd){q=new Mfc(b,new Yfd(b.a,e.d.d+e.d.a),e,g);q.f.d=true;q.a=g.d;nDb(p.c,q)}}}}}return p} +function Wsd(a,b,c){var d,e,f,g,h,i,j,k,l,m;i=new imb;l=b.length;g=Y3d(c);for(j=0;j=o){if(s>o){n.c.length=0;o=s}nDb(n.c,g)}}if(n.c.length!=0){m=JD(amb(n,Nvb(b,n.c.length)),132);F.a.Ac(m)!=null;m.s=p++;uRc(m,C,w);n.c.length=0}}u=a.c.length+1;for(h=new Hmb(a);h.aD.s){Jjb(c);dmb(D.i,d);if(d.c>0){d.a=D;Ylb(D.t,d);d.b=A;Ylb(A.i,d)}}}}} +function l9b(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;p=new jmb(b.b);u=new jmb(b.b);m=new jmb(b.b);B=new jmb(b.b);q=new jmb(b.b);for(A=Wtb(b,0);A.b!=A.d.c;){v=JD(iub(A),12);for(h=new Hmb(v.g);h.a0;r=v.g.c.length>0;j&&r?(nDb(m.c,v),true):j?(nDb(p.c,v),true):r&&(nDb(u.c,v),true)}for(o=new Hmb(p);o.as.mh()-j.b&&(m=s.mh()-j.b);n>s.nh()-j.d&&(n=s.nh()-j.d);k0){for(t=Wtb(a.f,0);t.b!=t.d.c;){s=JD(iub(t),9);s.p+=m-a.e}_Cc(a);_tb(a.f);YCc(a,d,n)}else{Qtb(a.f,n);n.p=d;a.e=$wnd.Math.max(a.e,d);for(f=new Yr(Dr(yYb(n).a.Jc(),new Dl));Wr(f);){e=JD(Xr(f),17);if(!e.c.i.c&&e.c.i.k==(UYb(),OYb)){Qtb(a.f,e.c.i);e.c.i.p=d-1}}a.c=d}}}else{_Cc(a);_tb(a.f);d=0;if(Wr(new Yr(Dr(yYb(n).a.Jc(),new Dl)))){m=0;m=ZCc(m,n);d=m+2;YCc(a,d,n)}else{Qtb(a.f,n);n.p=0;a.e=$wnd.Math.max(a.e,0);a.b=JD(amb(a.d.b,0),25);a.c=0}}}}a.f.b==0||_Cc(a);a.d.a.c.length=0;r=new imb;for(j=new Hmb(a.d.b);j.a=48&&b<=57){d=b-48;while(e=48&&b<=57){d=d*10+b-48;if(d<0)throw Icb(new Joe(VGd((Fbe(),wHe))))}}else{throw Icb(new Joe(VGd((Fbe(),sHe))))}c=d;if(b==44){if(e>=a.j){throw Icb(new Joe(VGd((Fbe(),uHe))))}else if((b=pgb(a.i,e++))>=48&&b<=57){c=b-48;while(e=48&&b<=57){c=c*10+b-48;if(c<0)throw Icb(new Joe(VGd((Fbe(),wHe))))}if(d>c)throw Icb(new Joe(VGd((Fbe(),vHe))))}else{c=-1}}if(b!=125)throw Icb(new Joe(VGd((Fbe(),tHe))));if(a._l(e)){f=(Tqe(),Tqe(),++Sqe,new Ire(9,f));a.d=e+1}else{f=(Tqe(),Tqe(),++Sqe,new Ire(3,f));a.d=e}f.Mm(d);f.Lm(c);Koe(a)}}return f} +function Nlc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;e=1;n=new imb;for(d=0;d=JD(amb(a.b,d),25).a.c.length/4){continue}}if(JD(amb(a.b,d),25).a.c.length>b){u=new imb;Ylb(u,JD(amb(a.b,d),25));for(g=0;g1){o=new oKd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a));while(o.e!=o.i.gc()){eKd(o)}}g=JD(SFd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a),0),170);q=H;H>v+u?(q=v+u):Hw+p?(r=w+p):Iv-u&&qw-p&&rH+G?(B=H+G):vI+A?(C=I+A):wH-G&&BI-A&&Cc&&(m=c-1);n=N+Ovb(b,24)*Nve*l-l/2;n<0?(n=1):n>d&&(n=d-1);e=(ksd(),i=new evd,i);cvd(e,m);dvd(e,n);YEd((!g.a&&(g.a=new VXd(K3,g,5)),g.a),e)}} +function Hib(a,b){Eib();var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;B=a.e;o=a.d;e=a.a;if(B==0){switch(b){case 0:return '0';case 1:return zve;case 2:return '0.00';case 3:return '0.000';case 4:return '0.0000';case 5:return '0.00000';case 6:return '0.000000';default:w=new ihb;b<0?(w.a+='0E+',w):(w.a+='0E',w);w.a+=-b;return w.a;}}t=o*10+1+7;u=SC(_D,Aue,30,t+1,15,1);c=t;if(o==1){h=e[0];if(h<0){H=Kcb(h,yve);do{p=H;H=Ncb(H,10);u[--c]=48+ddb(adb(p,Vcb(H,10)))&Bue}while(Lcb(H,0)!=0)}else{H=h;do{p=H;H=H/10|0;u[--c]=48+(p-H*10)&Bue}while(H!=0)}}else{D=SC(cE,Pue,30,o,15,1);G=o;ohb(e,0,D,0,G);I:while(true){A=0;for(j=G-1;j>=0;j--){F=Jcb(Zcb(A,32),Kcb(D[j],yve));r=Fib(F);D[j]=ddb(r);A=ddb($cb(r,32))}s=ddb(A);q=c;do{u[--c]=48+s%10&Bue}while((s=s/10|0)!=0&&c!=0);d=9-q+c;for(i=0;i0;i++){u[--c]=48}l=G-1;for(;D[l]==0;l--){if(l==0){break I}}G=l+1}while(u[c]==48){++c}}n=B<0;g=t-c-b-1;if(b==0){n&&(u[--c]=45);return Pgb(u,c,t-c)}if(b>0&&g>=-6){if(g>=0){k=c+g;for(m=t-1;m>=k;m--){u[m+1]=u[m]}u[++k]=46;n&&(u[--c]=45);return Pgb(u,c,t-c+1)}for(l=2;l<-g+1;l++){u[--c]=48}u[--c]=46;u[--c]=48;n&&(u[--c]=45);return Pgb(u,c,t-c)}C=c+1;f=t;v=new jhb;n&&(v.a+='-',v);if(f-C>=1){$gb(v,u[c]);v.a+='.';v.a+=Pgb(u,c+1,t-c-1)}else{v.a+=Pgb(u,c,t-c)}v.a+='E';g>0&&(v.a+='+',v);v.a+=''+g;return v.a} +function q7c(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;a.c=b;a.g=new Yrb;c=(urd(),new Ird(a.c));d=new pHb(c);lHb(d);t=OD(Pud(a.c,(W8c(),P8c)));i=JD(Pud(a.c,R8c),330);v=JD(Pud(a.c,S8c),427);g=JD(Pud(a.c,K8c),477);u=JD(Pud(a.c,Q8c),428);a.j=Reb(MD(Pud(a.c,T8c)));h=a.a;switch(i.g){case 0:h=a.a;break;case 1:h=a.b;break;case 2:h=a.i;break;case 3:h=a.e;break;case 4:h=a.f;break;default:throw Icb(new hfb(UDe+(i.f!=null?i.f:''+i.g)));}a.d=new Z7c(h,v,g);oNb(a.d,(nMb(),lMb),LD(Pud(a.c,M8c)));a.d.c=Odb(LD(Pud(a.c,L8c)));if(Azd(a.c).i==0){return a.d}for(l=new fKd(Azd(a.c));l.e!=l.i.gc();){k=JD(dKd(l),26);n=k.g/2;m=k.f/2;w=new Yfd(k.i+n,k.j+m);while(_ib(a.g,w)){Ffd(w,($wnd.Math.random()-0.5)*jxe,($wnd.Math.random()-0.5)*jxe)}p=JD(Pud(k,(gjd(),Phd)),140);q=new sMb(w,new Afd(w.a-n-a.j/2-p.b,w.b-m-a.j/2-p.d,k.g+a.j+(p.b+p.c),k.f+a.j+(p.d+p.a)));Ylb(a.d.i,q);ejb(a.g,w,new ard(q,k))}switch(u.g){case 0:if(t==null){a.d.d=JD(amb(a.d.i,0),68)}else{for(s=new Hmb(a.d.i);s.a0?G+1:1}for(g=new Hmb(w.g);g.a0?G+1:1}}a.d[j]==0?Qtb(a.f,p):a.a[j]==0&&Qtb(a.g,p);++j}o=-1;n=1;l=new imb;a.e=JD(lNb(b,(Krc(),trc)),234);while(L>0){while(a.f.b!=0){I=JD(Ytb(a.f),9);a.c[I.p]=o--;LBc(a,I);--L}while(a.g.b!=0){J=JD(Ytb(a.g),9);a.c[J.p]=n++;LBc(a,J);--L}if(L>0){m=rue;for(s=new Hmb(t);s.a=m){if(u>m){l.c.length=0;m=u}nDb(l.c,p)}}}k=a.qg(l);a.c[k.p]=n++;LBc(a,k);--L}}H=t.c.length+1;for(j=0;ja.c[K]){wWb(d,true);oNb(b,Hqc,(Ndb(),true))}}}}a.a=null;a.d=null;a.c=null;_tb(a.g);_tb(a.f);c.Ug()} +function Hpd(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;v=JD(SFd((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a),0),170);k=new jgd;u=new Yrb;w=Kpd(v);wsb(u.f,v,w);m=new Yrb;d=new aub;for(o=Gl(yl(WC(OC(VI,1),rte,20,0,[(!b.d&&(b.d=new Wge(N3,b,8,5)),b.d),(!b.e&&(b.e=new Wge(N3,b,7,4)),b.e)])));Wr(o);){n=JD(Xr(o),85);if((!a.a&&(a.a=new A3d(M3,a,6,6)),a.a).i!=1){throw Icb(new hfb(nFe+(!a.a&&(a.a=new A3d(M3,a,6,6)),a.a).i))}if(n!=a){q=JD(SFd((!n.a&&(n.a=new A3d(M3,n,6,6)),n.a),0),170);Ttb(d,q,d.c.b,d.c);p=JD(Wd(vsb(u.f,q)),13);if(!p){p=Kpd(q);wsb(u.f,q,p)}l=c?Vfd(new Zfd(JD(amb(w,w.c.length-1),8)),JD(amb(p,p.c.length-1),8)):Vfd(new Zfd((JDb(0,w.c.length),JD(w.c[0],8))),(JDb(0,p.c.length),JD(p.c[0],8)));wsb(m.f,q,l)}}if(d.b!=0){r=JD(amb(w,c?w.c.length-1:0),8);for(j=1;j1&&(Ttb(k,r,k.c.b,k.c),true);kub(e)}}}r=s}}return k} +function mYc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;c.Tg(OCe,1);D=JD(PBb(SBb(new gCb(null,new Wvb(b,16)),new AYc),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[(CAb(),AAb)]))),16);k=JD(PBb(SBb(new gCb(null,new Wvb(b,16)),new CYc(b)),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[AAb]))),16);o=JD(PBb(SBb(new gCb(null,new Wvb(b,16)),new EYc(b)),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[AAb]))),16);p=SC($Z,ACe,40,b.gc(),0,1);for(g=0;g=0&&C=0&&!p[n]){p[n]=e;k.ed(h);--h;break}n=C-m;if(n=0&&!p[n]){p[n]=e;k.ed(h);--h;break}}}o.gd(new GYc);for(i=p.length-1;i>=0;i--){if(!p[i]&&!o.dc()){p[i]=JD(o.Xb(0),40);o.ed(0)}}for(j=0;jm&&m7c((JDb(m,b.c.length),JD(b.c[m],186)),k);k=null;while(b.c.length>m&&(JDb(m,b.c.length),JD(b.c[m],186)).a.c.length==0){dmb(b,(JDb(m,b.c.length),b.c[m]))}}if(!k){--g;continue}if(!Odb(LD(JD(amb(k.b,0),26).mf((D4c(),i4c))))&&q5c(b,o,f,k,q,c,m,d)){p=true;continue}if(q){n=o.b;l=k.f;if(!Odb(LD(JD(amb(k.b,0),26).mf(i4c)))&&r5c(b,o,f,k,c,m,d,e)){p=true;if(n=a.j){a.a=-1;a.c=1;return}b=pgb(a.i,a.d++);a.a=b;if(a.b==1){switch(b){case 92:d=10;if(a.d>=a.j)throw Icb(new Joe(VGd((Fbe(),PGe))));a.a=pgb(a.i,a.d++);break;case 45:if((a.e&512)==512&&a.d=a.j)break;if(pgb(a.i,a.d)!=63)break;if(++a.d>=a.j)throw Icb(new Joe(VGd((Fbe(),QGe))));b=pgb(a.i,a.d++);switch(b){case 58:d=13;break;case 61:d=14;break;case 33:d=15;break;case 91:d=19;break;case 62:d=18;break;case 60:if(a.d>=a.j)throw Icb(new Joe(VGd((Fbe(),QGe))));b=pgb(a.i,a.d++);if(b==61){d=16}else if(b==33){d=17}else throw Icb(new Joe(VGd((Fbe(),RGe))));break;case 35:while(a.d=a.j)throw Icb(new Joe(VGd((Fbe(),PGe))));a.a=pgb(a.i,a.d++);break;default:d=0;}a.c=d} +function KTc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q;c.Tg('Process compaction',1);if(!Odb(LD(lNb(b,(DXc(),_Wc))))){return}e=JD(lNb(b,bXc),86);n=Reb(MD(lNb(b,vXc)));LTc(a,b,e);HTc(b,n/2/2);o=b.b;yub(o,new $Tc(e));for(j=Wtb(o,0);j.b!=j.d.c;){i=JD(iub(j),40);if(!Odb(LD(lNb(i,(MWc(),JWc))))){d=ITc(i,e);p=HSc(i,b);l=0;m=0;if(d){q=d.e;switch(e.g){case 2:l=q.a-n-i.f.a;p.e.a-n-i.f.al&&(l=p.e.a+p.f.a+n);m=l+i.f.a;break;case 4:l=q.b-n-i.f.b;p.e.b-n-i.f.bl&&(l=p.e.b+p.f.b+n);m=l+i.f.b;}}else if(p){switch(e.g){case 2:l=p.e.a-n-i.f.a;m=l+i.f.a;break;case 1:l=p.e.a+p.f.a+n;m=l+i.f.a;break;case 4:l=p.e.b-n-i.f.b;m=l+i.f.b;break;case 3:l=p.e.b+p.f.b+n;m=l+i.f.b;}}if(XD(lNb(b,eXc))===XD((fWc(),cWc))){f=l;g=m;h=TBb(SBb(new gCb(null,new Wvb(a.a,16)),new cUc(f,g)));if(h.a!=null){e==(ojd(),kjd)||e==ljd?(i.e.a=l):(i.e.b=l)}else{e==(ojd(),kjd)||e==njd?(h=TBb(SBb(bCb(new gCb(null,new Wvb(a.a,16))),new qUc(f)))):(h=TBb(SBb(bCb(new gCb(null,new Wvb(a.a,16))),new sUc(f))));h.a!=null&&(e==kjd||e==ljd?(i.e.a=Reb(MD((IDb(h.a!=null),JD(h.a,49)).a))):(i.e.b=Reb(MD((IDb(h.a!=null),JD(h.a,49)).a))))}if(h.a!=null){k=bmb(a.a,(IDb(h.a!=null),h.a),0);if(k>0&&k!=JD(lNb(i,BXc),15).a){oNb(i,oWc,(Ndb(),true));oNb(i,BXc,zfb(k))}}}else{e==(ojd(),kjd)||e==ljd?(i.e.a=l):(i.e.b=l)}}}c.Ug()} +function JCc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;c.Tg('Coffman-Graham Layering',1);if(b.a.c.length==0){c.Ug();return}v=JD(lNb(b,($xc(),owc)),15).a;i=0;g=0;for(m=new Hmb(b.a);m.a=v||!ECc(r,d))&&(d=GCc(b,k));HYb(r,d);for(f=new Yr(Dr(yYb(r).a.Jc(),new Dl));Wr(f);){e=JD(Xr(f),17);if(a.a[e.p]){continue}p=e.c.i;--a.e[p.p];a.e[p.p]==0&&(PDb(pvb(n,p),Bve),true)}}for(j=k.c.length-1;j>=0;--j){Ylb(b.b,(JDb(j,k.c.length),JD(k.c[j],25)))}b.a.c.length=0;c.Ug()} +function Dpe(a){var b,c,d,e,f,g,h,i,j;a.b=1;Koe(a);b=null;if(a.c==0&&a.a==94){Koe(a);b=(Tqe(),Tqe(),++Sqe,new vre(4));pre(b,0,GJe);h=(null,++Sqe,new vre(4))}else{h=(Tqe(),Tqe(),++Sqe,new vre(4))}e=true;while((j=a.c)!=1){if(j==0&&a.a==93&&!e){if(b){ure(b,h);h=b}break}c=a.a;d=false;if(j==10){switch(c){case 100:case 68:case 119:case 87:case 115:case 83:sre(h,Cpe(c));d=true;break;case 105:case 73:case 99:case 67:c=(sre(h,Cpe(c)),-1);c<0&&(d=true);break;case 112:case 80:i=Qoe(a,c);if(!i)throw Icb(new Joe(VGd((Fbe(),bHe))));sre(h,i);d=true;break;default:c=Bpe(a);}}else if(j==24&&!e){if(b){ure(b,h);h=b}f=Dpe(a);ure(h,f);if(a.c!=0||a.a!=93)throw Icb(new Joe(VGd((Fbe(),fHe))));break}Koe(a);if(!d){if(j==0){if(c==91)throw Icb(new Joe(VGd((Fbe(),gHe))));if(c==93)throw Icb(new Joe(VGd((Fbe(),hHe))));if(c==45&&!e&&a.a!=93)throw Icb(new Joe(VGd((Fbe(),iHe))))}if(a.c!=0||a.a!=45||c==45&&e){pre(h,c,c)}else{Koe(a);if((j=a.c)==1)throw Icb(new Joe(VGd((Fbe(),dHe))));if(j==0&&a.a==93){pre(h,c,c);pre(h,45,45)}else if(j==0&&a.a==93||j==24){throw Icb(new Joe(VGd((Fbe(),iHe))))}else{g=a.a;if(j==0){if(g==91)throw Icb(new Joe(VGd((Fbe(),gHe))));if(g==93)throw Icb(new Joe(VGd((Fbe(),hHe))));if(g==45)throw Icb(new Joe(VGd((Fbe(),iHe))))}else j==10&&(g=Bpe(a));Koe(a);if(c>g)throw Icb(new Joe(VGd((Fbe(),lHe))));pre(h,c,g)}}}e=false}if(a.c==1)throw Icb(new Joe(VGd((Fbe(),dHe))));tre(h);qre(h);a.b=0;Koe(a);return h} +function z8b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;u=false;do{u=false;for(f=b?(new ckb(a.a.b)).a.gc()-2:1;b?f>=0:f<(new ckb(a.a.b)).a.gc();f+=b?-1:1){e=H_b(a.a,zfb(f));for(n=0;nJD(lNb(q,grc),15).a)&&(t=false)}if(!t){continue}i=b?f+1:f-1;h=H_b(a.a,zfb(i));g=false;s=true;d=false;for(k=Wtb(h,0);k.b!=k.d.c;){j=JD(iub(k),9);if(mNb(j,grc)){if(j.p!=l.p){g=g|(b?JD(lNb(j,grc),15).aJD(lNb(l,grc),15).a);s=false}}else if(!g&&s){if(j.k==(UYb(),OYb)){d=true;b?(m=JD(Xr(new Yr(Dr(yYb(j).a.Jc(),new Dl))),17).c.i):(m=JD(Xr(new Yr(Dr(BYb(j).a.Jc(),new Dl))),17).d.i);if(m==l){b?(c=JD(Xr(new Yr(Dr(BYb(j).a.Jc(),new Dl))),17).d.i):(c=JD(Xr(new Yr(Dr(yYb(j).a.Jc(),new Dl))),17).c.i);(b?JD(G_b(a.a,c),15).a-JD(G_b(a.a,m),15).a:JD(G_b(a.a,m),15).a-JD(G_b(a.a,c),15).a)<=2&&(s=false)}}}}if(d&&s){b?(c=JD(Xr(new Yr(Dr(BYb(l).a.Jc(),new Dl))),17).d.i):(c=JD(Xr(new Yr(Dr(yYb(l).a.Jc(),new Dl))),17).c.i);(b?JD(G_b(a.a,c),15).a-JD(G_b(a.a,l),15).a:JD(G_b(a.a,l),15).a-JD(G_b(a.a,c),15).a)<=2&&c.k==(UYb(),RYb)&&(s=false)}if(g||s){p=E8b(a,l,b);while(p.a.gc()!=0){o=JD(p.a.ec().Jc().Pb(),9);p.a.Ac(o)!=null;xe(p,E8b(a,o,b))}--n;u=true}}}}while(u)} +function V8d(a){gyd(a.c,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#decimal']));gyd(a.d,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#integer']));gyd(a.e,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#boolean']));gyd(a.f,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'EBoolean',AGe,'EBoolean:Object']));gyd(a.i,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#byte']));gyd(a.g,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#hexBinary']));gyd(a.j,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'EByte',AGe,'EByte:Object']));gyd(a.n,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'EChar',AGe,'EChar:Object']));gyd(a.t,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#double']));gyd(a.u,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'EDouble',AGe,'EDouble:Object']));gyd(a.F,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#float']));gyd(a.G,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'EFloat',AGe,'EFloat:Object']));gyd(a.I,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#int']));gyd(a.J,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'EInt',AGe,'EInt:Object']));gyd(a.N,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#long']));gyd(a.O,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'ELong',AGe,'ELong:Object']));gyd(a.Z,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#short']));gyd(a.$,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'EShort',AGe,'EShort:Object']));gyd(a._,kIe,WC(OC(hJ,1),Ote,2,6,[xIe,'http://www.w3.org/2001/XMLSchema#string']))} +function $xc(){$xc=ndb;qxc=(gjd(),Fid);rxc=Gid;sxc=Hid;txc=Iid;vxc=Jid;wxc=Kid;zxc=Mid;Bxc=Oid;Cxc=Pid;Axc=Nid;Dxc=Qid;Fxc=Rid;Hxc=Uid;yxc=Lid;pxc=(cvc(),uuc);uxc=vuc;xxc=wuc;Exc=xuc;jxc=new qEd(Aid,zfb(0));kxc=ruc;lxc=suc;mxc=tuc;Xxc=Vuc;Pxc=Auc;Qxc=Duc;Txc=Luc;Rxc=Guc;Sxc=Iuc;Zxc=$uc;Yxc=Xuc;Vxc=Ruc;Uxc=Puc;Wxc=Tuc;Awc=Vtc;ywc=Qtc;xwc=Otc;zwc=Stc;Kwc=iuc;Lwc=juc;_vc=ktc;awc=ntc;Lxc=Xid;Nxc=_id;Kxc=Wid;Jxc=Vid;Mxc=(rnd(),ond);new qEd(Yid,Mxc);Twc=new bZb(12);Swc=new qEd(cid,Twc);Xvc=(Ujd(),Qjd);Wvc=new qEd(xhd,Xvc);axc=new qEd(pid,0);nxc=new qEd(Bid,zfb(1));hvc=new qEd(ihd,nxe);Rwc=aid;bxc=qid;gxc=xid;Ovc=rhd;fvc=ghd;ewc=Chd;oxc=new qEd(Eid,(Ndb(),true));jwc=Fhd;kwc=Ghd;Nwc=Vhd;Qwc=$hd;Owc=Xhd;Rvc=(ojd(),mjd);Pvc=new qEd(shd,Rvc);Fwc=Thd;Ewc=Rhd;exc=uid;dxc=tid;fxc=wid;Wwc=(lld(),kld);new qEd(iid,Wwc);Ywc=lid;Zwc=mid;$wc=nid;Xwc=kid;Oxc=zuc;wwc=Mtc;vwc=Ktc;Ixc=yuc;qwc=Ctc;Nvc=Ysc;Mvc=Wsc;Cvc=Fsc;Dvc=Gsc;Fvc=Lsc;Evc=Hsc;Lvc=Usc;Cwc=Xtc;Dwc=Ytc;mwc=vtc;Mwc=nuc;Hwc=auc;cwc=qtc;Jwc=guc;Zvc=gtc;$vc=itc;Bvc=phd;Gwc=Ztc;lvc=gsc;kvc=esc;jvc=dsc;gwc=ttc;fwc=stc;hwc=utc;Pwc=Yhd;nwc=Nhd;bwc=zhd;Uvc=vhd;Tvc=uhd;Gvc=Osc;cxc=sid;ivc=ohd;iwc=Ehd;_wc=oid;Uwc=eid;Vwc=gid;swc=Ftc;twc=Htc;ixc=zid;gvc=csc;uwc=Jtc;Vvc=ctc;Svc=atc;Bwc=Phd;owc=ztc;Iwc=duc;Gxc=Sid;Qvc=$sc;hxc=puc;Yvc=etc;Hvc=Qsc;Ivc=Rsc;pwc=Btc;Jvc=Ssc;lwc=Ihd;rwc=Etc;Kvc=Tsc;Avc=Dsc;xvc=zsc;nvc=ksc;ovc=lsc;yvc=Bsc;mvc=isc;zvc=Csc;wvc=ysc;vvc=xsc;uvc=wsc;pvc=msc;tvc=usc;svc=ssc;qvc=osc;rvc=qsc;dwc=rtc} +function YYc(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o;m=JD(d.a,15).a;n=JD(d.b,15).a;l=a.b;o=a.c;h=0;k=0;if(b==(ojd(),kjd)||b==ljd){k=Yub(eBb(XBb(WBb(new gCb(null,new Wvb(c.b,16)),new x$c),new xZc)));if(l.e.b+l.f.b/2>k){j=++n;h=Reb(MD(Pub(ZBb(WBb(new gCb(null,new Wvb(c.b,16)),new z$c(e,j)),new zZc))))}else{i=++m;h=Reb(MD(Pub($Bb(WBb(new gCb(null,new Wvb(c.b,16)),new B$c(e,i)),new DZc))))}}else{k=Yub(eBb(XBb(WBb(new gCb(null,new Wvb(c.b,16)),new TZc),new HZc)));if(l.e.a+l.f.a/2>k){j=++n;h=Reb(MD(Pub(ZBb(WBb(new gCb(null,new Wvb(c.b,16)),new VZc(e,j)),new JZc))))}else{i=++m;h=Reb(MD(Pub($Bb(WBb(new gCb(null,new Wvb(c.b,16)),new XZc(e,i)),new NZc))))}}if(b==kjd){Stb(a.a,new Yfd(Reb(MD(lNb(l,(MWc(),BWc))))-e,h));Stb(a.a,new Yfd(o.e.a+o.f.a+e+f,h));Stb(a.a,new Yfd(o.e.a+o.f.a+e+f,o.e.b+o.f.b/2));Stb(a.a,new Yfd(o.e.a+o.f.a,o.e.b+o.f.b/2))}else if(b==ljd){Stb(a.a,new Yfd(Reb(MD(lNb(l,(MWc(),AWc))))+e,l.e.b+l.f.b/2));Stb(a.a,new Yfd(l.e.a+l.f.a+e,h));Stb(a.a,new Yfd(o.e.a-e-f,h));Stb(a.a,new Yfd(o.e.a-e-f,o.e.b+o.f.b/2));Stb(a.a,new Yfd(o.e.a,o.e.b+o.f.b/2))}else if(b==njd){Stb(a.a,new Yfd(h,Reb(MD(lNb(l,(MWc(),BWc))))-e));Stb(a.a,new Yfd(h,o.e.b+o.f.b+e+f));Stb(a.a,new Yfd(o.e.a+o.f.a/2,o.e.b+o.f.b+e+f));Stb(a.a,new Yfd(o.e.a+o.f.a/2,o.e.b+o.f.b+e))}else{a.a.b==0||(JD(Vtb(a.a),8).b=Reb(MD(lNb(l,(MWc(),AWc))))+e*JD(g.b,15).a);Stb(a.a,new Yfd(h,Reb(MD(lNb(l,(MWc(),AWc))))+e*JD(g.b,15).a));Stb(a.a,new Yfd(h,o.e.b-e*JD(g.a,15).a-f))}return new ard(zfb(m),zfb(n))} +function yQd(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;g=true;l=null;d=null;e=null;b=false;n=ZPd;j=null;f=null;h=0;i=qQd(a,h,XPd,YPd);if(i=0&&sgb(a.substr(h,'//'.length),'//')){h+=2;i=qQd(a,h,$Pd,_Pd);d=(QDb(h,i,a.length),a.substr(h,i-h));h=i}else if(l!=null&&(h==a.length||(RDb(h,a.length),a.charCodeAt(h)!=47))){g=false;i=ygb(a,Mgb(35),h);i==-1&&(i=a.length);d=(QDb(h,i,a.length),a.substr(h,i-h));h=i}if(!c&&h0&&pgb(k,k.length-1)==58){e=k;h=i}}if(hg){klc(a,b,c);return 1}else{klc(a,c,b);return -1}}for(s=a.f,t=0,u=s.length;t0?klc(a,b,c):klc(a,c,b);return d}if(!mNb(b,(Krc(),grc))||!mNb(c,grc)){f=ilc(a,b);h=ilc(a,c);if(f>h){klc(a,b,c);return 1}else{klc(a,c,b);return -1}}}if(!m&&!o){d=jlc(a,b,c);if(d!=0){d>0?klc(a,b,c):klc(a,c,b);return d}}}if(mNb(b,(Krc(),grc))&&mNb(c,grc)){f=glc(b,c,a.c,JD(lNb(a.c,frc),15).a);h=glc(c,b,a.c,JD(lNb(a.c,frc),15).a);if(f>h){klc(a,b,c);return 1}else{klc(a,c,b);return -1}}else{klc(a,c,b);return -1}} +function oVb(){oVb=ndb;$Tb();nVb=new Np;Rc(nVb,(mmd(),$ld),Zld);Rc(nVb,imd,Zld);Rc(nVb,_ld,Zld);Rc(nVb,fmd,Zld);Rc(nVb,emd,Zld);Rc(nVb,cmd,Zld);Rc(nVb,fmd,$ld);Rc(nVb,Zld,Vld);Rc(nVb,$ld,Vld);Rc(nVb,imd,Vld);Rc(nVb,_ld,Vld);Rc(nVb,dmd,Vld);Rc(nVb,fmd,Vld);Rc(nVb,emd,Vld);Rc(nVb,cmd,Vld);Rc(nVb,Yld,Vld);Rc(nVb,Zld,gmd);Rc(nVb,$ld,gmd);Rc(nVb,Vld,gmd);Rc(nVb,imd,gmd);Rc(nVb,_ld,gmd);Rc(nVb,dmd,gmd);Rc(nVb,fmd,gmd);Rc(nVb,Yld,gmd);Rc(nVb,hmd,gmd);Rc(nVb,emd,gmd);Rc(nVb,amd,gmd);Rc(nVb,cmd,gmd);Rc(nVb,$ld,imd);Rc(nVb,_ld,imd);Rc(nVb,fmd,imd);Rc(nVb,cmd,imd);Rc(nVb,$ld,_ld);Rc(nVb,imd,_ld);Rc(nVb,fmd,_ld);Rc(nVb,_ld,_ld);Rc(nVb,emd,_ld);Rc(nVb,Zld,Wld);Rc(nVb,$ld,Wld);Rc(nVb,Vld,Wld);Rc(nVb,gmd,Wld);Rc(nVb,imd,Wld);Rc(nVb,_ld,Wld);Rc(nVb,dmd,Wld);Rc(nVb,fmd,Wld);Rc(nVb,hmd,Wld);Rc(nVb,Yld,Wld);Rc(nVb,cmd,Wld);Rc(nVb,emd,Wld);Rc(nVb,bmd,Wld);Rc(nVb,Zld,hmd);Rc(nVb,$ld,hmd);Rc(nVb,Vld,hmd);Rc(nVb,imd,hmd);Rc(nVb,_ld,hmd);Rc(nVb,dmd,hmd);Rc(nVb,fmd,hmd);Rc(nVb,Yld,hmd);Rc(nVb,cmd,hmd);Rc(nVb,amd,hmd);Rc(nVb,bmd,hmd);Rc(nVb,$ld,Yld);Rc(nVb,imd,Yld);Rc(nVb,_ld,Yld);Rc(nVb,fmd,Yld);Rc(nVb,hmd,Yld);Rc(nVb,cmd,Yld);Rc(nVb,emd,Yld);Rc(nVb,Zld,Xld);Rc(nVb,$ld,Xld);Rc(nVb,Vld,Xld);Rc(nVb,imd,Xld);Rc(nVb,_ld,Xld);Rc(nVb,dmd,Xld);Rc(nVb,fmd,Xld);Rc(nVb,Yld,Xld);Rc(nVb,cmd,Xld);Rc(nVb,$ld,emd);Rc(nVb,Vld,emd);Rc(nVb,gmd,emd);Rc(nVb,_ld,emd);Rc(nVb,Zld,amd);Rc(nVb,$ld,amd);Rc(nVb,gmd,amd);Rc(nVb,imd,amd);Rc(nVb,_ld,amd);Rc(nVb,dmd,amd);Rc(nVb,fmd,amd);Rc(nVb,fmd,bmd);Rc(nVb,_ld,bmd);Rc(nVb,Yld,Zld);Rc(nVb,Yld,imd);Rc(nVb,Yld,Vld);Rc(nVb,dmd,Zld);Rc(nVb,dmd,$ld);Rc(nVb,dmd,gmd)} +function vNc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;c.Tg('Brandes & Koepf node placement',1);a.a=b;a.c=ENc(b);d=JD(lNb(b,($xc(),Hwc)),282);n=Odb(LD(lNb(b,Iwc)));a.d=d==(jpc(),gpc)&&!n||d==dpc;uNc(a,b);v=null;w=null;r=null;s=null;q=(bk(4,jue),new jmb(4));switch(JD(lNb(b,Hwc),282).g){case 3:r=new OMc(b,a.c.d,($Mc(),YMc),(SMc(),QMc));nDb(q.c,r);break;case 1:s=new OMc(b,a.c.d,($Mc(),ZMc),(SMc(),QMc));nDb(q.c,s);break;case 4:v=new OMc(b,a.c.d,($Mc(),YMc),(SMc(),RMc));nDb(q.c,v);break;case 2:w=new OMc(b,a.c.d,($Mc(),ZMc),(SMc(),RMc));nDb(q.c,w);break;default:r=new OMc(b,a.c.d,($Mc(),YMc),(SMc(),QMc));s=new OMc(b,a.c.d,ZMc,QMc);v=new OMc(b,a.c.d,YMc,RMc);w=new OMc(b,a.c.d,ZMc,RMc);nDb(q.c,v);nDb(q.c,w);nDb(q.c,r);nDb(q.c,s);}e=new gNc(b,a.c);for(h=new Hmb(q);h.aMMc(f))&&(l=f)}}!l&&(l=(JDb(0,q.c.length),JD(q.c[0],185)));for(p=new Hmb(b.b);p.a0){klc(a,c,b);return 1}else{klc(a,b,c);return -1}}else if(k&&t){klc(a,c,b);return 1}else if(l&&s){klc(a,b,c);return -1}else if(l&&t){return 0}}else{for(C=new Hmb(j.j);C.al){F=0;G+=k+A;k=0}_Rc(v,g,F,G);b=$wnd.Math.max(b,F+w.a);k=$wnd.Math.max(k,w.b);F+=w.a+A}u=new Yrb;c=new Yrb;for(C=new Hmb(a);C.a=-1900?1:0;c>=4?ehb(a,WC(OC(hJ,1),Ote,2,6,[Que,Rue])[h]):ehb(a,WC(OC(hJ,1),Ote,2,6,['BC','AD'])[h]);break;case 121:sA(a,c,d);break;case 77:rA(a,c,d);break;case 107:i=e.q.getHours();i==0?MA(a,24,c):MA(a,i,c);break;case 83:qA(a,c,e);break;case 69:k=d.q.getDay();c==5?ehb(a,WC(OC(hJ,1),Ote,2,6,['S','M','T','W','T','F','S'])[k]):c==4?ehb(a,WC(OC(hJ,1),Ote,2,6,[Sue,Tue,Uue,Vue,Wue,Xue,Yue])[k]):ehb(a,WC(OC(hJ,1),Ote,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat'])[k]);break;case 97:e.q.getHours()>=12&&e.q.getHours()<24?ehb(a,WC(OC(hJ,1),Ote,2,6,['AM','PM'])[1]):ehb(a,WC(OC(hJ,1),Ote,2,6,['AM','PM'])[0]);break;case 104:l=e.q.getHours()%12;l==0?MA(a,12,c):MA(a,l,c);break;case 75:m=e.q.getHours()%12;MA(a,m,c);break;case 72:n=e.q.getHours();MA(a,n,c);break;case 99:o=d.q.getDay();c==5?ehb(a,WC(OC(hJ,1),Ote,2,6,['S','M','T','W','T','F','S'])[o]):c==4?ehb(a,WC(OC(hJ,1),Ote,2,6,[Sue,Tue,Uue,Vue,Wue,Xue,Yue])[o]):c==3?ehb(a,WC(OC(hJ,1),Ote,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat'])[o]):MA(a,o,1);break;case 76:p=d.q.getMonth();c==5?ehb(a,WC(OC(hJ,1),Ote,2,6,['J','F','M','A','M','J','J','A','S','O','N','D'])[p]):c==4?ehb(a,WC(OC(hJ,1),Ote,2,6,[Cue,Due,Eue,Fue,Gue,Hue,Iue,Jue,Kue,Lue,Mue,Nue])[p]):c==3?ehb(a,WC(OC(hJ,1),Ote,2,6,['Jan','Feb','Mar','Apr',Gue,'Jun','Jul','Aug','Sep','Oct','Nov','Dec'])[p]):MA(a,p+1,c);break;case 81:q=d.q.getMonth()/3|0;c<4?ehb(a,WC(OC(hJ,1),Ote,2,6,['Q1','Q2','Q3','Q4'])[q]):ehb(a,WC(OC(hJ,1),Ote,2,6,['1st quarter','2nd quarter','3rd quarter','4th quarter'])[q]);break;case 100:r=d.q.getDate();MA(a,r,c);break;case 109:j=e.q.getMinutes();MA(a,j,c);break;case 115:g=e.q.getSeconds();MA(a,g,c);break;case 122:c<4?ehb(a,f.c[0]):ehb(a,f.c[1]);break;case 118:ehb(a,f.b);break;case 90:c<3?ehb(a,WA(f)):c==3?ehb(a,VA(f)):ehb(a,YA(f.a));break;default:return false;}return true} +function N$b(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;C$b(b);i=JD(SFd((!b.b&&(b.b=new Wge(L3,b,4,7)),b.b),0),84);k=JD(SFd((!b.c&&(b.c=new Wge(L3,b,5,8)),b.c),0),84);h=EEd(i);j=EEd(k);g=(!b.a&&(b.a=new A3d(M3,b,6,6)),b.a).i==0?null:JD(SFd((!b.a&&(b.a=new A3d(M3,b,6,6)),b.a),0),170);A=JD(bjb(a.a,h),9);F=JD(bjb(a.a,j),9);B=null;G=null;if(RD(i,193)){w=JD(bjb(a.a,i),246);if(RD(w,12)){B=JD(w,12)}else if(RD(w,9)){A=JD(w,9);B=JD(amb(A.j,0),12)}}if(RD(k,193)){D=JD(bjb(a.a,k),246);if(RD(D,12)){G=JD(D,12)}else if(RD(D,9)){F=JD(D,9);G=JD(amb(F.j,0),12)}}if(!A||!F){throw Icb(new qbd('The source or the target of edge '+b+' could not be found. '+'This usually happens when an edge connects a node laid out by ELK Layered to a node in '+'another level of hierarchy laid out by either another instance of ELK Layered or another '+'layout algorithm alltogether. The former can be solved by setting the hierarchyHandling '+'option to INCLUDE_CHILDREN.'))}p=new BWb;jNb(p,b);oNb(p,(Krc(),hrc),b);oNb(p,($xc(),nwc),null);n=JD(lNb(d,Rqc),22);A==F&&n.Ec((Lpc(),Kpc));if(!B){v=(bAc(),_zc);C=null;if(!!g&&zld(JD(lNb(A,bxc),102))){C=new Yfd(g.j,g.k);Spd(C,rwd(b));Tpd(C,c);if(PEd(j,h)){v=$zc;Gfd(C,A.n)}}B=HXb(A,C,v,d)}if(!G){v=(bAc(),$zc);H=null;if(!!g&&zld(JD(lNb(F,bxc),102))){H=new Yfd(g.b,g.c);Spd(H,rwd(b));Tpd(H,c)}G=HXb(F,H,v,xYb(F))}xWb(p,B);yWb(p,G);(B.e.c.length>1||B.g.c.length>1||G.e.c.length>1||G.g.c.length>1)&&n.Ec((Lpc(),Fpc));for(m=new fKd((!b.n&&(b.n=new A3d(P3,b,1,7)),b.n));m.e!=m.i.gc();){l=JD(dKd(m),157);if(!Odb(LD(Pud(l,Rwc)))&&!!l.a){q=P$b(l);Ylb(p.b,q);switch(JD(lNb(q,Uvc),279).g){case 1:case 2:n.Ec((Lpc(),Dpc));break;case 0:n.Ec((Lpc(),Bpc));oNb(q,Uvc,(Kjd(),Hjd));}}}f=JD(lNb(d,Mvc),301);r=JD(lNb(d,Mwc),328);e=f==(Lnc(),Hnc)||r==(jzc(),fzc);if(!!g&&(!g.a&&(g.a=new VXd(K3,g,5)),g.a).i!=0&&e){s=Fpd(g);o=new jgd;for(u=Wtb(s,0);u.b!=u.d.c;){t=JD(iub(u),8);Qtb(o,new Zfd(t))}oNb(p,irc,o)}return p} +function _Yc(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I;C=0;D=0;A=new Yrb;v=JD(Pub(ZBb(WBb(new gCb(null,new Wvb(a.b,16)),new RZc),new tZc)),15).a+1;B=SC(cE,Pue,30,v,15,1);q=SC(cE,Pue,30,v,15,1);for(p=0;p1){for(h=G+1;hj.b.e.b*(1-r)+j.c.e.b*r){break}}if(w.gc()>0){H=j.a.b==0?Ifd(j.b.e):JD(Vtb(j.a),8);t=Gfd(Ifd(JD(w.Xb(w.gc()-1),40).e),JD(w.Xb(w.gc()-1),40).f);m=Gfd(Ifd(JD(w.Xb(0),40).e),JD(w.Xb(0),40).f);if(o>=w.gc()-1&&H.b>t.b&&j.c.e.b>t.b){continue}if(o<=0&&H.bj.b.e.a*(1-r)+j.c.e.a*r){break}}if(w.gc()>0){H=j.a.b==0?Ifd(j.b.e):JD(Vtb(j.a),8);t=Gfd(Ifd(JD(w.Xb(w.gc()-1),40).e),JD(w.Xb(w.gc()-1),40).f);m=Gfd(Ifd(JD(w.Xb(0),40).e),JD(w.Xb(0),40).f);if(o>=w.gc()-1&&H.a>t.a&&j.c.e.a>t.a){continue}if(o<=0&&H.a=Reb(MD(lNb(a,(MWc(),uWc))))&&++D}else{n.f&&n.d.e.a<=Reb(MD(lNb(a,(MWc(),tWc))))&&++C;n.g&&n.c.e.a+n.c.f.a>=Reb(MD(lNb(a,(MWc(),sWc))))&&++D}}}else if(u==0){bZc(j)}else if(u<0){++B[G];++q[I];F=YYc(j,b,a,new ard(zfb(C),zfb(D)),c,d,new ard(zfb(q[I]),zfb(B[G])));C=JD(F.a,15).a;D=JD(F.b,15).a}}} +function W8d(a){if(a.gb)return;a.gb=true;a.b=qyd(a,0);pyd(a.b,18);vyd(a.b,19);a.a=qyd(a,1);pyd(a.a,1);vyd(a.a,2);vyd(a.a,3);vyd(a.a,4);vyd(a.a,5);a.o=qyd(a,2);pyd(a.o,8);pyd(a.o,9);vyd(a.o,10);vyd(a.o,11);vyd(a.o,12);vyd(a.o,13);vyd(a.o,14);vyd(a.o,15);vyd(a.o,16);vyd(a.o,17);vyd(a.o,18);vyd(a.o,19);vyd(a.o,20);vyd(a.o,21);vyd(a.o,22);vyd(a.o,23);uyd(a.o);uyd(a.o);uyd(a.o);uyd(a.o);uyd(a.o);uyd(a.o);uyd(a.o);uyd(a.o);uyd(a.o);uyd(a.o);a.p=qyd(a,3);pyd(a.p,2);pyd(a.p,3);pyd(a.p,4);pyd(a.p,5);vyd(a.p,6);vyd(a.p,7);uyd(a.p);uyd(a.p);a.q=qyd(a,4);pyd(a.q,8);a.v=qyd(a,5);vyd(a.v,9);uyd(a.v);uyd(a.v);uyd(a.v);a.w=qyd(a,6);pyd(a.w,2);pyd(a.w,3);pyd(a.w,4);vyd(a.w,5);a.B=qyd(a,7);vyd(a.B,1);uyd(a.B);uyd(a.B);uyd(a.B);a.Q=qyd(a,8);vyd(a.Q,0);uyd(a.Q);a.R=qyd(a,9);pyd(a.R,1);a.S=qyd(a,10);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);uyd(a.S);a.T=qyd(a,11);vyd(a.T,10);vyd(a.T,11);vyd(a.T,12);vyd(a.T,13);vyd(a.T,14);uyd(a.T);uyd(a.T);a.U=qyd(a,12);pyd(a.U,2);pyd(a.U,3);vyd(a.U,4);vyd(a.U,5);vyd(a.U,6);vyd(a.U,7);uyd(a.U);a.V=qyd(a,13);vyd(a.V,10);a.W=qyd(a,14);pyd(a.W,18);pyd(a.W,19);pyd(a.W,20);vyd(a.W,21);vyd(a.W,22);vyd(a.W,23);a.bb=qyd(a,15);pyd(a.bb,10);pyd(a.bb,11);pyd(a.bb,12);pyd(a.bb,13);pyd(a.bb,14);pyd(a.bb,15);pyd(a.bb,16);vyd(a.bb,17);uyd(a.bb);uyd(a.bb);a.eb=qyd(a,16);pyd(a.eb,2);pyd(a.eb,3);pyd(a.eb,4);pyd(a.eb,5);pyd(a.eb,6);pyd(a.eb,7);vyd(a.eb,8);vyd(a.eb,9);a.ab=qyd(a,17);pyd(a.ab,0);pyd(a.ab,1);a.H=qyd(a,18);vyd(a.H,0);vyd(a.H,1);vyd(a.H,2);vyd(a.H,3);vyd(a.H,4);vyd(a.H,5);uyd(a.H);a.db=qyd(a,19);vyd(a.db,2);a.c=ryd(a,20);a.d=ryd(a,21);a.e=ryd(a,22);a.f=ryd(a,23);a.i=ryd(a,24);a.g=ryd(a,25);a.j=ryd(a,26);a.k=ryd(a,27);a.n=ryd(a,28);a.r=ryd(a,29);a.s=ryd(a,30);a.t=ryd(a,31);a.u=ryd(a,32);a.fb=ryd(a,33);a.A=ryd(a,34);a.C=ryd(a,35);a.D=ryd(a,36);a.F=ryd(a,37);a.G=ryd(a,38);a.I=ryd(a,39);a.J=ryd(a,40);a.L=ryd(a,41);a.M=ryd(a,42);a.N=ryd(a,43);a.O=ryd(a,44);a.P=ryd(a,45);a.X=ryd(a,46);a.Y=ryd(a,47);a.Z=ryd(a,48);a.$=ryd(a,49);a._=ryd(a,50);a.cb=ryd(a,51);a.K=ryd(a,52)} +function ZYc(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o;for(l=Wtb(a.b,0);l.b!=l.d.c;){k=JD(iub(l),40);if(sgb(k.c,vCe)){continue}f=JD(PBb(new gCb(null,new Wvb(DSc(k,a),16)),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[(CAb(),AAb)]))),16);b==(ojd(),kjd)||b==ljd?f.gd(new f$c):f.gd(new l$c);o=f.gc();for(e=0;e0){h=JD(Vtb(JD(f.Xb(e),65).a),8).a;m=k.e.a+k.f.a/2;i=JD(Vtb(JD(f.Xb(e),65).a),8).b;n=k.e.b+k.f.b/2;d>0&&$wnd.Math.abs(i-n)/($wnd.Math.abs(h-m)/40)>50&&(n>i?Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a+d/5.3,k.e.b+k.f.b*g-d/2)):Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a+d/5.3,k.e.b+k.f.b*g+d/2)))}Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a,k.e.b+k.f.b*g))}else if(b==ljd){j=Reb(MD(lNb(k,(MWc(),BWc))));if(k.e.a-d>j){Stb(JD(f.Xb(e),65).a,new Yfd(j-c,k.e.b+k.f.b*g))}else if(JD(f.Xb(e),65).a.b>0){h=JD(Vtb(JD(f.Xb(e),65).a),8).a;m=k.e.a+k.f.a/2;i=JD(Vtb(JD(f.Xb(e),65).a),8).b;n=k.e.b+k.f.b/2;d>0&&$wnd.Math.abs(i-n)/($wnd.Math.abs(h-m)/40)>50&&(n>i?Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a-d/5.3,k.e.b+k.f.b*g-d/2)):Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a-d/5.3,k.e.b+k.f.b*g+d/2)))}Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a,k.e.b+k.f.b*g))}else if(b==njd){j=Reb(MD(lNb(k,(MWc(),AWc))));if(k.e.b+k.f.b+d0){h=JD(Vtb(JD(f.Xb(e),65).a),8).a;m=k.e.a+k.f.a/2;i=JD(Vtb(JD(f.Xb(e),65).a),8).b;n=k.e.b+k.f.b/2;d>0&&$wnd.Math.abs(h-m)/($wnd.Math.abs(i-n)/40)>50&&(m>h?Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a*g-d/2,k.e.b+d/5.3+k.f.b)):Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a*g+d/2,k.e.b+d/5.3+k.f.b)))}Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a*g,k.e.b+k.f.b))}else{j=Reb(MD(lNb(k,(MWc(),BWc))));if(ISc(JD(f.Xb(e),65),a)){Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a*g,JD(Vtb(JD(f.Xb(e),65).a),8).b))}else if(k.e.b-d>j){Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a*g,j-c))}else if(JD(f.Xb(e),65).a.b>0){h=JD(Vtb(JD(f.Xb(e),65).a),8).a;m=k.e.a+k.f.a/2;i=JD(Vtb(JD(f.Xb(e),65).a),8).b;n=k.e.b+k.f.b/2;d>0&&$wnd.Math.abs(h-m)/($wnd.Math.abs(i-n)/40)>50&&(m>h?Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a*g-d/2,k.e.b-d/5.3)):Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a*g+d/2,k.e.b-d/5.3)))}Stb(JD(f.Xb(e),65).a,new Yfd(k.e.a+k.f.a*g,k.e.b))}}}} +function Blc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;g=b;m=c;if(_ib(a.a,g)){if(csb(JD(bjb(a.a,g),47),m)){return 1}}else{ejb(a.a,g,new esb)}if(_ib(a.a,m)){if(csb(JD(bjb(a.a,m),47),g)){return -1}}else{ejb(a.a,m,new esb)}if(_ib(a.e,g)){if(csb(JD(bjb(a.e,g),47),m)){return -1}}else{ejb(a.e,g,new esb)}if(_ib(a.e,m)){if(csb(JD(bjb(a.a,m),47),g)){return 1}}else{ejb(a.e,m,new esb)}if(g.j!=m.j){v=Ilc(g.j,m.j);v>0?Clc(a,g,m,1):Clc(a,m,g,1);return v}w=1;if(g.e.c.length!=0&&m.e.c.length!=0){(g.j==(mmd(),lmd)&&m.j==lmd||g.j==Uld&&m.j==Uld||g.j==jmd&&m.j==jmd)&&(w=-w);k=JD(amb(g.e,0),17).c;q=JD(amb(m.e,0),17).c;i=k.i;o=q.i;if(i==o){for(t=new Hmb(i.j);t.a0){Clc(a,g,m,w);return w}else{Clc(a,m,g,w);return -w}}}d=zlc(JD(PBb(gnb(a.d),yAb(new QAb,new OAb,new WAb,WC(OC(HL,1),kue,130,0,[(CAb(),AAb)]))),20),i,o);if(d!=0){if(d>0){Clc(a,g,m,w);return w}else{Clc(a,m,g,w);return -w}}if(a.c){v=ylc(a,g,m);if(v!=0){if(v>0){Clc(a,g,m,w);return w}else{Clc(a,m,g,w);return -w}}}}if(g.g.c.length!=0&&m.g.c.length!=0){(g.j==(mmd(),lmd)&&m.j==lmd||g.j==jmd&&m.j==jmd)&&(w=-w);l=JD(lNb(g,(Krc(),drc)),9);r=JD(lNb(m,drc),9);if(a.f==(Mzc(),Lzc)&&!!l&&!!r&&mNb(l,grc)&&mNb(r,grc)){h=glc(l,r,a.b,JD(lNb(a.b,frc),15).a);n=glc(r,l,a.b,JD(lNb(a.b,frc),15).a);if(h>n){Clc(a,g,m,w);return w}else{Clc(a,m,g,w);return -w}}if(a.c){v=ylc(a,g,m);if(v!=0){if(v>0){Clc(a,g,m,w);return w}else{Clc(a,m,g,w);return -w}}}j=0;p=0;mNb(JD(amb(g.g,0),17),grc)&&(j=glc(JD(amb(g.g,0),246),JD(amb(m.g,0),246),a.b,g.g.c.length+g.e.c.length));mNb(JD(amb(m.g,0),17),grc)&&(p=glc(JD(amb(m.g,0),246),JD(amb(g.g,0),246),a.b,m.g.c.length+m.e.c.length));if(!!l&&l==r){if(j>p){Clc(a,g,m,w);return w}else{Clc(a,m,g,w);return -w}}if(a.g){a.g._b(l)&&(j=JD(a.g.xc(l),15).a);a.g._b(r)&&(p=JD(a.g.xc(r),15).a)}if(j>p){Clc(a,g,m,w);return w}else{Clc(a,m,g,w);return -w}}if(g.e.c.length!=0&&m.g.c.length!=0){Clc(a,g,m,w);return 1}else if(g.g.c.length!=0&&m.e.c.length!=0){Clc(a,m,g,w);return -1}else if(mNb(g,(Krc(),grc))&&mNb(m,grc)){f=g.i.j.c.length;h=glc(g,m,a.b,f);n=glc(m,g,a.b,f);(g.j==(mmd(),lmd)&&m.j==lmd||g.j==jmd&&m.j==jmd)&&(w=-w);if(h>n){Clc(a,g,m,w);return w}else{Clc(a,m,g,w);return -w}}else{Clc(a,m,g,w);return -w}} +function Krc(){Krc=ndb;var a,b;hrc=new nEd(Kxe);Eqc=new nEd('coordinateOrigin');rrc=new nEd('processors');Dqc=new oEd('compoundNode',(Ndb(),false));Uqc=new oEd('insideConnections',false);irc=new nEd('originalBendpoints');jrc=new nEd('originalDummyNodePosition');krc=new nEd('originalLabelEdge');urc=new nEd('representedLabels');Jqc=new nEd('endLabels');Kqc=new nEd('endLabel.origin');$qc=new oEd('labelSide',(Lkd(),Kkd));erc=new oEd('maxEdgeThickness',0);vrc=new oEd('reversed',false);trc=new nEd(Lxe);brc=new oEd('longEdgeSource',null);crc=new oEd('longEdgeTarget',null);arc=new oEd('longEdgeHasLabelDummies',false);_qc=new oEd('longEdgeBeforeLabelDummy',false);Iqc=new oEd('edgeConstraint',(Eoc(),Coc));Wqc=new nEd('inLayerLayoutUnit');Vqc=new oEd('inLayerConstraint',(kqc(),iqc));Xqc=new oEd('inLayerSuccessorConstraint',new imb);Yqc=new oEd('inLayerSuccessorConstraintBetweenNonDummies',false);prc=new nEd('portDummy');Fqc=new oEd('crossingHint',zfb(0));Rqc=new oEd('graphProperties',(b=JD(teb($V),10),new Krb(b,JD(kDb(b,b.length),10),0)));Oqc=new oEd('externalPortSide',(mmd(),kmd));Pqc=new oEd('externalPortSize',new Wfd);Mqc=new nEd('externalPortReplacedDummies');Nqc=new nEd('externalPortReplacedDummy');Lqc=new oEd('externalPortConnections',(a=JD(teb(J2),10),new Krb(a,JD(kDb(a,a.length),10),0)));qrc=new oEd(Pwe,0);yqc=new nEd('barycenterAssociates');Irc=new nEd('TopSideComments');zqc=new nEd('BottomSideComments');Cqc=new nEd('CommentConnectionPort');Tqc=new oEd('inputCollect',false);nrc=new oEd('outputCollect',false);Hqc=new oEd('cyclic',false);Gqc=new nEd('crossHierarchyMap');Erc=new nEd('targetOffset');new oEd('splineLabelSize',new Wfd);yrc=new nEd('spacings');orc=new oEd('partitionConstraint',false);Aqc=new nEd('breakingPoint.info');Crc=new nEd('splines.survivingEdge');Brc=new nEd('splines.route.start');zrc=new nEd('splines.edgeChain');mrc=new nEd('originalPortConstraints');xrc=new nEd('selfLoopHolder');Arc=new nEd('splines.nsPortY');grc=new nEd('modelOrder');frc=new nEd('modelOrder.maximum');Bqc=new nEd('modelOrderGroups.cb.number');drc=new nEd('longEdgeTargetNode');Qqc=new oEd(Zye,false);wrc=new oEd(Zye,false);Sqc=new nEd('layerConstraints.hiddenNodes');lrc=new nEd('layerConstraints.opposidePort');Drc=new nEd('targetNode.modelOrder');Grc=new oEd('tarjan.lowlink',zfb(lte));Frc=new oEd('tarjan.id',zfb(-1));Hrc=new oEd('tarjan.onstack',false);Zqc=new oEd('partOfCycle',false);Jrc=new nEd('medianHeuristic.weight')} +function gjd(){gjd=ndb;var a,b;fhd=new nEd(CEe);Cid=new nEd(DEe);hhd=(wgd(),qgd);ghd=new pEd(tBe,hhd);new iqd;ihd=new pEd(sxe,null);jhd=new nEd(EEe);qhd=(_gd(),Drb($gd,WC(OC(t2,1),kue,299,0,[Wgd])));phd=new pEd(FBe,qhd);rhd=new pEd(sBe,(Ndb(),false));thd=(ojd(),mjd);shd=new pEd(wBe,thd);yhd=(Ujd(),Tjd);xhd=new pEd(PAe,yhd);Bhd=new pEd(AEe,false);Dhd=(Bkd(),zkd);Chd=new pEd(KAe,Dhd);did=new bZb(12);cid=new pEd(vxe,did);Hhd=new pEd(wxe,false);Ihd=new pEd(SBe,false);bid=new pEd(zxe,false);rid=(xld(),wld);qid=new pEd(xxe,rid);zid=new nEd(PBe);Aid=new nEd(pxe);Bid=new nEd(txe);Eid=new nEd(uxe);Ohd=new jgd;Nhd=new pEd(GBe,Ohd);ohd=new pEd(KBe,false);Ehd=new pEd(LBe,false);new nEd(FEe);new pEd(GEe,0);Qhd=new oYb;Phd=new pEd(QBe,Qhd);aid=new pEd(qBe,false);new iqd;Did=new pEd(HEe,1);nhd=new nEd(IEe);mhd=new nEd(JEe);Xid=new pEd(Fxe,false);new pEd(KEe,true);zfb(0);new pEd(LEe,zfb(100));new pEd(MEe,false);zfb(0);new pEd(NEe,zfb(4000));zfb(0);new pEd(OEe,zfb(400));new pEd(PEe,false);new pEd(QEe,false);new pEd(REe,true);new pEd(SEe,false);lhd=(Tod(),Sod);khd=new pEd(BEe,lhd);Mhd=(Lmd(),Imd);Lhd=new pEd(TEe,Mhd);Khd=(Bjd(),yjd);Jhd=new pEd(UEe,Khd);Fid=new pEd(dBe,10);Gid=new pEd(eBe,10);Hid=new pEd(fBe,20);Iid=new pEd(gBe,10);Jid=new pEd(rxe,2);Kid=new pEd(hBe,10);Mid=new pEd(iBe,0);Nid=new pEd(lBe,5);Oid=new pEd(jBe,1);Pid=new pEd(kBe,1);Qid=new pEd(qxe,20);Rid=new pEd(mBe,10);Uid=new pEd(nBe,10);Lid=new nEd(oBe);Tid=new pYb;Sid=new pEd(RBe,Tid);gid=new nEd(OBe);fid=false;eid=new pEd(NBe,fid);Shd=new bZb(5);Rhd=new pEd(xBe,Shd);Uhd=(_kd(),b=JD(teb(F2),10),new Krb(b,JD(kDb(b,b.length),10),0));Thd=new pEd(Dxe,Uhd);jid=(lld(),ild);iid=new pEd(ABe,jid);lid=new nEd(BBe);mid=new nEd(CBe);nid=new nEd(DBe);kid=new nEd(EBe);Whd=(a=JD(teb(N2),10),new Krb(a,JD(kDb(a,a.length),10),0));Vhd=new pEd(Cxe,Whd);_hd=Crb((ind(),bnd));$hd=new pEd(Bxe,_hd);Zhd=new Yfd(0,0);Yhd=new pEd(Vxe,Zhd);Xhd=new pEd(Axe,false);whd=(Kjd(),Hjd);vhd=new pEd(IBe,whd);uhd=new pEd(yxe,false);new nEd(VEe);zfb(1);new pEd(WEe,null);oid=new nEd(MBe);sid=new nEd(JBe);yid=(mmd(),kmd);xid=new pEd(rBe,yid);pid=new nEd(pBe);vid=(Lld(),Crb(Jld));uid=new pEd(Exe,vid);tid=new pEd(yBe,false);wid=new pEd(zBe,true);zfb(1);djd=new pEd(XEe,zfb(3));zfb(1);fjd=new pEd(YEe,zfb(4));new iqd;_id=new pEd(Gxe,1);bjd=new pEd(ZEe,null);Wid=new pEd(Hxe,150);Vid=new pEd(Ixe,1.414);Yid=new pEd(Jxe,null);Zid=new pEd($Ee,1);Fhd=new pEd(uBe,false);Ghd=new pEd(vBe,false);zhd=new pEd(HBe,1);Ahd=(ekd(),ckd);new pEd(_Ee,Ahd);hid=true;ejd=(Bnd(),ynd);ajd=(rnd(),ond);cjd=ond;$id=ond} +function Q5b(){Q5b=ndb;W4b=new R5b('DIRECTION_PREPROCESSOR',0);T4b=new R5b('COMMENT_PREPROCESSOR',1);X4b=new R5b('EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER',2);l5b=new R5b('INTERACTIVE_EXTERNAL_PORT_POSITIONER',3);E5b=new R5b('PARTITION_PREPROCESSOR',4);p5b=new R5b('LABEL_DUMMY_INSERTER',5);K5b=new R5b('SELF_LOOP_PREPROCESSOR',6);u5b=new R5b('LAYER_CONSTRAINT_PREPROCESSOR',7);C5b=new R5b('PARTITION_MIDPROCESSOR',8);g5b=new R5b('HIGH_DEGREE_NODE_LAYER_PROCESSOR',9);y5b=new R5b('NODE_PROMOTION',10);t5b=new R5b('LAYER_CONSTRAINT_POSTPROCESSOR',11);D5b=new R5b('PARTITION_POSTPROCESSOR',12);c5b=new R5b('HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR',13);M5b=new R5b('SEMI_INTERACTIVE_CROSSMIN_PROCESSOR',14);N4b=new R5b('BREAKING_POINT_INSERTER',15);x5b=new R5b('LONG_EDGE_SPLITTER',16);G5b=new R5b('PORT_SIDE_PROCESSOR',17);m5b=new R5b('INVERTED_PORT_PROCESSOR',18);F5b=new R5b('PORT_LIST_SORTER',19);O5b=new R5b('SORT_BY_INPUT_ORDER_OF_MODEL',20);A5b=new R5b('NORTH_SOUTH_PORT_PREPROCESSOR',21);O4b=new R5b('BREAKING_POINT_PROCESSOR',22);B5b=new R5b(Cye,23);P5b=new R5b(Dye,24);I5b=new R5b('SELF_LOOP_PORT_RESTORER',25);M4b=new R5b('ALTERNATING_LAYER_UNZIPPER',26);N5b=new R5b('SINGLE_EDGE_GRAPH_WRAPPER',27);n5b=new R5b('IN_LAYER_CONSTRAINT_PROCESSOR',28);_4b=new R5b('END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR',29);o5b=new R5b('LABEL_AND_NODE_SIZE_PROCESSOR',30);k5b=new R5b('INNERMOST_NODE_MARGIN_CALCULATOR',31);L5b=new R5b('SELF_LOOP_ROUTER',32);R4b=new R5b('COMMENT_NODE_MARGIN_CALCULATOR',33);Z4b=new R5b('END_LABEL_PREPROCESSOR',34);r5b=new R5b('LABEL_DUMMY_SWITCHER',35);Q4b=new R5b('CENTER_LABEL_MANAGEMENT_PROCESSOR',36);s5b=new R5b('LABEL_SIDE_SELECTOR',37);i5b=new R5b('HYPEREDGE_DUMMY_MERGER',38);d5b=new R5b('HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR',39);v5b=new R5b('LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR',40);f5b=new R5b('HIERARCHICAL_PORT_POSITION_PROCESSOR',41);U4b=new R5b('CONSTRAINTS_POSTPROCESSOR',42);S4b=new R5b('COMMENT_POSTPROCESSOR',43);j5b=new R5b('HYPERNODE_PROCESSOR',44);e5b=new R5b('HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER',45);w5b=new R5b('LONG_EDGE_JOINER',46);J5b=new R5b('SELF_LOOP_POSTPROCESSOR',47);P4b=new R5b('BREAKING_POINT_REMOVER',48);z5b=new R5b('NORTH_SOUTH_PORT_POSTPROCESSOR',49);h5b=new R5b('HORIZONTAL_COMPACTOR',50);q5b=new R5b('LABEL_DUMMY_REMOVER',51);a5b=new R5b('FINAL_SPLINE_BENDPOINTS_CALCULATOR',52);$4b=new R5b('END_LABEL_SORTER',53);H5b=new R5b('REVERSED_EDGE_RESTORER',54);Y4b=new R5b('END_LABEL_POSTPROCESSOR',55);b5b=new R5b('HIERARCHICAL_NODE_RESIZER',56);V4b=new R5b('DIRECTION_POSTPROCESSOR',57)} +function EJc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb,gb,hb,ib,jb,kb,lb;cb=0;for(H=b,K=0,N=H.length;K0&&(a.a[U.p]=cb++)}}hb=0;for(I=c,L=0,O=I.length;L0){U=(IDb(Y.b>0),JD(Y.a.Xb(Y.c=--Y.b),12));X=0;for(h=new Hmb(U.e);h.a0){if(U.j==(mmd(),Uld)){a.a[U.p]=hb;++hb}else{a.a[U.p]=hb+P+R;++R}}}hb+=R}W=new Yrb;o=new Mtb;for(G=b,J=0,M=G.length;Jj.b&&(j.b=Z)}else if(U.i.c==bb){Zj.c&&(j.c=Z)}}}bnb(p,0,p.length,null);gb=SC(cE,Pue,30,p.length,15,1);d=SC(cE,Pue,30,hb+1,15,1);for(r=0;r0){A%2>0&&(e+=kb[A+1]);A=(A-1)/2|0;++kb[A]}}C=SC(OX,rte,370,p.length*2,0,1);for(u=0;u0&&(yqd(J.f),false)){if(JD(Pud(r,Yid),281)==ond){throw Icb(new pbd('Topdown Layout Providers should only be used on parallel nodes.'))}ZD(yqd(J.f));null.Sm();Ivd(r,$wnd.Math.max(r.g,null.Tm),$wnd.Math.max(r.f,null.Tm))}else if(Pud(r,bjd)!=null&&(!r.a&&(r.a=new A3d(Q3,r,10,11)),!!r.a)&&(!r.a&&(r.a=new A3d(Q3,r,10,11)),r.a).i>0){h=JD(Pud(r,bjd),521);X=h.Sg(r);Ivd(r,$wnd.Math.max(r.g,X.a+P.b+P.c),$wnd.Math.max(r.f,X.b+P.d+P.a))}else{if((!r.a&&(r.a=new A3d(Q3,r,10,11)),r.a).i!=0){X=new Yfd(Reb(MD(Pud(r,Wid))),Reb(MD(Pud(r,Wid)))/Reb(MD(Pud(r,Vid))));Ivd(r,$wnd.Math.max(r.g,X.a+P.b+P.c),$wnd.Math.max(r.f,X.b+P.d+P.a))}}}}O=JD(Pud(b,cid),104);n=b.g-(O.b+O.c);m=b.f-(O.d+O.a);$.ah('Available Child Area: ('+n+'|'+m+')');Rud(b,ihd,n/m);ibd(b,e,d.dh(M));if(JD(Pud(b,Yid),281)==qnd){Cpd(b);Ivd(b,O.b+Reb(MD(Pud(b,nhd)))+O.c,O.d+Reb(MD(Pud(b,mhd)))+O.a)}$.ah('Executed layout algorithm: '+OD(Pud(b,fhd))+' on node '+b.k);if(JD(Pud(b,Yid),281)==ond){if(n<0||m<0){throw Icb(new pbd('The size defined by the parent parallel node is too small for the space provided by the paddings of the child hierarchical node. '+b.k))}Qud(b,nhd)||Qud(b,mhd)||Cpd(b);p=Reb(MD(Pud(b,nhd)));o=Reb(MD(Pud(b,mhd)));$.ah('Desired Child Area: ('+p+'|'+o+')');R=n/p;S=m/o;Q=$wnd.Math.min(R,$wnd.Math.min(S,Reb(MD(Pud(b,Zid)))));Rud(b,_id,Q);$.ah(b.k+' -- Local Scale Factor (X|Y): ('+R+'|'+S+')');u=JD(Pud(b,phd),22);f=0;g=0;Q'?":sgb(RGe,a)?"'(?<' or '(? toIndex: ',bwe=', toIndex: ',cwe='Index: ',dwe=', Size: ',ewe='org.eclipse.elk.alg.common',fwe={51:1},gwe='org.eclipse.elk.alg.common.compaction',hwe='Scanline/EventHandler',iwe='org.eclipse.elk.alg.common.compaction.oned',jwe='CNode belongs to another CGroup.',kwe='ISpacingsHandler/1',lwe='The ',mwe=' instance has been finished already.',nwe='The direction ',owe=' is not supported by the CGraph instance.',pwe='OneDimensionalCompactor',qwe='OneDimensionalCompactor/lambda$0$Type',rwe='Quadruplet',swe='ScanlineConstraintCalculator',twe='ScanlineConstraintCalculator/ConstraintsScanlineHandler',uwe='ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type',vwe='ScanlineConstraintCalculator/Timestamp',wwe='ScanlineConstraintCalculator/lambda$0$Type',xwe={178:1,48:1},ywe='org.eclipse.elk.alg.common.networksimplex',zwe={171:1,3:1,4:1},Awe='org.eclipse.elk.alg.common.nodespacing',Bwe='org.eclipse.elk.alg.common.nodespacing.cellsystem',Cwe='CENTER',Dwe={216:1,337:1},Ewe={3:1,4:1,5:1,592:1},Fwe='LEFT',Gwe='RIGHT',Hwe='Vertical alignment cannot be null',Iwe='BOTTOM',Jwe='org.eclipse.elk.alg.common.nodespacing.internal',Kwe='UNDEFINED',Lwe=0.01,Mwe='org.eclipse.elk.alg.common.nodespacing.internal.algorithm',Nwe='LabelPlacer/lambda$0$Type',Owe='LabelPlacer/lambda$1$Type',Pwe='portRatioOrPosition',Qwe='org.eclipse.elk.alg.common.overlaps',Rwe='DOWN',Swe='org.eclipse.elk.alg.common.spore',Twe={3:1,4:1,5:1,198:1},Uwe={3:1,6:1,4:1,5:1,90:1,110:1},Vwe='org.eclipse.elk.alg.force',Wwe='ComponentsProcessor',Xwe='ComponentsProcessor/1',Ywe='ElkGraphImporter/lambda$0$Type',Zwe={214:1},$we='org.eclipse.elk.core',_we='org.eclipse.elk.graph.properties',axe='IPropertyHolder',bxe='org.eclipse.elk.alg.force.graph',cxe='Component Layout',dxe='org.eclipse.elk.alg.force.model',exe='org.eclipse.elk.core.data',fxe='org.eclipse.elk.force.model',gxe='org.eclipse.elk.force.iterations',hxe='org.eclipse.elk.force.repulsivePower',ixe='org.eclipse.elk.force.temperature',jxe=0.001,kxe='org.eclipse.elk.force.repulsion',lxe={148:1},mxe='org.eclipse.elk.alg.force.options',nxe=1.600000023841858,oxe='org.eclipse.elk.force',pxe='org.eclipse.elk.priority',qxe='org.eclipse.elk.spacing.nodeNode',rxe='org.eclipse.elk.spacing.edgeLabel',sxe='org.eclipse.elk.aspectRatio',txe='org.eclipse.elk.randomSeed',uxe='org.eclipse.elk.separateConnectedComponents',vxe='org.eclipse.elk.padding',wxe='org.eclipse.elk.interactive',xxe='org.eclipse.elk.portConstraints',yxe='org.eclipse.elk.edgeLabels.inline',zxe='org.eclipse.elk.omitNodeMicroLayout',Axe='org.eclipse.elk.nodeSize.fixedGraphSize',Bxe='org.eclipse.elk.nodeSize.options',Cxe='org.eclipse.elk.nodeSize.constraints',Dxe='org.eclipse.elk.nodeLabels.placement',Exe='org.eclipse.elk.portLabels.placement',Fxe='org.eclipse.elk.topdownLayout',Gxe='org.eclipse.elk.topdown.scaleFactor',Hxe='org.eclipse.elk.topdown.hierarchicalNodeWidth',Ixe='org.eclipse.elk.topdown.hierarchicalNodeAspectRatio',Jxe='org.eclipse.elk.topdown.nodeType',Kxe='origin',Lxe='random',Mxe='boundingBox.upLeft',Nxe='boundingBox.lowRight',Oxe='org.eclipse.elk.stress.fixed',Pxe='org.eclipse.elk.stress.desiredEdgeLength',Qxe='org.eclipse.elk.stress.dimension',Rxe='org.eclipse.elk.stress.epsilon',Sxe='org.eclipse.elk.stress.iterationLimit',Txe='org.eclipse.elk.stress',Uxe='ELK Stress',Vxe='org.eclipse.elk.nodeSize.minimum',Wxe='org.eclipse.elk.alg.force.stress',Xxe='Layered layout',Yxe='org.eclipse.elk.alg.layered',Zxe='org.eclipse.elk.alg.layered.compaction.components',$xe='org.eclipse.elk.alg.layered.compaction.oned',_xe='org.eclipse.elk.alg.layered.compaction.oned.algs',aye='org.eclipse.elk.alg.layered.compaction.recthull',bye='org.eclipse.elk.alg.layered.components',cye='NONE',dye='MODEL_ORDER',eye={3:1,6:1,4:1,10:1,5:1,126:1},fye={3:1,6:1,4:1,5:1,135:1,90:1,110:1},gye='org.eclipse.elk.alg.layered.compound',hye={43:1},iye='org.eclipse.elk.alg.layered.graph',jye=' -> ',kye='Not supported by LGraph',lye='Port side is undefined',mye={3:1,6:1,4:1,5:1,323:1,135:1,90:1,110:1},nye={3:1,6:1,4:1,5:1,135:1,199:1,209:1,90:1,110:1},oye={3:1,6:1,4:1,5:1,135:1,2004:1,209:1,90:1,110:1},pye='([{"\' \t\r\n',qye=')]}"\' \t\r\n',rye='The given string contains parts that cannot be parsed as numbers.',sye='org.eclipse.elk.core.math',tye={3:1,4:1,140:1,213:1,414:1},uye={3:1,4:1,104:1,213:1,414:1},vye='org.eclipse.elk.alg.layered.graph.transform',wye='ElkGraphImporter',xye='ElkGraphImporter/lambda$1$Type',yye='ElkGraphImporter/lambda$2$Type',zye='ElkGraphImporter/lambda$4$Type',Aye='org.eclipse.elk.alg.layered.intermediate',Bye='Node margin calculation',Cye='ONE_SIDED_GREEDY_SWITCH',Dye='TWO_SIDED_GREEDY_SWITCH',Eye='No implementation is available for the layout processor ',Fye='IntermediateProcessorStrategy',Gye="Node '",Hye='FIRST_SEPARATE',Iye='LAST_SEPARATE',Jye='Odd port side processing',Kye='org.eclipse.elk.alg.layered.intermediate.compaction',Lye='org.eclipse.elk.alg.layered.intermediate.greedyswitch',Mye='org.eclipse.elk.alg.layered.p3order.counting',Nye={220:1},Oye='org.eclipse.elk.alg.layered.intermediate.loops',Pye='org.eclipse.elk.alg.layered.intermediate.loops.ordering',Qye='org.eclipse.elk.alg.layered.intermediate.loops.routing',Rye='org.eclipse.elk.alg.layered.intermediate.preserveorder',Sye='org.eclipse.elk.alg.layered.intermediate.wrapping',Tye='org.eclipse.elk.alg.layered.options',Uye='INTERACTIVE',Vye='GREEDY',Wye='DEPTH_FIRST',Xye='EDGE_LENGTH',Yye='SELF_LOOPS',Zye='firstTryWithInitialOrder',$ye='org.eclipse.elk.layered.directionCongruency',_ye='org.eclipse.elk.layered.feedbackEdges',aze='org.eclipse.elk.layered.interactiveReferencePoint',bze='org.eclipse.elk.layered.mergeEdges',cze='org.eclipse.elk.layered.mergeHierarchyEdges',dze='org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides',eze='org.eclipse.elk.layered.portSortingStrategy',fze='org.eclipse.elk.layered.thoroughness',gze='org.eclipse.elk.layered.unnecessaryBendpoints',hze='org.eclipse.elk.layered.generatePositionAndLayerIds',ize='org.eclipse.elk.layered.cycleBreaking.strategy',jze='org.eclipse.elk.layered.layering.strategy',kze='org.eclipse.elk.layered.layering.layerConstraint',lze='org.eclipse.elk.layered.layering.layerChoiceConstraint',mze='org.eclipse.elk.layered.layering.layerId',nze='org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth',oze='org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor',pze='org.eclipse.elk.layered.layering.nodePromotion.strategy',qze='org.eclipse.elk.layered.layering.nodePromotion.maxIterations',rze='org.eclipse.elk.layered.layering.coffmanGraham.layerBound',sze='org.eclipse.elk.layered.crossingMinimization.strategy',tze='org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder',uze='org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness',vze='org.eclipse.elk.layered.crossingMinimization.semiInteractive',wze='org.eclipse.elk.layered.crossingMinimization.inLayerPredOf',xze='org.eclipse.elk.layered.crossingMinimization.inLayerSuccOf',yze='org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint',zze='org.eclipse.elk.layered.crossingMinimization.positionId',Aze='org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold',Bze='org.eclipse.elk.layered.crossingMinimization.greedySwitch.type',Cze='org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type',Dze='org.eclipse.elk.layered.nodePlacement.strategy',Eze='org.eclipse.elk.layered.nodePlacement.favorStraightEdges',Fze='org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening',Gze='org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment',Hze='org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening',Ize='org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility',Jze='org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default',Kze='org.eclipse.elk.layered.edgeRouting.selfLoopDistribution',Lze='org.eclipse.elk.layered.edgeRouting.selfLoopOrdering',Mze='org.eclipse.elk.layered.edgeRouting.splines.mode',Nze='org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor',Oze='org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth',Pze='org.eclipse.elk.layered.spacing.baseValue',Qze='org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers',Rze='org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers',Sze='org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers',Tze='org.eclipse.elk.layered.priority.direction',Uze='org.eclipse.elk.layered.priority.shortness',Vze='org.eclipse.elk.layered.priority.straightness',Wze='org.eclipse.elk.layered.compaction.connectedComponents',Xze='org.eclipse.elk.layered.compaction.postCompaction.strategy',Yze='org.eclipse.elk.layered.compaction.postCompaction.constraints',Zze='org.eclipse.elk.layered.highDegreeNodes.treatment',$ze='org.eclipse.elk.layered.highDegreeNodes.threshold',_ze='org.eclipse.elk.layered.highDegreeNodes.treeHeight',aAe='org.eclipse.elk.layered.wrapping.strategy',bAe='org.eclipse.elk.layered.wrapping.additionalEdgeSpacing',cAe='org.eclipse.elk.layered.wrapping.correctionFactor',dAe='org.eclipse.elk.layered.wrapping.cutting.strategy',eAe='org.eclipse.elk.layered.wrapping.cutting.cuts',fAe='org.eclipse.elk.layered.wrapping.cutting.msd.freedom',gAe='org.eclipse.elk.layered.wrapping.validify.strategy',hAe='org.eclipse.elk.layered.wrapping.validify.forbiddenIndices',iAe='org.eclipse.elk.layered.wrapping.multiEdge.improveCuts',jAe='org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty',kAe='org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges',lAe='org.eclipse.elk.layered.layerUnzipping.strategy',mAe='org.eclipse.elk.layered.layerUnzipping.minimizeEdgeLength',nAe='org.eclipse.elk.layered.layerUnzipping.layerSplit',oAe='org.eclipse.elk.layered.layerUnzipping.resetOnLongEdges',pAe='org.eclipse.elk.layered.edgeLabels.sideSelection',qAe='org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy',rAe='org.eclipse.elk.layered.considerModelOrder.strategy',sAe='org.eclipse.elk.layered.considerModelOrder.portModelOrder',tAe='org.eclipse.elk.layered.considerModelOrder.noModelOrder',uAe='org.eclipse.elk.layered.considerModelOrder.components',vAe='org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy',wAe='org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence',xAe='org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence',yAe='org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cycleBreakingId',zAe='org.eclipse.elk.layered.considerModelOrder.groupModelOrder.crossingMinimizationId',AAe='org.eclipse.elk.layered.considerModelOrder.groupModelOrder.componentGroupId',BAe='org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cbGroupOrderStrategy',CAe='org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cbPreferredSourceId',DAe='org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cbPreferredTargetId',EAe='org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cmGroupOrderStrategy',FAe='org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cmEnforcedGroupOrders',GAe='layering',HAe='layering.minWidth',IAe='layering.nodePromotion',JAe='crossingMinimization',KAe='org.eclipse.elk.hierarchyHandling',LAe='crossingMinimization.greedySwitch',MAe='nodePlacement',NAe='nodePlacement.bk',OAe='edgeRouting',PAe='org.eclipse.elk.edgeRouting',QAe='spacing',RAe='priority',SAe='compaction',TAe='compaction.postCompaction',UAe='Specifies whether and how post-process compaction is applied.',VAe='highDegreeNodes',WAe='wrapping',XAe='wrapping.cutting',YAe='wrapping.validify',ZAe='wrapping.multiEdge',$Ae='layerUnzipping',_Ae='edgeLabels',aBe='considerModelOrder',bBe='considerModelOrder.groupModelOrder',cBe='Group ID of the Node Type',dBe='org.eclipse.elk.spacing.commentComment',eBe='org.eclipse.elk.spacing.commentNode',fBe='org.eclipse.elk.spacing.componentComponent',gBe='org.eclipse.elk.spacing.edgeEdge',hBe='org.eclipse.elk.spacing.edgeNode',iBe='org.eclipse.elk.spacing.labelLabel',jBe='org.eclipse.elk.spacing.labelPortHorizontal',kBe='org.eclipse.elk.spacing.labelPortVertical',lBe='org.eclipse.elk.spacing.labelNode',mBe='org.eclipse.elk.spacing.nodeSelfLoop',nBe='org.eclipse.elk.spacing.portPort',oBe='org.eclipse.elk.spacing.individual',pBe='org.eclipse.elk.port.borderOffset',qBe='org.eclipse.elk.noLayout',rBe='org.eclipse.elk.port.side',sBe='org.eclipse.elk.debugMode',tBe='org.eclipse.elk.alignment',uBe='org.eclipse.elk.insideSelfLoops.activate',vBe='org.eclipse.elk.insideSelfLoops.yo',wBe='org.eclipse.elk.direction',xBe='org.eclipse.elk.nodeLabels.padding',yBe='org.eclipse.elk.portLabels.nextToPortIfPossible',zBe='org.eclipse.elk.portLabels.treatAsGroup',ABe='org.eclipse.elk.portAlignment.default',BBe='org.eclipse.elk.portAlignment.north',CBe='org.eclipse.elk.portAlignment.south',DBe='org.eclipse.elk.portAlignment.west',EBe='org.eclipse.elk.portAlignment.east',FBe='org.eclipse.elk.contentAlignment',GBe='org.eclipse.elk.junctionPoints',HBe='org.eclipse.elk.edge.thickness',IBe='org.eclipse.elk.edgeLabels.placement',JBe='org.eclipse.elk.port.index',KBe='org.eclipse.elk.commentBox',LBe='org.eclipse.elk.hypernode',MBe='org.eclipse.elk.port.anchor',NBe='org.eclipse.elk.partitioning.activate',OBe='org.eclipse.elk.partitioning.partition',PBe='org.eclipse.elk.position',QBe='org.eclipse.elk.margins',RBe='org.eclipse.elk.spacing.portsSurrounding',SBe='org.eclipse.elk.interactiveLayout',TBe='org.eclipse.elk.core.util',UBe={3:1,4:1,5:1,590:1},VBe='NETWORK_SIMPLEX',WBe='SIMPLE',XBe={95:1,43:1},YBe='org.eclipse.elk.alg.layered.p1cycles',ZBe='Depth-first cycle removal',$Be='Model order cycle breaking',_Be='org.eclipse.elk.alg.layered.p2layers',aCe={406:1,220:1},bCe={830:1,3:1,4:1},cCe='org.eclipse.elk.alg.layered.p3order',dCe=1.7976931348623157E308,eCe=4.9E-324,fCe='org.eclipse.elk.alg.layered.p4nodes',gCe={3:1,4:1,5:1,838:1},hCe=1.0E-5,iCe='org.eclipse.elk.alg.layered.p4nodes.bk',jCe='org.eclipse.elk.alg.layered.p5edges',kCe='org.eclipse.elk.alg.layered.p5edges.orthogonal',lCe='org.eclipse.elk.alg.layered.p5edges.orthogonal.direction',mCe=1.0E-6,nCe='org.eclipse.elk.alg.layered.p5edges.splines',oCe=0.09999999999999998,pCe=1.0E-8,qCe=4.71238898038469,rCe=1.5707963267948966,sCe=3.141592653589793,tCe='org.eclipse.elk.alg.mrtree',uCe=0.10000000149011612,vCe='SUPER_ROOT',wCe='org.eclipse.elk.alg.mrtree.graph',xCe=-1.7976931348623157E308,yCe='org.eclipse.elk.alg.mrtree.intermediate',zCe='Processor compute fanout',ACe={3:1,6:1,4:1,5:1,522:1,90:1,110:1},BCe='Set neighbors in level',CCe='org.eclipse.elk.alg.mrtree.options',DCe='DESCENDANTS',ECe='org.eclipse.elk.mrtree.compaction',FCe='org.eclipse.elk.mrtree.edgeEndTextureLength',GCe='org.eclipse.elk.mrtree.treeLevel',HCe='org.eclipse.elk.mrtree.positionConstraint',ICe='org.eclipse.elk.mrtree.weighting',JCe='org.eclipse.elk.mrtree.edgeRoutingMode',KCe='org.eclipse.elk.mrtree.searchOrder',LCe='Position Constraint',MCe='org.eclipse.elk.mrtree',NCe='org.eclipse.elk.tree',OCe='Processor arrange level',PCe='org.eclipse.elk.alg.mrtree.p2order',QCe='org.eclipse.elk.alg.mrtree.p4route',RCe='org.eclipse.elk.alg.radial',SCe=6.283185307179586,TCe='Before',UCe='After',VCe='org.eclipse.elk.alg.radial.intermediate',WCe='COMPACTION',XCe='org.eclipse.elk.alg.radial.intermediate.compaction',YCe={3:1,4:1,5:1,90:1},ZCe='org.eclipse.elk.alg.radial.intermediate.optimization',$Ce='No implementation is available for the layout option ',_Ce='org.eclipse.elk.alg.radial.options',aDe='CompactionStrategy',bDe='org.eclipse.elk.radial.centerOnRoot',cDe='org.eclipse.elk.radial.orderId',dDe='org.eclipse.elk.radial.radius',eDe='org.eclipse.elk.radial.rotate',fDe='org.eclipse.elk.radial.compactor',gDe='org.eclipse.elk.radial.compactionStepSize',hDe='org.eclipse.elk.radial.sorter',iDe='org.eclipse.elk.radial.wedgeCriteria',jDe='org.eclipse.elk.radial.optimizationCriteria',kDe='org.eclipse.elk.radial.rotation.targetAngle',lDe='org.eclipse.elk.radial.rotation.computeAdditionalWedgeSpace',mDe='org.eclipse.elk.radial.rotation.outgoingEdgeAngles',nDe='Compaction',oDe='rotation',pDe='org.eclipse.elk.radial',qDe='org.eclipse.elk.alg.radial.p1position.wedge',rDe='org.eclipse.elk.alg.radial.sorting',sDe=5.497787143782138,tDe=3.9269908169872414,uDe=2.356194490192345,vDe='org.eclipse.elk.alg.rectpacking',wDe='org.eclipse.elk.alg.rectpacking.intermediate',xDe='org.eclipse.elk.alg.rectpacking.options',yDe='org.eclipse.elk.rectpacking.trybox',zDe='org.eclipse.elk.rectpacking.currentPosition',ADe='org.eclipse.elk.rectpacking.desiredPosition',BDe='org.eclipse.elk.rectpacking.inNewRow',CDe='org.eclipse.elk.rectpacking.orderBySize',DDe='org.eclipse.elk.rectpacking.widthApproximation.strategy',EDe='org.eclipse.elk.rectpacking.widthApproximation.targetWidth',FDe='org.eclipse.elk.rectpacking.widthApproximation.optimizationGoal',GDe='org.eclipse.elk.rectpacking.widthApproximation.lastPlaceShift',HDe='org.eclipse.elk.rectpacking.packing.strategy',IDe='org.eclipse.elk.rectpacking.packing.compaction.rowHeightReevaluation',JDe='org.eclipse.elk.rectpacking.packing.compaction.iterations',KDe='org.eclipse.elk.rectpacking.whiteSpaceElimination.strategy',LDe='widthApproximation',MDe='Compaction Strategy',NDe='packing.compaction',ODe='org.eclipse.elk.rectpacking',PDe='org.eclipse.elk.alg.rectpacking.p1widthapproximation',QDe='org.eclipse.elk.alg.rectpacking.p2packing',RDe='No Compaction',SDe='org.eclipse.elk.alg.rectpacking.p3whitespaceelimination',TDe='org.eclipse.elk.alg.rectpacking.util',UDe='No implementation available for ',VDe='org.eclipse.elk.alg.spore',WDe='org.eclipse.elk.alg.spore.options',XDe='org.eclipse.elk.sporeCompaction',YDe='org.eclipse.elk.underlyingLayoutAlgorithm',ZDe='org.eclipse.elk.processingOrder.treeConstruction',$De='org.eclipse.elk.processingOrder.spanningTreeCostFunction',_De='org.eclipse.elk.processingOrder.preferredRoot',aEe='org.eclipse.elk.processingOrder.rootSelection',bEe='org.eclipse.elk.structure.structureExtractionStrategy',cEe='org.eclipse.elk.compaction.compactionStrategy',dEe='org.eclipse.elk.compaction.orthogonal',eEe='org.eclipse.elk.overlapRemoval.maxIterations',fEe='org.eclipse.elk.overlapRemoval.runScanline',gEe='processingOrder',hEe='overlapRemoval',iEe='org.eclipse.elk.sporeOverlap',jEe='org.eclipse.elk.alg.spore.p1structure',kEe='org.eclipse.elk.alg.spore.p2processingorder',lEe='org.eclipse.elk.alg.spore.p3execution',mEe='Topdown Layout',nEe='Invalid index: ',oEe='org.eclipse.elk.core.alg',pEe={342:1},qEe={296:1},rEe='Make sure its type is registered with the ',sEe=' utility class.',tEe='true',uEe='false',vEe="Couldn't clone property '",wEe=0.05,xEe='org.eclipse.elk.core.options',yEe=1.2999999523162842,zEe='org.eclipse.elk.box',AEe='org.eclipse.elk.expandNodes',BEe='org.eclipse.elk.box.packingMode',CEe='org.eclipse.elk.algorithm',DEe='org.eclipse.elk.resolvedAlgorithm',EEe='org.eclipse.elk.bendPoints',FEe='org.eclipse.elk.labelManager',GEe='org.eclipse.elk.softwrappingFuzziness',HEe='org.eclipse.elk.scaleFactor',IEe='org.eclipse.elk.childAreaWidth',JEe='org.eclipse.elk.childAreaHeight',KEe='org.eclipse.elk.animate',LEe='org.eclipse.elk.animTimeFactor',MEe='org.eclipse.elk.layoutAncestors',NEe='org.eclipse.elk.maxAnimTime',OEe='org.eclipse.elk.minAnimTime',PEe='org.eclipse.elk.progressBar',QEe='org.eclipse.elk.validateGraph',REe='org.eclipse.elk.validateOptions',SEe='org.eclipse.elk.zoomToFit',TEe='org.eclipse.elk.json.shapeCoords',UEe='org.eclipse.elk.json.edgeCoords',VEe='org.eclipse.elk.font.name',WEe='org.eclipse.elk.font.size',XEe='org.eclipse.elk.topdown.sizeCategories',YEe='org.eclipse.elk.topdown.sizeCategoriesHierarchicalNodeWeight',ZEe='org.eclipse.elk.topdown.sizeApproximator',$Ee='org.eclipse.elk.topdown.scaleCap',_Ee='org.eclipse.elk.edge.type',aFe='partitioning',bFe='nodeLabels',cFe='portAlignment',dFe='nodeSize',eFe='port',fFe='portLabels',gFe='topdown',hFe='insideSelfLoops',iFe='INHERIT',jFe='org.eclipse.elk.fixed',kFe='org.eclipse.elk.random',lFe={3:1,35:1,23:1,521:1,288:1},mFe='port must have a parent node to calculate the port side',nFe='The edge needs to have exactly one edge section. Found: ',oFe='org.eclipse.elk.core.util.adapters',pFe='org.eclipse.emf.ecore',qFe='org.eclipse.elk.graph',rFe='EMapPropertyHolder',sFe='ElkBendPoint',tFe='ElkGraphElement',uFe='ElkConnectableShape',vFe='ElkEdge',wFe='ElkEdgeSection',xFe='EModelElement',yFe='ENamedElement',zFe='ElkLabel',AFe='ElkNode',BFe='ElkPort',CFe={94:1,93:1},DFe='org.eclipse.emf.common.notify.impl',EFe="The feature '",FFe="' is not a valid changeable feature",GFe='Expecting null',HFe="' is not a valid feature",IFe='The feature ID',JFe=' is not a valid feature ID',KFe=32768,LFe={109:1,94:1,93:1,57:1,52:1,100:1},MFe='org.eclipse.emf.ecore.impl',NFe='org.eclipse.elk.graph.impl',OFe='Recursive containment not allowed for ',PFe="The datatype '",QFe="' is not a valid classifier",RFe="The value '",SFe={195:1,3:1,4:1},TFe="The class '",UFe='http://www.eclipse.org/elk/ElkGraph',VFe='property',WFe='value',XFe='source',YFe='properties',ZFe='identifier',$Fe='height',_Fe='width',aGe='parent',bGe='text',cGe='children',dGe='hierarchical',eGe='sources',fGe='targets',gGe='sections',hGe='bendPoints',iGe='outgoingShape',jGe='incomingShape',kGe='outgoingSections',lGe='incomingSections',mGe='org.eclipse.emf.common.util',nGe='Severe implementation error in the Json to ElkGraph importer.',oGe='id',pGe='org.eclipse.elk.graph.json',qGe='Unhandled parameter types: ',rGe='startPoint',sGe="An edge must have at least one source and one target (edge id: '",tGe="').",uGe='Referenced edge section does not exist: ',vGe=" (edge id: '",wGe='target',xGe='sourcePoint',yGe='targetPoint',zGe='group',AGe='name',BGe='connectableShape cannot be null',CGe='edge cannot be null',DGe="Passed edge is not 'simple'.",EGe='org.eclipse.elk.graph.util',FGe="The 'no duplicates' constraint is violated",GGe='targetIndex=',HGe=', size=',IGe='sourceIndex=',JGe={3:1,4:1,20:1,31:1,56:1,18:1,16:1,59:1,71:1,67:1,61:1},KGe={3:1,4:1,20:1,31:1,56:1,18:1,50:1,16:1,59:1,71:1,67:1,61:1,585:1},LGe='logging',MGe='measureExecutionTime',NGe='parser.parse.1',OGe='parser.parse.2',PGe='parser.next.1',QGe='parser.next.2',RGe='parser.next.3',SGe='parser.next.4',TGe='parser.factor.1',UGe='parser.factor.2',VGe='parser.factor.3',WGe='parser.factor.4',XGe='parser.factor.5',YGe='parser.factor.6',ZGe='parser.atom.1',$Ge='parser.atom.2',_Ge='parser.atom.3',aHe='parser.atom.4',bHe='parser.atom.5',cHe='parser.cc.1',dHe='parser.cc.2',eHe='parser.cc.3',fHe='parser.cc.5',gHe='parser.cc.6',hHe='parser.cc.7',iHe='parser.cc.8',jHe='parser.ope.1',kHe='parser.ope.2',lHe='parser.ope.3',mHe='parser.descape.1',nHe='parser.descape.2',oHe='parser.descape.3',pHe='parser.descape.4',qHe='parser.descape.5',rHe='parser.process.1',sHe='parser.quantifier.1',tHe='parser.quantifier.2',uHe='parser.quantifier.3',vHe='parser.quantifier.4',wHe='parser.quantifier.5',xHe='org.eclipse.emf.common.notify',yHe={415:1,676:1},zHe={3:1,4:1,20:1,31:1,56:1,18:1,16:1,71:1,61:1},AHe={373:1,151:1},BHe='index=',CHe={3:1,4:1,5:1,129:1},DHe={3:1,4:1,20:1,31:1,56:1,18:1,16:1,59:1,71:1,61:1},EHe={3:1,6:1,4:1,5:1,198:1},FHe={3:1,4:1,5:1,175:1,374:1},GHe=1024,HHe=';/?:@&=+$,',IHe='invalid authority: ',JHe='EAnnotation',KHe='ETypedElement',LHe='EStructuralFeature',MHe='EAttribute',NHe='EClassifier',OHe='EEnumLiteral',PHe='EGenericType',QHe='EOperation',RHe='EParameter',SHe='EReference',THe='ETypeParameter',UHe='org.eclipse.emf.ecore.util',VHe={77:1},WHe={3:1,20:1,18:1,16:1,61:1,586:1,77:1,72:1,98:1},XHe='org.eclipse.emf.ecore.util.FeatureMap$Entry',YHe=8192,ZHe='byte',$He='char',_He='double',aIe='float',bIe='int',cIe='long',dIe='short',eIe='java.lang.Object',fIe={3:1,4:1,5:1,255:1},gIe={3:1,4:1,5:1,678:1},hIe={3:1,4:1,20:1,31:1,56:1,18:1,16:1,59:1,71:1,67:1,61:1,72:1},iIe={3:1,4:1,20:1,31:1,56:1,18:1,16:1,59:1,71:1,67:1,61:1,77:1,72:1,98:1},jIe='mixed',kIe='http:///org/eclipse/emf/ecore/util/ExtendedMetaData',lIe='kind',mIe={3:1,4:1,5:1,679:1},nIe={3:1,4:1,20:1,31:1,56:1,18:1,16:1,71:1,61:1,77:1,72:1,98:1},oIe={20:1,31:1,56:1,18:1,16:1,61:1,72:1},pIe={50:1,128:1,287:1},qIe={75:1,344:1},rIe="The value of type '",sIe="' must be of type '",tIe=1306,uIe='http://www.eclipse.org/emf/2002/Ecore',vIe=-32768,wIe='constraints',xIe='baseType',yIe='getEStructuralFeature',zIe='getFeatureID',AIe='feature',BIe='getOperationID',CIe='operation',DIe='defaultValue',EIe='eTypeParameters',FIe='isInstance',GIe='getEEnumLiteral',HIe='eContainingClass',IIe={58:1},JIe={3:1,4:1,5:1,122:1},KIe='org.eclipse.emf.ecore.resource',LIe={94:1,93:1,588:1,1996:1},MIe='org.eclipse.emf.ecore.resource.impl',NIe='unspecified',OIe='simple',PIe='attribute',QIe='attributeWildcard',RIe='element',SIe='elementWildcard',TIe='collapse',UIe='itemType',VIe='namespace',WIe='##targetNamespace',XIe='whiteSpace',YIe='wildcards',ZIe='http://www.eclipse.org/emf/2003/XMLType',$Ie='##any',_Ie='uninitialized',aJe='The multiplicity constraint is violated',bJe='org.eclipse.emf.ecore.xml.type',cJe='ProcessingInstruction',dJe='SimpleAnyType',eJe='XMLTypeDocumentRoot',fJe='org.eclipse.emf.ecore.xml.type.impl',gJe='INF',hJe='processing',iJe='ENTITIES_._base',jJe='minLength',kJe='ENTITY',lJe='NCName',mJe='IDREFS_._base',nJe='integer',oJe='token',pJe='pattern',qJe='[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*',rJe='\\i\\c*',sJe='[\\i-[:]][\\c-[:]]*',tJe='nonPositiveInteger',uJe='maxInclusive',vJe='NMTOKEN',wJe='NMTOKENS_._base',xJe='nonNegativeInteger',yJe='minInclusive',zJe='normalizedString',AJe='unsignedByte',BJe='unsignedInt',CJe='18446744073709551615',DJe='unsignedShort',EJe='processingInstruction',FJe='org.eclipse.emf.ecore.xml.type.internal',GJe=1114111,HJe='Internal Error: shorthands: \\u',IJe='xml:isDigit',JJe='xml:isWord',KJe='xml:isSpace',LJe='xml:isNameChar',MJe='xml:isInitialNameChar',NJe='09\u0660\u0669\u06F0\u06F9\u0966\u096F\u09E6\u09EF\u0A66\u0A6F\u0AE6\u0AEF\u0B66\u0B6F\u0BE7\u0BEF\u0C66\u0C6F\u0CE6\u0CEF\u0D66\u0D6F\u0E50\u0E59\u0ED0\u0ED9\u0F20\u0F29',OJe='AZaz\xC0\xD6\xD8\xF6\xF8\u0131\u0134\u013E\u0141\u0148\u014A\u017E\u0180\u01C3\u01CD\u01F0\u01F4\u01F5\u01FA\u0217\u0250\u02A8\u02BB\u02C1\u0386\u0386\u0388\u038A\u038C\u038C\u038E\u03A1\u03A3\u03CE\u03D0\u03D6\u03DA\u03DA\u03DC\u03DC\u03DE\u03DE\u03E0\u03E0\u03E2\u03F3\u0401\u040C\u040E\u044F\u0451\u045C\u045E\u0481\u0490\u04C4\u04C7\u04C8\u04CB\u04CC\u04D0\u04EB\u04EE\u04F5\u04F8\u04F9\u0531\u0556\u0559\u0559\u0561\u0586\u05D0\u05EA\u05F0\u05F2\u0621\u063A\u0641\u064A\u0671\u06B7\u06BA\u06BE\u06C0\u06CE\u06D0\u06D3\u06D5\u06D5\u06E5\u06E6\u0905\u0939\u093D\u093D\u0958\u0961\u0985\u098C\u098F\u0990\u0993\u09A8\u09AA\u09B0\u09B2\u09B2\u09B6\u09B9\u09DC\u09DD\u09DF\u09E1\u09F0\u09F1\u0A05\u0A0A\u0A0F\u0A10\u0A13\u0A28\u0A2A\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59\u0A5C\u0A5E\u0A5E\u0A72\u0A74\u0A85\u0A8B\u0A8D\u0A8D\u0A8F\u0A91\u0A93\u0AA8\u0AAA\u0AB0\u0AB2\u0AB3\u0AB5\u0AB9\u0ABD\u0ABD\u0AE0\u0AE0\u0B05\u0B0C\u0B0F\u0B10\u0B13\u0B28\u0B2A\u0B30\u0B32\u0B33\u0B36\u0B39\u0B3D\u0B3D\u0B5C\u0B5D\u0B5F\u0B61\u0B85\u0B8A\u0B8E\u0B90\u0B92\u0B95\u0B99\u0B9A\u0B9C\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8\u0BAA\u0BAE\u0BB5\u0BB7\u0BB9\u0C05\u0C0C\u0C0E\u0C10\u0C12\u0C28\u0C2A\u0C33\u0C35\u0C39\u0C60\u0C61\u0C85\u0C8C\u0C8E\u0C90\u0C92\u0CA8\u0CAA\u0CB3\u0CB5\u0CB9\u0CDE\u0CDE\u0CE0\u0CE1\u0D05\u0D0C\u0D0E\u0D10\u0D12\u0D28\u0D2A\u0D39\u0D60\u0D61\u0E01\u0E2E\u0E30\u0E30\u0E32\u0E33\u0E40\u0E45\u0E81\u0E82\u0E84\u0E84\u0E87\u0E88\u0E8A\u0E8A\u0E8D\u0E8D\u0E94\u0E97\u0E99\u0E9F\u0EA1\u0EA3\u0EA5\u0EA5\u0EA7\u0EA7\u0EAA\u0EAB\u0EAD\u0EAE\u0EB0\u0EB0\u0EB2\u0EB3\u0EBD\u0EBD\u0EC0\u0EC4\u0F40\u0F47\u0F49\u0F69\u10A0\u10C5\u10D0\u10F6\u1100\u1100\u1102\u1103\u1105\u1107\u1109\u1109\u110B\u110C\u110E\u1112\u113C\u113C\u113E\u113E\u1140\u1140\u114C\u114C\u114E\u114E\u1150\u1150\u1154\u1155\u1159\u1159\u115F\u1161\u1163\u1163\u1165\u1165\u1167\u1167\u1169\u1169\u116D\u116E\u1172\u1173\u1175\u1175\u119E\u119E\u11A8\u11A8\u11AB\u11AB\u11AE\u11AF\u11B7\u11B8\u11BA\u11BA\u11BC\u11C2\u11EB\u11EB\u11F0\u11F0\u11F9\u11F9\u1E00\u1E9B\u1EA0\u1EF9\u1F00\u1F15\u1F18\u1F1D\u1F20\u1F45\u1F48\u1F4D\u1F50\u1F57\u1F59\u1F59\u1F5B\u1F5B\u1F5D\u1F5D\u1F5F\u1F7D\u1F80\u1FB4\u1FB6\u1FBC\u1FBE\u1FBE\u1FC2\u1FC4\u1FC6\u1FCC\u1FD0\u1FD3\u1FD6\u1FDB\u1FE0\u1FEC\u1FF2\u1FF4\u1FF6\u1FFC\u2126\u2126\u212A\u212B\u212E\u212E\u2180\u2182\u3007\u3007\u3021\u3029\u3041\u3094\u30A1\u30FA\u3105\u312C\u4E00\u9FA5\uAC00\uD7A3',PJe='Private Use',QJe='ASSIGNED',RJe='\x00\x7F\x80\xFF\u0100\u017F\u0180\u024F\u0250\u02AF\u02B0\u02FF\u0300\u036F\u0370\u03FF\u0400\u04FF\u0530\u058F\u0590\u05FF\u0600\u06FF\u0700\u074F\u0780\u07BF\u0900\u097F\u0980\u09FF\u0A00\u0A7F\u0A80\u0AFF\u0B00\u0B7F\u0B80\u0BFF\u0C00\u0C7F\u0C80\u0CFF\u0D00\u0D7F\u0D80\u0DFF\u0E00\u0E7F\u0E80\u0EFF\u0F00\u0FFF\u1000\u109F\u10A0\u10FF\u1100\u11FF\u1200\u137F\u13A0\u13FF\u1400\u167F\u1680\u169F\u16A0\u16FF\u1780\u17FF\u1800\u18AF\u1E00\u1EFF\u1F00\u1FFF\u2000\u206F\u2070\u209F\u20A0\u20CF\u20D0\u20FF\u2100\u214F\u2150\u218F\u2190\u21FF\u2200\u22FF\u2300\u23FF\u2400\u243F\u2440\u245F\u2460\u24FF\u2500\u257F\u2580\u259F\u25A0\u25FF\u2600\u26FF\u2700\u27BF\u2800\u28FF\u2E80\u2EFF\u2F00\u2FDF\u2FF0\u2FFF\u3000\u303F\u3040\u309F\u30A0\u30FF\u3100\u312F\u3130\u318F\u3190\u319F\u31A0\u31BF\u3200\u32FF\u3300\u33FF\u3400\u4DB5\u4E00\u9FFF\uA000\uA48F\uA490\uA4CF\uAC00\uD7A3\uE000\uF8FF\uF900\uFAFF\uFB00\uFB4F\uFB50\uFDFF\uFE20\uFE2F\uFE30\uFE4F\uFE50\uFE6F\uFE70\uFEFE\uFEFF\uFEFF\uFF00\uFFEF',SJe='UNASSIGNED',TJe={3:1,121:1},UJe='org.eclipse.emf.ecore.xml.type.util',VJe={3:1,4:1,5:1,376:1},WJe='org.eclipse.xtext.xbase.lib',XJe='Cannot add elements to a Range',YJe='Cannot set elements in a Range',ZJe='Cannot remove elements from a Range',$Je='user.agent';var _,ldb,gdb,Gcb=-1;$wnd.goog=$wnd.goog||{};$wnd.goog.global=$wnd.goog.global||$wnd;ldb={};mdb(1,null,{},nb);_.Fb=function ob(a){return mb(this,a)};_.Gb=function qb(){return this.Pm};_.Hb=function sb(){return ADb(this)};_.Ib=function ub(){var a;return ueb(rb(this))+'@'+(a=tb(this)>>>0,a.toString(16))};_.equals=function(a){return this.Fb(a)};_.hashCode=function(){return this.Hb()};_.toString=function(){return this.Ib()};var FD,GD,HD;mdb(298,1,{298:1,2086:1},web);_.te=function xeb(a){var b;b=new web;b.i=4;a>1?(b.c=Eeb(this,a-1)):(b.c=this);return b};_.ue=function Deb(){seb(this);return this.b};_.ve=function Feb(){return ueb(this)};_.we=function Heb(){return seb(this),this.k};_.xe=function Jeb(){return (this.i&4)!=0};_.ye=function Keb(){return (this.i&1)!=0};_.Ib=function Neb(){return veb(this)};_.i=0;var reb=1;var aJ=zeb(mte,'Object',1);var KI=zeb(mte,'Class',298);mdb(2058,1,nte);var gE=zeb(ote,'Optional',2058);mdb(1160,2058,nte,xb);_.Fb=function yb(a){return a===this};_.Hb=function zb(){return 2040732332};_.Ib=function Ab(){return 'Optional.absent()'};_.Jb=function Bb(a){Qb(a);return wb(),vb};var vb;var eE=zeb(ote,'Absent',1160);mdb(627,1,{},Gb);var fE=zeb(ote,'Joiner',627);var hE=Beb(ote,'Predicate');mdb(577,1,{178:1,577:1,3:1,48:1},Yb);_.Mb=function ac(a){return Xb(this,a)};_.Lb=function Zb(a){return Xb(this,a)};_.Fb=function $b(a){var b;if(RD(a,577)){b=JD(a,577);return It(this.a,b.a)}return false};_.Hb=function _b(){return Jnb(this.a)+306654252};_.Ib=function bc(){return Wb(this.a)};var iE=zeb(ote,'Predicates/AndPredicate',577);mdb(411,2058,{411:1,3:1},cc);_.Fb=function dc(a){var b;if(RD(a,411)){b=JD(a,411);return pb(this.a,b.a)}return false};_.Hb=function ec(){return 1502476572+tb(this.a)};_.Ib=function fc(){return ute+this.a+')'};_.Jb=function gc(a){return new cc(Rb(a.Kb(this.a),'the Function passed to Optional.transform() must not return null.'))};var jE=zeb(ote,'Present',411);mdb(204,1,wte);_.Nb=function kc(a){ctb(this,a)};_.Qb=function lc(){jc()};var WH=zeb(xte,'UnmodifiableIterator',204);mdb(2038,204,yte);_.Qb=function nc(){jc()};_.Rb=function mc(a){throw Icb(new qhb)};_.Wb=function oc(a){throw Icb(new qhb)};var XH=zeb(xte,'UnmodifiableListIterator',2038);mdb(392,2038,yte);_.Ob=function rc(){return this.b0};_.Pb=function tc(){if(this.b>=this.c){throw Icb(new Hub)}return this.Xb(this.b++)};_.Tb=function uc(){return this.b};_.Ub=function vc(){if(this.b<=0){throw Icb(new Hub)}return this.Xb(--this.b)};_.Vb=function wc(){return this.b-1};_.b=0;_.c=0;var kE=zeb(xte,'AbstractIndexedListIterator',392);mdb(702,204,wte);_.Ob=function Ac(){return xc(this)};_.Pb=function Bc(){return yc(this)};_.e=1;var lE=zeb(xte,'AbstractIterator',702);mdb(2046,1,{229:1});_.Zb=function Hc(){var a;return a=this.f,!a?(this.f=this.ac()):a};_.Fb=function Ic(a){return ow(this,a)};_.Hb=function Jc(){return tb(this.Zb())};_.dc=function Kc(){return this.gc()==0};_.ec=function Lc(){return Ec(this)};_.Ib=function Mc(){return qdb(this.Zb())};var QE=zeb(xte,'AbstractMultimap',2046);mdb(730,2046,zte);_.$b=function Xc(){Nc(this)};_._b=function Yc(a){return Oc(this,a)};_.ac=function Zc(){return new me(this,this.c)};_.ic=function $c(a){return this.hc()};_.bc=function _c(){return new xf(this,this.c)};_.jc=function ad(){return this.mc(this.hc())};_.kc=function bd(){return new Hd(this)};_.lc=function cd(){return ck(this.c.vc().Lc(),new fh,64,this.d)};_.cc=function dd(a){return Qc(this,a)};_.fc=function gd(a){return Sc(this,a)};_.gc=function hd(){return this.d};_.mc=function jd(a){return Fnb(),new Eob(a)};_.nc=function kd(){return new Dd(this)};_.oc=function ld(){return ck(this.c.Bc().Lc(),new Fd,64,this.d)};_.pc=function md(a,b){return new jg(this,a,b,null)};_.d=0;var LE=zeb(xte,'AbstractMapBasedMultimap',730);mdb(1661,730,zte);_.hc=function pd(){return new jmb(this.a)};_.jc=function qd(){return Fnb(),Fnb(),Cnb};_.cc=function sd(a){return JD(Qc(this,a),16)};_.fc=function ud(a){return JD(Sc(this,a),16)};_.Zb=function od(){return nd(this)};_.Fb=function rd(a){return ow(this,a)};_.qc=function td(a){return JD(Qc(this,a),16)};_.rc=function vd(a){return JD(Sc(this,a),16)};_.mc=function wd(a){return Onb(JD(a,16))};_.pc=function xd(a,b){return Vc(this,a,JD(b,16),null)};var mE=zeb(xte,'AbstractListMultimap',1661);mdb(736,1,Ate);_.Nb=function zd(a){ctb(this,a)};_.Ob=function Ad(){return this.c.Ob()||this.e.Ob()};_.Pb=function Bd(){var a;if(!this.e.Ob()){a=JD(this.c.Pb(),45);this.b=a.jd();this.a=JD(a.kd(),18);this.e=this.a.Jc()}return this.sc(this.b,this.e.Pb())};_.Qb=function Cd(){this.e.Qb();JD(Lub(this.a),18).dc()&&this.c.Qb();--this.d.d};var uE=zeb(xte,'AbstractMapBasedMultimap/Itr',736);mdb(1098,736,Ate,Dd);_.sc=function Ed(a,b){return b};var nE=zeb(xte,'AbstractMapBasedMultimap/1',1098);mdb(1099,1,{},Fd);_.Kb=function Gd(a){return JD(a,18).Lc()};var oE=zeb(xte,'AbstractMapBasedMultimap/1methodref$spliterator$Type',1099);mdb(1100,736,Ate,Hd);_.sc=function Id(a,b){return new ap(a,b)};var pE=zeb(xte,'AbstractMapBasedMultimap/2',1100);var MK=Beb(Bte,'Map');mdb(2027,1,Cte);_.wc=function Td(a){Gub(this,a)};_.$b=function Od(){this.vc().$b()};_.tc=function Pd(a){return Jd(this,a)};_._b=function Qd(a){return !!Kd(this,a,false)};_.uc=function Rd(a){var b,c,d;for(c=this.vc().Jc();c.Ob();){b=JD(c.Pb(),45);d=b.kd();if(XD(a)===XD(d)||a!=null&&pb(a,d)){return true}}return false};_.Fb=function Sd(a){var b,c,d;if(a===this){return true}if(!RD(a,92)){return false}d=JD(a,92);if(this.gc()!=d.gc()){return false}for(c=d.vc().Jc();c.Ob();){b=JD(c.Pb(),45);if(!this.tc(b)){return false}}return true};_.xc=function Ud(a){return Wd(Kd(this,a,false))};_.Hb=function Xd(){return Inb(this.vc())};_.dc=function Yd(){return this.gc()==0};_.ec=function Zd(){return new ckb(this)};_.yc=function $d(a,b){throw Icb(new rhb('Put not supported on this map'))};_.zc=function _d(a){Ld(this,a)};_.Ac=function ae(a){return Wd(Kd(this,a,true))};_.gc=function be(){return this.vc().gc()};_.Ib=function ce(){return Md(this)};_.Bc=function de(){return new nkb(this)};var BJ=zeb(Bte,'AbstractMap',2027);mdb(2047,2027,Cte);_.bc=function fe(){return new pf(this)};_.vc=function ge(){return ee(this)};_.ec=function he(){var a;a=this.g;return !a?(this.g=this.bc()):a};_.Bc=function ie(){var a;a=this.i;return !a?(this.i=new ew(this)):a};var mH=zeb(xte,'Maps/ViewCachingAbstractMap',2047);mdb(395,2047,Cte,me);_.xc=function re(a){return je(this,a)};_.Ac=function ue(a){return ke(this,a)};_.$b=function ne(){this.d==this.e.c?this.e.$b():rr(new kf(this))};_._b=function oe(a){return Nv(this.d,a)};_.Dc=function pe(){return new bf(this)};_.Cc=function(){return this.Dc()};_.Fb=function qe(a){return this===a||pb(this.d,a)};_.Hb=function se(){return tb(this.d)};_.ec=function te(){return this.e.ec()};_.gc=function ve(){return this.d.gc()};_.Ib=function we(){return qdb(this.d)};var tE=zeb(xte,'AbstractMapBasedMultimap/AsMap',395);var VI=Beb(mte,'Iterable');mdb(31,1,Dte);_.Ic=function Ke(a){Efb(this,a)};_.Lc=function Ne(){return new Wvb(this,0)};_.Mc=function Oe(){return new gCb(null,this.Lc())};_.Ec=function Fe(a){throw Icb(new rhb('Add not supported on this collection'))};_.Fc=function Ge(a){return xe(this,a)};_.$b=function He(){ze(this)};_.Gc=function Ie(a){return ye(this,a,false)};_.Hc=function Je(a){return Ae(this,a)};_.dc=function Le(){return this.gc()==0};_.Kc=function Me(a){return ye(this,a,true)};_.Nc=function Pe(){return Ce(this)};_.Oc=function Qe(a){return De(this,a)};_.Ib=function Re(){return Ee(this)};var mJ=zeb(Bte,'AbstractCollection',31);var UK=Beb(Bte,'Set');mdb(Ete,31,Fte);_.Lc=function We(){return new Wvb(this,1)};_.Fb=function Ue(a){return Se(this,a)};_.Hb=function Ve(){return Inb(this)};var IJ=zeb(Bte,'AbstractSet',Ete);mdb(2030,Ete,Fte);var LH=zeb(xte,'Sets/ImprovedAbstractSet',2030);mdb(2031,2030,Fte);_.$b=function Ye(){this.Pc().$b()};_.Gc=function Ze(a){return Xe(this,a)};_.dc=function $e(){return this.Pc().dc()};_.Kc=function _e(a){var b;if(this.Gc(a)&&RD(a,45)){b=JD(a,45);return this.Pc().ec().Kc(b.jd())}return false};_.gc=function af(){return this.Pc().gc()};var fH=zeb(xte,'Maps/EntrySet',2031);mdb(1096,2031,Fte,bf);_.Gc=function cf(a){return Lk(this.a.d.vc(),a)};_.Jc=function df(){return new kf(this.a)};_.Pc=function ef(){return this.a};_.Kc=function ff(a){var b;if(!Lk(this.a.d.vc(),a)){return false}b=JD(Lub(JD(a,45)),45);Tc(this.a.e,b.jd());return true};_.Lc=function gf(){return ek(this.a.d.vc().Lc(),new hf(this.a))};var rE=zeb(xte,'AbstractMapBasedMultimap/AsMap/AsMapEntries',1096);mdb(1097,1,{},hf);_.Kb=function jf(a){return le(this.a,JD(a,45))};var qE=zeb(xte,'AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type',1097);mdb(734,1,Ate,kf);_.Nb=function lf(a){ctb(this,a)};_.Pb=function nf(){var a;return a=JD(this.b.Pb(),45),this.a=JD(a.kd(),18),le(this.c,a)};_.Ob=function mf(){return this.b.Ob()};_.Qb=function of(){Vb(!!this.a);this.b.Qb();this.c.e.d-=this.a.gc();this.a.$b();this.a=null};var sE=zeb(xte,'AbstractMapBasedMultimap/AsMap/AsMapIterator',734);mdb(530,2030,Fte,pf);_.$b=function qf(){this.b.$b()};_.Gc=function rf(a){return this.b._b(a)};_.Ic=function sf(a){Qb(a);this.b.wc(new cw(a))};_.dc=function tf(){return this.b.dc()};_.Jc=function uf(){return new Tv(this.b.vc().Jc())};_.Kc=function vf(a){if(this.b._b(a)){this.b.Ac(a);return true}return false};_.gc=function wf(){return this.b.gc()};var jH=zeb(xte,'Maps/KeySet',530);mdb(332,530,Fte,xf);_.$b=function yf(){var a;rr((a=this.b.vc().Jc(),new Ff(this,a)))};_.Hc=function zf(a){return this.b.ec().Hc(a)};_.Fb=function Af(a){return this===a||pb(this.b.ec(),a)};_.Hb=function Bf(){return tb(this.b.ec())};_.Jc=function Cf(){var a;return a=this.b.vc().Jc(),new Ff(this,a)};_.Kc=function Df(a){var b,c;c=0;b=JD(this.b.Ac(a),18);if(b){c=b.gc();b.$b();this.a.d-=c}return c>0};_.Lc=function Ef(){return this.b.ec().Lc()};var wE=zeb(xte,'AbstractMapBasedMultimap/KeySet',332);mdb(735,1,Ate,Ff);_.Nb=function Gf(a){ctb(this,a)};_.Ob=function Hf(){return this.c.Ob()};_.Pb=function If(){this.a=JD(this.c.Pb(),45);return this.a.jd()};_.Qb=function Jf(){var a;Vb(!!this.a);a=JD(this.a.kd(),18);this.c.Qb();this.b.a.d-=a.gc();a.$b();this.a=null};var vE=zeb(xte,'AbstractMapBasedMultimap/KeySet/1',735);mdb(489,395,{92:1,134:1},Kf);_.bc=function Lf(){return this.Qc()};_.ec=function Of(){return this.Sc()};_.Qc=function Mf(){return new cg(this.c,this.Uc())};_.Rc=function Nf(){return this.Uc().Rc()};_.Sc=function Pf(){var a;return a=this.b,!a?(this.b=this.Qc()):a};_.Tc=function Qf(){return this.Uc().Tc()};_.Uc=function Rf(){return JD(this.d,134)};var AE=zeb(xte,'AbstractMapBasedMultimap/SortedAsMap',489);mdb(437,489,Gte,Sf);_.bc=function Uf(){return new eg(this.a,JD(JD(this.d,134),138))};_.Qc=function Vf(){return new eg(this.a,JD(JD(this.d,134),138))};_.ec=function Zf(){var a;return a=this.b,JD(!a?(this.b=new eg(this.a,JD(JD(this.d,134),138))):a,277)};_.Sc=function $f(){var a;return a=this.b,JD(!a?(this.b=new eg(this.a,JD(JD(this.d,134),138))):a,277)};_.Uc=function ag(){return JD(JD(this.d,134),138)};_.Vc=function Tf(a){return JD(JD(this.d,134),138).Vc(a)};_.Wc=function Wf(a){return JD(JD(this.d,134),138).Wc(a)};_.Xc=function Xf(a,b){return new Sf(this.a,JD(JD(this.d,134),138).Xc(a,b))};_.Yc=function Yf(a){return JD(JD(this.d,134),138).Yc(a)};_.Zc=function _f(a){return JD(JD(this.d,134),138).Zc(a)};_.$c=function bg(a,b){return new Sf(this.a,JD(JD(this.d,134),138).$c(a,b))};var xE=zeb(xte,'AbstractMapBasedMultimap/NavigableAsMap',437);mdb(488,332,Hte,cg);_.Lc=function dg(){return this.b.ec().Lc()};var BE=zeb(xte,'AbstractMapBasedMultimap/SortedKeySet',488);mdb(394,488,Ite,eg);var yE=zeb(xte,'AbstractMapBasedMultimap/NavigableKeySet',394);mdb(539,31,Dte,jg);_.Ec=function kg(a){var b,c;gg(this);c=this.d.dc();b=this.d.Ec(a);if(b){++this.f.d;c&&fg(this)}return b};_.Fc=function lg(a){var b,c,d;if(a.dc()){return false}d=(gg(this),this.d.gc());b=this.d.Fc(a);if(b){c=this.d.gc();this.f.d+=c-d;d==0&&fg(this)}return b};_.$b=function mg(){var a;a=(gg(this),this.d.gc());if(a==0){return}this.d.$b();this.f.d-=a;hg(this)};_.Gc=function ng(a){gg(this);return this.d.Gc(a)};_.Hc=function og(a){gg(this);return this.d.Hc(a)};_.Fb=function pg(a){if(a===this){return true}gg(this);return pb(this.d,a)};_.Hb=function qg(){gg(this);return tb(this.d)};_.Jc=function rg(){gg(this);return new Mg(this)};_.Kc=function sg(a){var b;gg(this);b=this.d.Kc(a);if(b){--this.f.d;hg(this)}return b};_.gc=function tg(){return ig(this)};_.Lc=function ug(){return gg(this),this.d.Lc()};_.Ib=function vg(){gg(this);return qdb(this.d)};var DE=zeb(xte,'AbstractMapBasedMultimap/WrappedCollection',539);var HK=Beb(Bte,'List');mdb(732,539,{20:1,31:1,18:1,16:1},wg);_.gd=function Fg(a){yub(this,a)};_.Lc=function Gg(){return gg(this),this.d.Lc()};_._c=function xg(a,b){var c;gg(this);c=this.d.dc();JD(this.d,16)._c(a,b);++this.a.d;c&&fg(this)};_.ad=function yg(a,b){var c,d,e;if(b.dc()){return false}e=(gg(this),this.d.gc());c=JD(this.d,16).ad(a,b);if(c){d=this.d.gc();this.a.d+=d-e;e==0&&fg(this)}return c};_.Xb=function zg(a){gg(this);return JD(this.d,16).Xb(a)};_.bd=function Ag(a){gg(this);return JD(this.d,16).bd(a)};_.cd=function Bg(){gg(this);return new Sg(this)};_.dd=function Cg(a){gg(this);return new Tg(this,a)};_.ed=function Dg(a){var b;gg(this);b=JD(this.d,16).ed(a);--this.a.d;hg(this);return b};_.fd=function Eg(a,b){gg(this);return JD(this.d,16).fd(a,b)};_.hd=function Hg(a,b){gg(this);return Vc(this.a,this.e,JD(this.d,16).hd(a,b),!this.b?this:this.b)};var FE=zeb(xte,'AbstractMapBasedMultimap/WrappedList',732);mdb(1095,732,{20:1,31:1,18:1,16:1,59:1},Ig);var zE=zeb(xte,'AbstractMapBasedMultimap/RandomAccessWrappedList',1095);mdb(619,1,Ate,Mg);_.Nb=function Og(a){ctb(this,a)};_.Ob=function Pg(){Lg(this);return this.b.Ob()};_.Pb=function Qg(){Lg(this);return this.b.Pb()};_.Qb=function Rg(){Kg(this)};var CE=zeb(xte,'AbstractMapBasedMultimap/WrappedCollection/WrappedIterator',619);mdb(733,619,Jte,Sg,Tg);_.Qb=function Zg(){Kg(this)};_.Rb=function Ug(a){var b;b=ig(this.a)==0;(Lg(this),JD(this.b,128)).Rb(a);++this.a.a.d;b&&fg(this.a)};_.Sb=function Vg(){return (Lg(this),JD(this.b,128)).Sb()};_.Tb=function Wg(){return (Lg(this),JD(this.b,128)).Tb()};_.Ub=function Xg(){return (Lg(this),JD(this.b,128)).Ub()};_.Vb=function Yg(){return (Lg(this),JD(this.b,128)).Vb()};_.Wb=function $g(a){(Lg(this),JD(this.b,128)).Wb(a)};var EE=zeb(xte,'AbstractMapBasedMultimap/WrappedList/WrappedListIterator',733);mdb(731,539,Hte,_g);_.Lc=function ah(){return gg(this),this.d.Lc()};var IE=zeb(xte,'AbstractMapBasedMultimap/WrappedSortedSet',731);mdb(1094,731,Ite,bh);var GE=zeb(xte,'AbstractMapBasedMultimap/WrappedNavigableSet',1094);mdb(1093,539,Fte,dh);_.Lc=function eh(){return gg(this),this.d.Lc()};var HE=zeb(xte,'AbstractMapBasedMultimap/WrappedSet',1093);mdb(1102,1,{},fh);_.Kb=function gh(a){return fd(JD(a,45))};var JE=zeb(xte,'AbstractMapBasedMultimap/lambda$1$Type',1102);mdb(1101,1,{},hh);_.Kb=function ih(a){return new ap(this.a,a)};var KE=zeb(xte,'AbstractMapBasedMultimap/lambda$2$Type',1101);var LK=Beb(Bte,'Map/Entry');mdb(358,1,Kte);_.Fb=function jh(a){var b;if(RD(a,45)){b=JD(a,45);return Hb(this.jd(),b.jd())&&Hb(this.kd(),b.kd())}return false};_.Hb=function kh(){var a,b;a=this.jd();b=this.kd();return (a==null?0:tb(a))^(b==null?0:tb(b))};_.ld=function lh(a){throw Icb(new qhb)};_.Ib=function mh(){return this.jd()+'='+this.kd()};var ME=zeb(xte,Lte,358);mdb(Mte,31,Dte);_.$b=function nh(){this.md().$b()};_.Gc=function oh(a){var b;if(RD(a,45)){b=JD(a,45);return Cc(this.md(),b.jd(),b.kd())}return false};_.Kc=function ph(a){var b;if(RD(a,45)){b=JD(a,45);return Gc(this.md(),b.jd(),b.kd())}return false};_.gc=function qh(){return this.md().d};var qH=zeb(xte,'Multimaps/Entries',Mte);mdb(737,Mte,Dte,rh);_.Jc=function sh(){return this.a.kc()};_.md=function th(){return this.a};_.Lc=function uh(){return this.a.lc()};var NE=zeb(xte,'AbstractMultimap/Entries',737);mdb(738,737,Fte,vh);_.Lc=function yh(){return this.a.lc()};_.Fb=function wh(a){return Nx(this,a)};_.Hb=function xh(){return Ox(this)};var OE=zeb(xte,'AbstractMultimap/EntrySet',738);mdb(739,31,Dte,zh);_.$b=function Ah(){this.a.$b()};_.Gc=function Bh(a){return Dc(this.a,a)};_.Jc=function Ch(){return this.a.nc()};_.gc=function Dh(){return this.a.d};_.Lc=function Eh(){return this.a.oc()};var PE=zeb(xte,'AbstractMultimap/Values',739);mdb(2049,31,{833:1,20:1,31:1,18:1});_.Ic=function Mh(a){Qb(a);Gh(this).Ic(new dx(a))};_.Lc=function Qh(){var a;return a=Gh(this).Lc(),ck(a,new kx,64|a.wd()&1296,this.a.d)};_.Ec=function Ih(a){Fh();return true};_.Fc=function Jh(a){return Qb(this),Qb(a),RD(a,540)?fx(JD(a,833)):!a.dc()&&or(this,a.Jc())};_.Gc=function Kh(a){var b;return b=JD(Ov(nd(this.a),a),18),(!b?0:b.gc())>0};_.Fb=function Lh(a){return gx(this,a)};_.Hb=function Nh(){return tb(Gh(this))};_.dc=function Oh(){return Gh(this).dc()};_.Kc=function Ph(a){return Jw(this,a,1)>0};_.Ib=function Rh(){return qdb(Gh(this))};var SE=zeb(xte,'AbstractMultiset',2049);mdb(2051,2030,Fte);_.$b=function Sh(){Nc(this.a.a)};_.Gc=function Th(a){var b,c;if(RD(a,490)){c=JD(a,416);if(JD(c.a.kd(),18).gc()<=0){return false}b=Iw(this.a,c.a.jd());return b==JD(c.a.kd(),18).gc()}return false};_.Kc=function Uh(a){var b,c,d,e;if(RD(a,490)){c=JD(a,416);b=c.a.jd();d=JD(c.a.kd(),18).gc();if(d!=0){e=this.a;return ix(e,b,d)}}return false};var AH=zeb(xte,'Multisets/EntrySet',2051);mdb(1108,2051,Fte,Vh);_.Jc=function Wh(){return new Tw(ee(nd(this.a.a)).Jc())};_.gc=function Xh(){return nd(this.a.a).gc()};var RE=zeb(xte,'AbstractMultiset/EntrySet',1108);mdb(618,730,zte);_.hc=function $h(){return this.nd()};_.jc=function _h(){return this.od()};_.cc=function ci(a){return this.pd(a)};_.fc=function ei(a){return this.qd(a)};_.Zb=function Zh(){var a;return a=this.f,!a?(this.f=this.ac()):a};_.od=function ai(){return Fnb(),Fnb(),Enb};_.Fb=function bi(a){return ow(this,a)};_.pd=function di(a){return JD(Qc(this,a),22)};_.qd=function fi(a){return JD(Sc(this,a),22)};_.mc=function gi(a){return Fnb(),new Qpb(JD(a,22))};_.pc=function hi(a,b){return new dh(this,a,JD(b,22))};var TE=zeb(xte,'AbstractSetMultimap',618);mdb(1689,618,zte);_.hc=function ki(){return new Dzb(this.b)};_.nd=function li(){return new Dzb(this.b)};_.jc=function mi(){return Vx(new Dzb(this.b))};_.od=function ni(){return Vx(new Dzb(this.b))};_.cc=function oi(a){return JD(JD(Qc(this,a),22),83)};_.pd=function pi(a){return JD(JD(Qc(this,a),22),83)};_.fc=function qi(a){return JD(JD(Sc(this,a),22),83)};_.qd=function ri(a){return JD(JD(Sc(this,a),22),83)};_.mc=function si(a){return RD(a,277)?Vx(JD(a,277)):(Fnb(),new oqb(JD(a,83)))};_.Zb=function ji(){var a;return a=this.f,!a?(this.f=RD(this.c,138)?new Sf(this,JD(this.c,138)):RD(this.c,134)?new Kf(this,JD(this.c,134)):new me(this,this.c)):a};_.pc=function ti(a,b){return RD(b,277)?new bh(this,a,JD(b,277)):new _g(this,a,JD(b,83))};var VE=zeb(xte,'AbstractSortedSetMultimap',1689);mdb(1690,1689,zte);_.Zb=function vi(){var a;return a=this.f,JD(JD(!a?(this.f=RD(this.c,138)?new Sf(this,JD(this.c,138)):RD(this.c,134)?new Kf(this,JD(this.c,134)):new me(this,this.c)):a,134),138)};_.ec=function xi(){var a;return a=this.i,JD(JD(!a?(this.i=RD(this.c,138)?new eg(this,JD(this.c,138)):RD(this.c,134)?new cg(this,JD(this.c,134)):new xf(this,this.c)):a,83),277)};_.bc=function wi(){return RD(this.c,138)?new eg(this,JD(this.c,138)):RD(this.c,134)?new cg(this,JD(this.c,134)):new xf(this,this.c)};var UE=zeb(xte,'AbstractSortedKeySortedSetMultimap',1690);mdb(2071,1,{2008:1});_.Fb=function yi(a){return Jy(this,a)};_.Hb=function zi(){var a;return Inb((a=this.g,!a?(this.g=new Bi(this)):a))};_.Ib=function Ai(){var a;return Md((a=this.f,!a?(this.f=new Xj(this)):a))};var YE=zeb(xte,'AbstractTable',2071);mdb(669,Ete,Fte,Bi);_.$b=function Ci(){Vi()};_.Gc=function Di(a){var b,c;if(RD(a,468)){b=JD(a,687);c=JD(Ov(_i(this.a),Nm(b.c.e,b.b)),92);return !!c&&Lk(c.vc(),new ap(Nm(b.c.c,b.a),Si(b.c,b.b,b.a)))}return false};_.Jc=function Ei(){return Ti(this.a)};_.Kc=function Fi(a){var b,c;if(RD(a,468)){b=JD(a,687);c=JD(Ov(_i(this.a),Nm(b.c.e,b.b)),92);return !!c&&Mk(c.vc(),new ap(Nm(b.c.c,b.a),Si(b.c,b.b,b.a)))}return false};_.gc=function Gi(){return bj(this.a)};_.Lc=function Hi(){return Ui(this.a)};var WE=zeb(xte,'AbstractTable/CellSet',669);mdb(1987,31,Dte,Ii);_.$b=function Ji(){Vi()};_.Gc=function Ki(a){return Wi(this.a,a)};_.Jc=function Li(){return dj(this.a)};_.gc=function Mi(){return bj(this.a)};_.Lc=function Ni(){return ej(this.a)};var XE=zeb(xte,'AbstractTable/Values',1987);mdb(1662,1661,zte);var ZE=zeb(xte,'ArrayListMultimapGwtSerializationDependencies',1662);mdb(506,1662,zte,Pi,Qi);_.hc=function Ri(){return new jmb(this.a)};_.a=0;var $E=zeb(xte,'ArrayListMultimap',506);mdb(668,2071,{668:1,2008:1,3:1},fj);var kF=zeb(xte,'ArrayTable',668);mdb(1983,392,yte,gj);_.Xb=function hj(a){return new nj(this.a,a)};var _E=zeb(xte,'ArrayTable/1',1983);mdb(1984,1,{},ij);_.rd=function jj(a){return new nj(this.a,a)};var aF=zeb(xte,'ArrayTable/1methodref$getCell$Type',1984);mdb(2072,1,{687:1});_.Fb=function kj(a){var b;if(a===this){return true}if(RD(a,468)){b=JD(a,687);return Hb(Nm(this.c.e,this.b),Nm(b.c.e,b.b))&&Hb(Nm(this.c.c,this.a),Nm(b.c.c,b.a))&&Hb(Si(this.c,this.b,this.a),Si(b.c,b.b,b.a))}return false};_.Hb=function lj(){return $mb(WC(OC(aJ,1),rte,1,5,[Nm(this.c.e,this.b),Nm(this.c.c,this.a),Si(this.c,this.b,this.a)]))};_.Ib=function mj(){return '('+Nm(this.c.e,this.b)+','+Nm(this.c.c,this.a)+')='+Si(this.c,this.b,this.a)};var TH=zeb(xte,'Tables/AbstractCell',2072);mdb(468,2072,{468:1,687:1},nj);_.a=0;_.b=0;_.d=0;var bF=zeb(xte,'ArrayTable/2',468);mdb(1986,1,{},oj);_.rd=function pj(a){return Zi(this.a,a)};var cF=zeb(xte,'ArrayTable/2methodref$getValue$Type',1986);mdb(1985,392,yte,qj);_.Xb=function rj(a){return Zi(this.a,a)};var dF=zeb(xte,'ArrayTable/3',1985);mdb(2039,2027,Cte);_.$b=function tj(){rr(this.kc())};_.vc=function uj(){return new Zv(this)};_.lc=function vj(){return new Yvb(this.kc(),this.gc())};var hH=zeb(xte,'Maps/IteratorBasedAbstractMap',2039);mdb(826,2039,Cte);_.$b=function zj(){throw Icb(new qhb)};_._b=function Aj(a){return yn(this.c,a)};_.kc=function Bj(){return new Pj(this,this.c.b.c.gc())};_.lc=function Cj(){return dk(this.c.b.c.gc(),16,new Jj(this))};_.xc=function Dj(a){var b;b=JD(zn(this.c,a),15);return !b?null:this.td(b.a)};_.dc=function Ej(){return this.c.b.c.dc()};_.ec=function Fj(){return cn(this.c)};_.yc=function Gj(a,b){var c;c=JD(zn(this.c,a),15);if(!c){throw Icb(new hfb(this.sd()+' '+a+' not in '+cn(this.c)))}return this.ud(c.a,b)};_.Ac=function Hj(a){throw Icb(new qhb)};_.gc=function Ij(){return this.c.b.c.gc()};var hF=zeb(xte,'ArrayTable/ArrayMap',826);mdb(1982,1,{},Jj);_.rd=function Kj(a){return wj(this.a,a)};var eF=zeb(xte,'ArrayTable/ArrayMap/0methodref$getEntry$Type',1982);mdb(1980,358,Kte,Lj);_.jd=function Mj(){return xj(this.a,this.b)};_.kd=function Nj(){return this.a.td(this.b)};_.ld=function Oj(a){return this.a.ud(this.b,a)};_.b=0;var fF=zeb(xte,'ArrayTable/ArrayMap/1',1980);mdb(1981,392,yte,Pj);_.Xb=function Qj(a){return wj(this.a,a)};var gF=zeb(xte,'ArrayTable/ArrayMap/2',1981);mdb(1979,826,Cte,Rj);_.sd=function Sj(){return 'Column'};_.td=function Tj(a){return Si(this.b,this.a,a)};_.ud=function Uj(a,b){return aj(this.b,this.a,a,b)};_.a=0;var jF=zeb(xte,'ArrayTable/Row',1979);mdb(827,826,Cte,Xj);_.td=function Zj(a){return new Rj(this.a,a)};_.yc=function $j(a,b){return JD(b,92),Vj()};_.ud=function _j(a,b){return JD(b,92),Wj()};_.sd=function Yj(){return 'Row'};var iF=zeb(xte,'ArrayTable/RowMap',827);mdb(1126,1,Qte,fk);_.yd=function jk(a){return (this.a.wd()&-262&a)!=0};_.wd=function gk(){return this.a.wd()&-262};_.xd=function hk(){return this.a.xd()};_.Nb=function ik(a){this.a.Nb(new nk(a,this.b))};_.zd=function kk(a){return this.a.zd(new lk(a,this.b))};var qF=zeb(xte,'CollectSpliterators/1',1126);mdb(1127,1,Rte,lk);_.Ad=function mk(a){this.a.Ad(this.b.Kb(a))};var lF=zeb(xte,'CollectSpliterators/1/lambda$0$Type',1127);mdb(1128,1,Rte,nk);_.Ad=function ok(a){this.a.Ad(this.b.Kb(a))};var mF=zeb(xte,'CollectSpliterators/1/lambda$1$Type',1128);mdb(1123,1,Qte,pk);_.yd=function tk(a){return ((16464|this.b)&a)!=0};_.wd=function qk(){return 16464|this.b};_.xd=function rk(){return this.a.xd()};_.Nb=function sk(a){this.a.Oe(new xk(a,this.c))};_.zd=function uk(a){return this.a.Pe(new vk(a,this.c))};_.b=0;var pF=zeb(xte,'CollectSpliterators/1WithCharacteristics',1123);mdb(1124,1,Ste,vk);_.Bd=function wk(a){this.a.Ad(this.b.rd(a))};var nF=zeb(xte,'CollectSpliterators/1WithCharacteristics/lambda$0$Type',1124);mdb(1125,1,Ste,xk);_.Bd=function yk(a){this.a.Ad(this.b.rd(a))};var oF=zeb(xte,'CollectSpliterators/1WithCharacteristics/lambda$1$Type',1125);mdb(1119,1,Qte);_.yd=function Ek(a){return (this.a&a)!=0};_.wd=function Bk(){return this.a};_.xd=function Ck(){!!this.e&&(this.b=Rfb(this.b,this.e.xd()));return Rfb(this.b,0)};_.Nb=function Dk(a){if(this.e){this.e.Nb(a);this.e=null}this.c.Nb(new Ik(this,a));this.b=0};_.zd=function Fk(a){while(true){if(!!this.e&&this.e.zd(a)){Xcb(this.b,Tte)&&(this.b=adb(this.b,1));return true}else{this.e=null}if(!this.c.zd(new Gk(this))){return false}}};_.a=0;_.b=0;var uF=zeb(xte,'CollectSpliterators/FlatMapSpliterator',1119);mdb(1121,1,Rte,Gk);_.Ad=function Hk(a){zk(this.a,a)};var rF=zeb(xte,'CollectSpliterators/FlatMapSpliterator/lambda$0$Type',1121);mdb(1122,1,Rte,Ik);_.Ad=function Jk(a){Ak(this.a,this.b,a)};var sF=zeb(xte,'CollectSpliterators/FlatMapSpliterator/lambda$1$Type',1122);mdb(1120,1119,Qte,Kk);var tF=zeb(xte,'CollectSpliterators/FlatMapSpliteratorOfObject',1120);mdb(254,1,Ute);_.Dd=function Qk(a){return this.Cd(JD(a,254))};_.Cd=function Pk(a){var b;if(a==(il(),hl)){return 1}if(a==(Uk(),Tk)){return -1}b=(mx(),Sdb(this.a,a.a));if(b!=0){return b}return Ndb(),RD(this,513)==RD(a,513)?0:RD(this,513)?1:-1};_.Gd=function Rk(){return this.a};_.Fb=function Sk(a){return Nk(this,a)};var zF=zeb(xte,'Cut',254);mdb(1793,254,Ute,Vk);_.Cd=function Wk(a){return a==this?0:1};_.Ed=function Xk(a){throw Icb(new Jdb)};_.Fd=function Yk(a){a.a+='+\u221E)'};_.Gd=function Zk(){throw Icb(new kfb(Vte))};_.Hb=function $k(){return nhb(),zDb(this)};_.Hd=function _k(a){return false};_.Ib=function al(){return '+\u221E'};var Tk;var vF=zeb(xte,'Cut/AboveAll',1793);mdb(513,254,{254:1,513:1,3:1,35:1},bl);_.Ed=function cl(a){dhb((a.a+='(',a),this.a)};_.Fd=function dl(a){$gb(dhb(a,this.a),93)};_.Hb=function el(){return ~tb(this.a)};_.Hd=function fl(a){return mx(),Sdb(this.a,a)<0};_.Ib=function gl(){return '/'+this.a+'\\'};var wF=zeb(xte,'Cut/AboveValue',513);mdb(1792,254,Ute,jl);_.Cd=function kl(a){return a==this?0:-1};_.Ed=function ll(a){a.a+='(-\u221E'};_.Fd=function ml(a){throw Icb(new Jdb)};_.Gd=function nl(){throw Icb(new kfb(Vte))};_.Hb=function ol(){return nhb(),zDb(this)};_.Hd=function pl(a){return true};_.Ib=function ql(){return '-\u221E'};var hl;var xF=zeb(xte,'Cut/BelowAll',1792);mdb(1794,254,Ute,rl);_.Ed=function sl(a){dhb((a.a+='[',a),this.a)};_.Fd=function tl(a){$gb(dhb(a,this.a),41)};_.Hb=function ul(){return tb(this.a)};_.Hd=function vl(a){return mx(),Sdb(this.a,a)<=0};_.Ib=function wl(){return '\\'+this.a+'/'};var yF=zeb(xte,'Cut/BelowValue',1794);mdb(535,1,Wte);_.Ic=function zl(a){Efb(this,a)};_.Ib=function Al(){return Cr(JD(Rb(this,'use Optional.orNull() instead of Optional.or(null)'),20).Jc())};var EF=zeb(xte,'FluentIterable',535);mdb(433,535,Wte,Bl);_.Jc=function Cl(){return new Yr(Dr(this.a.Jc(),new Dl))};var BF=zeb(xte,'FluentIterable/2',433);mdb(36,1,{},Dl);_.Kb=function El(a){return JD(a,20).Jc()};_.Fb=function Fl(a){return this===a};var AF=zeb(xte,'FluentIterable/2/0methodref$iterator$Type',36);mdb(1040,535,Wte,Hl);_.Jc=function Il(){return Gl(this)};var DF=zeb(xte,'FluentIterable/3',1040);mdb(714,392,yte,Jl);_.Xb=function Kl(a){return this.a[a].Jc()};var CF=zeb(xte,'FluentIterable/3/1',714);mdb(2032,1,{});_.Ib=function Ll(){return qdb(this.Id().b)};var LF=zeb(xte,'ForwardingObject',2032);mdb(2033,2032,Xte);_.Id=function Rl(){return this.Jd()};_.Ic=function Sl(a){Efb(this,a)};_.Lc=function Xl(){return new Wvb(this,0)};_.Mc=function Yl(){return new gCb(null,this.Lc())};_.Ec=function Ml(a){return this.Jd(),xob()};_.Fc=function Nl(a){return this.Jd(),yob()};_.$b=function Ol(){this.Jd(),zob()};_.Gc=function Pl(a){return this.Jd().Gc(a)};_.Hc=function Ql(a){return this.Jd().Hc(a)};_.dc=function Tl(){return this.Jd().b.dc()};_.Jc=function Ul(){return this.Jd().Jc()};_.Kc=function Vl(a){return this.Jd(),Cob()};_.gc=function Wl(){return this.Jd().b.gc()};_.Nc=function Zl(){return this.Jd().Nc()};_.Oc=function $l(a){return this.Jd().Oc(a)};var FF=zeb(xte,'ForwardingCollection',2033);mdb(2040,31,Yte);_.Jc=function fm(){return this.Md()};_.Ec=function _l(a){throw Icb(new qhb)};_.Fc=function am(a){throw Icb(new qhb)};_.Kd=function bm(){var a;a=this.c;return !a?(this.c=this.Ld()):a};_.$b=function cm(){throw Icb(new qhb)};_.Gc=function dm(a){return a!=null&&ye(this,a,false)};_.Ld=function em(){switch(this.gc()){case 0:return Dx(),Cx;case 1:return new vy(Qb(this.Md().Pb()));default:return new xx(this,this.Nc());}};_.Kc=function gm(a){throw Icb(new qhb)};var eG=zeb(xte,'ImmutableCollection',2040);mdb(1259,2040,Yte,hm);_.Jc=function mm(){return Er(new Vob(this.a.b.Jc()))};_.Gc=function im(a){return a!=null&&Aob(this.a,a)};_.Hc=function jm(a){return Bob(this.a,a)};_.dc=function km(){return this.a.b.dc()};_.Md=function lm(){return Er(new Vob(this.a.b.Jc()))};_.gc=function nm(){return this.a.b.gc()};_.Nc=function om(){return this.a.b.Nc()};_.Oc=function pm(a){return Dob(this.a,a)};_.Ib=function qm(){return qdb(this.a.b)};var GF=zeb(xte,'ForwardingImmutableCollection',1259);mdb(311,2040,Zte);_.Jc=function Bm(){return this.Md()};_.cd=function Cm(){return this.Nd(0)};_.dd=function Em(a){return this.Nd(a)};_.gd=function Im(a){yub(this,a)};_.Lc=function Jm(){return new Wvb(this,16)};_.hd=function Lm(a,b){return this.Od(a,b)};_._c=function tm(a,b){throw Icb(new qhb)};_.ad=function um(a,b){throw Icb(new qhb)};_.Kd=function vm(){return this};_.Fb=function xm(a){return Ru(this,a)};_.Hb=function ym(){return Su(this)};_.bd=function zm(a){return a==null?-1:Tu(this,a)};_.Md=function Am(){return this.Nd(0)};_.Nd=function Dm(a){return rm(this,a)};_.ed=function Gm(a){throw Icb(new qhb)};_.fd=function Hm(a,b){throw Icb(new qhb)};_.Od=function Km(a,b){var c;return Mm((c=new gv(this),new Yjb(c,a,b)))};var jG=zeb(xte,'ImmutableList',311);mdb(2067,311,Zte);_.Jc=function Wm(){return Er(this.Pd().Jc())};_.hd=function Zm(a,b){return Mm(this.Pd().hd(a,b))};_.Gc=function Om(a){return a!=null&&this.Pd().Gc(a)};_.Hc=function Pm(a){return this.Pd().Hc(a)};_.Fb=function Qm(a){return pb(this.Pd(),a)};_.Xb=function Rm(a){return Nm(this,a)};_.Hb=function Sm(){return tb(this.Pd())};_.bd=function Tm(a){return this.Pd().bd(a)};_.dc=function Um(){return this.Pd().dc()};_.Md=function Vm(){return Er(this.Pd().Jc())};_.gc=function Xm(){return this.Pd().gc()};_.Od=function Ym(a,b){return Mm(this.Pd().hd(a,b))};_.Nc=function $m(){return this.Pd().Oc(SC(aJ,rte,1,this.Pd().gc(),5,1))};_.Oc=function _m(a){return this.Pd().Oc(a)};_.Ib=function an(){return qdb(this.Pd())};var HF=zeb(xte,'ForwardingImmutableList',2067);mdb(717,1,_te);_.vc=function kn(){return bn(this)};_.wc=function mn(a){Gub(this,a)};_.ec=function qn(){return cn(this)};_.Bc=function xn(){return this.Td()};_.$b=function en(){throw Icb(new qhb)};_._b=function fn(a){return this.xc(a)!=null};_.uc=function gn(a){return this.Td().Gc(a)};_.Rd=function hn(){return new rq(this)};_.Sd=function jn(){return new Aq(this)};_.Fb=function ln(a){return Kv(this,a)};_.Hb=function on(){return bn(this).Hb()};_.dc=function pn(){return this.gc()==0};_.yc=function tn(a,b){return dn()};_.Ac=function un(a){throw Icb(new qhb)};_.Ib=function vn(){return Qv(this)};_.Td=function wn(){if(this.e){return this.e}return this.e=this.Sd()};_.c=null;_.d=null;_.e=null;var tG=zeb(xte,'ImmutableMap',717);mdb(718,717,_te);_._b=function Bn(a){return yn(this,a)};_.uc=function Cn(a){return vpb(this.b,a)};_.Qd=function Dn(){return _n(new Rn(this))};_.Rd=function En(){return _n(ypb(this.b))};_.Sd=function Fn(){return new hm(zpb(this.b))};_.Fb=function Gn(a){return xpb(this.b,a)};_.xc=function Hn(a){return zn(this,a)};_.Hb=function In(){return tb(this.b.c)};_.dc=function Jn(){return this.b.c.dc()};_.gc=function Kn(){return this.b.c.gc()};_.Ib=function Ln(){return qdb(this.b.c)};var JF=zeb(xte,'ForwardingImmutableMap',718);mdb(2034,2033,aue);_.Id=function Mn(){return this.Ud()};_.Jd=function Nn(){return this.Ud()};_.Lc=function Qn(){return new Wvb(this,1)};_.Fb=function On(a){return a===this||this.Ud().Fb(a)};_.Hb=function Pn(){return this.Ud().Hb()};var MF=zeb(xte,'ForwardingSet',2034);mdb(1055,2034,aue,Rn);_.Id=function Tn(){return wpb(this.a.b)};_.Jd=function Un(){return wpb(this.a.b)};_.Gc=function Sn(b){if(RD(b,45)&&JD(b,45).jd()==null){return false}try{return Upb(wpb(this.a.b),b)}catch(a){a=Hcb(a);if(RD(a,211)){return false}else throw Icb(a)}};_.Ud=function Vn(){return wpb(this.a.b)};_.Oc=function Wn(a){var b,c;b=Vpb(wpb(this.a.b),a);if(wpb(this.a.b).b.gc()=0?'+':'')+(c/60|0);b=sB($wnd.Math.abs(c)%60);return (Rqb(),Pqb)[this.q.getDay()]+' '+Qqb[this.q.getMonth()]+' '+sB(this.q.getDate())+' '+sB(this.q.getHours())+':'+sB(this.q.getMinutes())+':'+sB(this.q.getSeconds())+' GMT'+a+b+' '+this.q.getFullYear()};var hK=zeb(Bte,'Date',205);mdb(1977,205,bve,vB);_.a=false;_.b=0;_.c=0;_.d=0;_.e=0;_.f=0;_.g=false;_.i=0;_.j=0;_.k=0;_.n=0;_.o=0;_.p=0;var oI=zeb('com.google.gwt.i18n.shared.impl','DateRecord',1977);mdb(2026,1,{});_.ne=function wB(){return null};_.oe=function xB(){return null};_.pe=function yB(){return null};_.qe=function zB(){return null};_.re=function AB(){return null};var xI=zeb(cve,'JSONValue',2026);mdb(139,2026,{139:1},EB,FB);_.Fb=function GB(a){if(!RD(a,139)){return false}return zz(this.a,JD(a,139).a)};_.me=function HB(){return LB};_.Hb=function IB(){return Az(this.a)};_.ne=function JB(){return this};_.Ib=function KB(){var a,b,c;c=new khb('[');for(b=0,a=this.a.length;b0&&(c.a+=',',c);dhb(c,BB(this,b))}c.a+=']';return c.a};var pI=zeb(cve,'JSONArray',139);mdb(479,2026,{479:1},PB);_.me=function QB(){return TB};_.oe=function RB(){return this};_.Ib=function SB(){return Ndb(),''+this.a};_.a=false;var MB,NB;var qI=zeb(cve,'JSONBoolean',479);mdb(981,63,tue,UB);var rI=zeb(cve,'JSONException',981);mdb(1017,2026,{},XB);_.me=function YB(){return $B};_.Ib=function ZB(){return vte};var VB;var sI=zeb(cve,'JSONNull',1017);mdb(265,2026,{265:1},_B);_.Fb=function aC(a){if(!RD(a,265)){return false}return this.a==JD(a,265).a};_.me=function bC(){return fC};_.Hb=function cC(){return Ueb(this.a)};_.pe=function dC(){return this};_.Ib=function eC(){return this.a+''};_.a=0;var tI=zeb(cve,'JSONNumber',265);mdb(149,2026,{149:1},mC,nC);_.Fb=function oC(a){if(!RD(a,149)){return false}return zz(this.a,JD(a,149).a)};_.me=function pC(){return tC};_.Hb=function qC(){return Az(this.a)};_.qe=function rC(){return this};_.Ib=function sC(){var a,b,c,d,e,f,g;g=new khb('{');a=true;f=gC(this,SC(hJ,Ote,2,0,6,1));for(c=f,d=0,e=c.length;d=0?':'+this.c:'')+')'};_.c=0;var dJ=zeb(mte,'StackTraceElement',324);HD={3:1,472:1,35:1,2:1};var hJ=zeb(mte,vue,2);mdb(111,418,{472:1},Xgb,Ygb,Zgb);var eJ=zeb(mte,'StringBuffer',111);mdb(106,418,{472:1},ihb,jhb,khb);var fJ=zeb(mte,'StringBuilder',106);mdb(691,99,lve,lhb);var gJ=zeb(mte,'StringIndexOutOfBoundsException',691);mdb(2107,1,{});var mhb;mdb(46,63,{3:1,101:1,63:1,80:1,46:1},qhb,rhb);var jJ=zeb(mte,'UnsupportedOperationException',46);mdb(247,242,{3:1,35:1,242:1,247:1},Hhb,Ihb);_.Dd=function Lhb(a){return Bhb(this,JD(a,247))};_.se=function Mhb(){return Udb(Ghb(this))};_.Fb=function Nhb(a){var b;if(this===a){return true}if(RD(a,247)){b=JD(a,247);return this.e==b.e&&Bhb(this,b)==0}return false};_.Hb=function Ohb(){var a;if(this.b!=0){return this.b}if(this.a<54){a=Pcb(this.f);this.b=ddb(Kcb(a,-1));this.b=33*this.b+ddb(Kcb($cb(a,32),-1));this.b=17*this.b+YD(this.e);return this.b}this.b=17*aib(this.c)+YD(this.e);return this.b};_.Ib=function Phb(){return Ghb(this)};_.a=0;_.b=0;_.d=0;_.e=0;_.f=0;var shb,thb,uhb,vhb,whb,xhb,yhb,zhb;var kJ=zeb('java.math','BigDecimal',247);mdb(91,242,{3:1,35:1,242:1,91:1},hib,iib,jib,kib,lib);_.Dd=function nib(a){return Xhb(this,JD(a,91))};_.se=function oib(){return Udb(Hib(this,0))};_.Fb=function pib(a){return Zhb(this,a)};_.Hb=function sib(){return aib(this)};_.Ib=function uib(){return Hib(this,0)};_.b=-2;_.c=0;_.d=0;_.e=0;var Qhb,Rhb,Shb,Thb,Uhb,Vhb;var lJ=zeb('java.math','BigInteger',91);var Cib,Dib;var Qib,Rib;mdb(484,2027,Cte);_.$b=function kjb(){hjb(this)};_._b=function ljb(a){return _ib(this,a)};_.uc=function mjb(a){return ajb(this,a,this.i)||ajb(this,a,this.f)};_.vc=function njb(){return new tjb(this)};_.xc=function ojb(a){return bjb(this,a)};_.yc=function pjb(a,b){return ejb(this,a,b)};_.Ac=function qjb(a){return gjb(this,a)};_.gc=function rjb(){return ijb(this)};_.g=0;var pJ=zeb(Bte,'AbstractHashMap',484);mdb(306,Ete,Fte,tjb);_.$b=function ujb(){this.a.$b()};_.Gc=function vjb(a){return sjb(this,a)};_.Jc=function wjb(){return new Cjb(this.a)};_.Kc=function xjb(a){var b;if(sjb(this,a)){b=JD(a,45).jd();this.a.Ac(b);return true}return false};_.gc=function yjb(){return this.a.gc()};var oJ=zeb(Bte,'AbstractHashMap/EntrySet',306);mdb(307,1,Ate,Cjb);_.Nb=function Djb(a){ctb(this,a)};_.Pb=function Fjb(){return Ajb(this)};_.Ob=function Ejb(){return this.b};_.Qb=function Gjb(){Bjb(this)};_.b=false;_.d=0;var nJ=zeb(Bte,'AbstractHashMap/EntrySetIterator',307);mdb(417,1,Ate,Kjb);_.Nb=function Ljb(a){ctb(this,a)};_.Ob=function Mjb(){return Hjb(this)};_.Pb=function Njb(){return Ijb(this)};_.Qb=function Ojb(){Jjb(this)};_.b=0;_.c=-1;var qJ=zeb(Bte,'AbstractList/IteratorImpl',417);mdb(97,417,Jte,Qjb);_.Qb=function Wjb(){Jjb(this)};_.Rb=function Rjb(a){Pjb(this,a)};_.Sb=function Sjb(){return this.b>0};_.Tb=function Tjb(){return this.b};_.Ub=function Ujb(){return IDb(this.b>0),this.a.Xb(this.c=--this.b)};_.Vb=function Vjb(){return this.b-1};_.Wb=function Xjb(a){ODb(this.c!=-1);this.a.fd(this.c,a)};var rJ=zeb(Bte,'AbstractList/ListIteratorImpl',97);mdb(258,56,lue,Yjb);_._c=function Zjb(a,b){MDb(a,this.b);this.c._c(this.a+a,b);++this.b};_.Xb=function $jb(a){JDb(a,this.b);return this.c.Xb(this.a+a)};_.ed=function _jb(a){var b;JDb(a,this.b);b=this.c.ed(this.a+a);--this.b;return b};_.fd=function akb(a,b){JDb(a,this.b);return this.c.fd(this.a+a,b)};_.gc=function bkb(){return this.b};_.a=0;_.b=0;var sJ=zeb(Bte,'AbstractList/SubList',258);mdb(232,Ete,Fte,ckb);_.$b=function dkb(){this.a.$b()};_.Gc=function ekb(a){return this.a._b(a)};_.Jc=function fkb(){var a;return a=this.a.vc().Jc(),new ikb(a)};_.Kc=function gkb(a){if(this.a._b(a)){this.a.Ac(a);return true}return false};_.gc=function hkb(){return this.a.gc()};var vJ=zeb(Bte,'AbstractMap/1',232);mdb(529,1,Ate,ikb);_.Nb=function jkb(a){ctb(this,a)};_.Ob=function kkb(){return this.a.Ob()};_.Pb=function lkb(){var a;return a=JD(this.a.Pb(),45),a.jd()};_.Qb=function mkb(){this.a.Qb()};var uJ=zeb(Bte,'AbstractMap/1/1',529);mdb(230,31,Dte,nkb);_.$b=function okb(){this.a.$b()};_.Gc=function pkb(a){return this.a.uc(a)};_.Jc=function qkb(){var a;return a=this.a.vc().Jc(),new skb(a)};_.gc=function rkb(){return this.a.gc()};var xJ=zeb(Bte,'AbstractMap/2',230);mdb(304,1,Ate,skb);_.Nb=function tkb(a){ctb(this,a)};_.Ob=function ukb(){return this.a.Ob()};_.Pb=function vkb(){var a;return a=JD(this.a.Pb(),45),a.kd()};_.Qb=function wkb(){this.a.Qb()};var wJ=zeb(Bte,'AbstractMap/2/1',304);mdb(480,1,{480:1,45:1});_.Fb=function ykb(a){var b;if(!RD(a,45)){return false}b=JD(a,45);return Jub(this.d,b.jd())&&Jub(this.e,b.kd())};_.jd=function zkb(){return this.d};_.kd=function Akb(){return this.e};_.Hb=function Bkb(){return Kub(this.d)^Kub(this.e)};_.ld=function Ckb(a){return xkb(this,a)};_.Ib=function Dkb(){return this.d+'='+this.e};var yJ=zeb(Bte,'AbstractMap/AbstractEntry',480);mdb(390,480,{480:1,390:1,45:1},Ekb);var zJ=zeb(Bte,'AbstractMap/SimpleEntry',390);mdb(2044,1,Ave);_.Fb=function Fkb(a){var b;if(!RD(a,45)){return false}b=JD(a,45);return Jub(this.jd(),b.jd())&&Jub(this.kd(),b.kd())};_.Hb=function Gkb(){return Kub(this.jd())^Kub(this.kd())};_.Ib=function Hkb(){return this.jd()+'='+this.kd()};var AJ=zeb(Bte,Lte,2044);mdb(2052,2027,Gte);_.Vc=function Kkb(a){return Vd(this.Ce(a))};_.tc=function Lkb(a){return Ikb(this,a)};_._b=function Mkb(a){return Jkb(this,a)};_.vc=function Nkb(){return new Wkb(this)};_.Rc=function Okb(){return Rkb(this.Ee())};_.Wc=function Pkb(a){return Vd(this.Fe(a))};_.xc=function Qkb(a){var b;b=a;return Wd(this.De(b))};_.Yc=function Skb(a){return Vd(this.Ge(a))};_.ec=function Tkb(){return new _kb(this)};_.Tc=function Ukb(){return Rkb(this.He())};_.Zc=function Vkb(a){return Vd(this.Ie(a))};var FJ=zeb(Bte,'AbstractNavigableMap',2052);mdb(620,Ete,Fte,Wkb);_.Gc=function Xkb(a){return RD(a,45)&&Ikb(this.b,JD(a,45))};_.Jc=function Ykb(){return this.b.Be()};_.Kc=function Zkb(a){var b;if(RD(a,45)){b=JD(a,45);return this.b.Je(b)}return false};_.gc=function $kb(){return this.b.gc()};var CJ=zeb(Bte,'AbstractNavigableMap/EntrySet',620);mdb(1115,Ete,Ite,_kb);_.Lc=function flb(){return new cwb(this)};_.$b=function alb(){this.a.$b()};_.Gc=function blb(a){return Jkb(this.a,a)};_.Jc=function clb(){var a;a=this.a.vc().b.Be();return new glb(a)};_.Kc=function dlb(a){if(Jkb(this.a,a)){this.a.Ac(a);return true}return false};_.gc=function elb(){return this.a.gc()};var EJ=zeb(Bte,'AbstractNavigableMap/NavigableKeySet',1115);mdb(1116,1,Ate,glb);_.Nb=function hlb(a){ctb(this,a)};_.Ob=function ilb(){return Hjb(this.a.a)};_.Pb=function jlb(){var a;a=zyb(this.a);return a.jd()};_.Qb=function klb(){Ayb(this.a)};var DJ=zeb(Bte,'AbstractNavigableMap/NavigableKeySet/1',1116);mdb(2065,31,Dte);_.Ec=function llb(a){return PDb(pvb(this,a),Bve),true};_.Fc=function mlb(a){KDb(a);CDb(a!=this,"Can't add a queue to itself");return xe(this,a)};_.$b=function nlb(){while(qvb(this)!=null);};var GJ=zeb(Bte,'AbstractQueue',2065);mdb(314,31,{4:1,20:1,31:1,18:1},Dlb,Elb);_.Ec=function Flb(a){return plb(this,a),true};_.$b=function Hlb(){qlb(this)};_.Gc=function Ilb(a){return rlb(new Rlb(this),a)};_.dc=function Jlb(){return ulb(this)};_.Jc=function Klb(){return new Rlb(this)};_.Kc=function Llb(a){return xlb(new Rlb(this),a)};_.gc=function Mlb(){return this.c-this.b&this.a.length-1};_.Lc=function Nlb(){return new Wvb(this,272)};_.Oc=function Olb(a){var b;b=this.c-this.b&this.a.length-1;a.lengthb&&VC(a,b,null);return a};_.b=0;_.c=0;var KJ=zeb(Bte,'ArrayDeque',314);mdb(448,1,Ate,Rlb);_.Nb=function Slb(a){ctb(this,a)};_.Ob=function Tlb(){return this.a!=this.b};_.Pb=function Ulb(){return Plb(this)};_.Qb=function Vlb(){Qlb(this)};_.a=0;_.b=0;_.c=-1;var JJ=zeb(Bte,'ArrayDeque/IteratorImpl',448);mdb(13,56,Cve,imb,jmb,kmb);_._c=function lmb(a,b){Xlb(this,a,b)};_.Ec=function mmb(a){return Ylb(this,a)};_.ad=function nmb(a,b){return Zlb(this,a,b)};_.Fc=function omb(a){return $lb(this,a)};_.$b=function pmb(){qDb(this.c,0)};_.Gc=function qmb(a){return bmb(this,a,0)!=-1};_.Ic=function rmb(a){_lb(this,a)};_.Xb=function smb(a){return amb(this,a)};_.bd=function tmb(a){return bmb(this,a,0)};_.dc=function umb(){return this.c.length==0};_.Jc=function vmb(){return new Hmb(this)};_.ed=function wmb(a){return cmb(this,a)};_.Kc=function xmb(a){return dmb(this,a)};_.ae=function ymb(a,b){emb(this,a,b)};_.fd=function zmb(a,b){return fmb(this,a,b)};_.gc=function Amb(){return this.c.length};_.gd=function Bmb(a){gmb(this,a)};_.Nc=function Cmb(){return iDb(this.c)};_.Oc=function Dmb(a){return hmb(this,a)};var MJ=zeb(Bte,'ArrayList',13);mdb(7,1,Ate,Hmb);_.Nb=function Imb(a){ctb(this,a)};_.Ob=function Jmb(){return Emb(this)};_.Pb=function Kmb(){return Fmb(this)};_.Qb=function Lmb(){Gmb(this)};_.a=0;_.b=-1;var LJ=zeb(Bte,'ArrayList/1',7);mdb(2074,$wnd.Function,{},pnb);_.Ke=function qnb(a,b){return Xeb(a,b)};mdb(123,56,Dve,tnb);_.Gc=function unb(a){return Jt(this,a)!=-1};_.Ic=function vnb(a){var b,c,d,e;KDb(a);for(c=this.a,d=0,e=c.length;d0){throw Icb(new hfb(Sve+a+' greater than '+this.e))}return this.f.Re()?fyb(this.c,this.b,this.a,a,b):Vxb(this.c,a,b)};_.yc=function Zyb(a,b){if(!Xxb(this.c,this.f,a,this.b,this.a,this.e,this.d)){throw Icb(new hfb(a+' outside the range '+this.b+' to '+this.e))}return $xb(this.c,a,b)};_.Ac=function $yb(a){var b;b=a;if(!Xxb(this.c,this.f,b,this.b,this.a,this.e,this.d)){return null}return _xb(this.c,b)};_.Je=function _yb(a){return Nyb(this,a.jd())&&ayb(this.c,a)};_.gc=function azb(){var a,b,c;this.f.Re()?this.a?(b=Txb(this.c,this.b,true)):(b=Txb(this.c,this.b,false)):(b=Rxb(this.c));if(!(!!b&&Nyb(this,b.d)?b:null)){return 0}a=0;for(c=new Cyb(this.c,this.f,this.b,this.a,this.e,this.d);Hjb(c.a);c.b=JD(Ijb(c.a),45)){++a}return a};_.$c=function bzb(a,b){if(this.f.Re()&&this.c.a.Le(a,this.b)<0){throw Icb(new hfb(Sve+a+Tve+this.b))}return this.f.Se()?fyb(this.c,a,b,this.e,this.d):gyb(this.c,a,b)};_.a=false;_.d=false;var sL=zeb(Bte,'TreeMap/SubMap',622);mdb(309,23,Uve,hzb);_.Re=function izb(){return false};_.Se=function jzb(){return false};var czb,dzb,ezb,fzb;var rL=Aeb(Bte,'TreeMap/SubMapType',309,MI,lzb,kzb);mdb(1112,309,Uve,mzb);_.Se=function nzb(){return true};var oL=Aeb(Bte,'TreeMap/SubMapType/1',1112,rL,null,null);mdb(1113,309,Uve,ozb);_.Re=function pzb(){return true};_.Se=function qzb(){return true};var pL=Aeb(Bte,'TreeMap/SubMapType/2',1113,rL,null,null);mdb(1114,309,Uve,rzb);_.Re=function szb(){return true};var qL=Aeb(Bte,'TreeMap/SubMapType/3',1114,rL,null,null);var tzb;mdb(141,Ete,{3:1,20:1,31:1,18:1,277:1,22:1,83:1,141:1},Bzb,Czb,Dzb,Ezb);_.Lc=function Lzb(){return new cwb(this)};_.Ec=function Fzb(a){return vzb(this,a)};_.$b=function Gzb(){this.a.$b()};_.Gc=function Hzb(a){return this.a._b(a)};_.Jc=function Izb(){return this.a.ec().Jc()};_.Kc=function Jzb(a){return Azb(this,a)};_.gc=function Kzb(){return this.a.gc()};var uL=zeb(Bte,'TreeSet',141);mdb(1052,1,{},Ozb);_.Te=function Pzb(a,b){return Mzb(this.a,a,b)};var wL=zeb(Vve,'BinaryOperator/lambda$0$Type',1052);mdb(1053,1,{},Qzb);_.Te=function Rzb(a,b){return Nzb(this.a,a,b)};var xL=zeb(Vve,'BinaryOperator/lambda$1$Type',1053);mdb(935,1,{},Szb);_.Kb=function Tzb(a){return a};var yL=zeb(Vve,'Function/lambda$0$Type',935);mdb(388,1,oue,Uzb);_.Mb=function Vzb(a){return !this.a.Mb(a)};var zL=zeb(Vve,'Predicate/lambda$2$Type',388);mdb(567,1,{567:1});var AL=zeb(Wve,'Handler',567);mdb(2069,1,nte);_.ve=function Yzb(){return 'DUMMY'};_.Ib=function Zzb(){return this.ve()};var Wzb;var CL=zeb(Wve,'Level',2069);mdb(1672,2069,nte,$zb);_.ve=function _zb(){return 'INFO'};var BL=zeb(Wve,'Level/LevelInfo',1672);mdb(1824,1,{},dAb);var aAb;var DL=zeb(Wve,'LogManager',1824);mdb(1866,1,nte,fAb);_.b=null;var EL=zeb(Wve,'LogRecord',1866);mdb(511,1,{511:1},tAb);_.e=false;var gAb=false,hAb=false,iAb=false,jAb=false,kAb=false;var FL=zeb(Wve,'Logger',511);mdb(819,567,{567:1},wAb);var GL=zeb(Wve,'SimpleConsoleLogHandler',819);mdb(130,23,{3:1,35:1,23:1,130:1},DAb);var zAb,AAb,BAb;var HL=Aeb(Zve,'Collector/Characteristics',130,MI,FAb,EAb);var GAb;mdb(746,1,{},IAb);var IL=zeb(Zve,'CollectorImpl',746);mdb(1050,1,{},KAb);_.Te=function LAb(a,b){return Lxb(JD(a,212),JD(b,212))};var JL=zeb(Zve,'Collectors/10methodref$merge$Type',1050);mdb(1051,1,{},MAb);_.Kb=function NAb(a){return Mxb(JD(a,212))};var KL=zeb(Zve,'Collectors/11methodref$toString$Type',1051);mdb(152,1,{},OAb);_.Wd=function PAb(a,b){JD(a,18).Ec(b)};var LL=zeb(Zve,'Collectors/20methodref$add$Type',152);mdb(154,1,{},QAb);_.Ve=function RAb(){return new imb};var ML=zeb(Zve,'Collectors/21methodref$ctor$Type',154);mdb(1049,1,{},SAb);_.Wd=function TAb(a,b){Kxb(JD(a,212),JD(b,472))};var NL=zeb(Zve,'Collectors/9methodref$add$Type',1049);mdb(1048,1,{},UAb);_.Ve=function VAb(){return new Nxb(this.a,this.b,this.c)};var OL=zeb(Zve,'Collectors/lambda$15$Type',1048);mdb(153,1,{},WAb);_.Te=function XAb(a,b){return JAb(JD(a,18),JD(b,18))};var PL=zeb(Zve,'Collectors/lambda$45$Type',153);mdb(538,1,{});_.Ye=function cBb(){YAb(this)};_.d=false;var vM=zeb(Zve,'TerminatableStream',538);mdb(768,538,$ve,kBb);_.Ye=function lBb(){YAb(this)};var UL=zeb(Zve,'DoubleStreamImpl',768);mdb(1297,724,Qte,oBb);_.Pe=function qBb(a){return nBb(this,JD(a,189))};_.a=null;var RL=zeb(Zve,'DoubleStreamImpl/2',1297);mdb(1298,1,Gve,rBb);_.Ne=function sBb(a){pBb(this.a,a)};var QL=zeb(Zve,'DoubleStreamImpl/2/lambda$0$Type',1298);mdb(1295,1,Gve,tBb);_.Ne=function uBb(a){mBb(this.a,a)};var SL=zeb(Zve,'DoubleStreamImpl/lambda$0$Type',1295);mdb(1296,1,Gve,vBb);_.Ne=function wBb(a){Sqb(this.a,a)};var TL=zeb(Zve,'DoubleStreamImpl/lambda$2$Type',1296);mdb(1351,723,Qte,ABb);_.Pe=function BBb(a){return zBb(this,JD(a,202))};_.a=0;_.b=0;_.c=0;var VL=zeb(Zve,'IntStream/5',1351);mdb(793,538,$ve,EBb);_.Ye=function FBb(){YAb(this)};_.Ze=function GBb(){return _Ab(this),this.a};var YL=zeb(Zve,'IntStreamImpl',793);mdb(794,538,$ve,HBb);_.Ye=function IBb(){YAb(this)};_.Ze=function JBb(){return _Ab(this),Xwb(),Wwb};var WL=zeb(Zve,'IntStreamImpl/Empty',794);mdb(1651,1,Ste,KBb);_.Bd=function LBb(a){psb(this.a,a)};var XL=zeb(Zve,'IntStreamImpl/lambda$4$Type',1651);var sM=Beb(Zve,'Stream');mdb(28,538,{520:1,677:1,832:1},gCb);_.Ye=function hCb(){YAb(this)};var MBb;var rM=zeb(Zve,'StreamImpl',28);mdb(1072,486,Qte,mCb);_.zd=function nCb(a){while(kCb(this)){if(this.a.zd(a)){return true}else{YAb(this.b);this.b=null;this.a=null}}return false};var $L=zeb(Zve,'StreamImpl/1',1072);mdb(1073,1,Rte,oCb);_.Ad=function pCb(a){lCb(this.a,JD(a,832))};var ZL=zeb(Zve,'StreamImpl/1/lambda$0$Type',1073);mdb(1074,1,oue,qCb);_.Mb=function rCb(a){return bsb(this.a,a)};var _L=zeb(Zve,'StreamImpl/1methodref$add$Type',1074);mdb(1075,486,Qte,sCb);_.zd=function tCb(a){var b;if(!this.a){b=new imb;this.b.a.Nb(new uCb(b));Fnb();gmb(b,this.c);this.a=new Wvb(b,16)}return Vvb(this.a,a)};_.a=null;var bM=zeb(Zve,'StreamImpl/5',1075);mdb(1076,1,Rte,uCb);_.Ad=function vCb(a){Ylb(this.a,a)};var aM=zeb(Zve,'StreamImpl/5/2methodref$add$Type',1076);mdb(725,486,Qte,xCb);_.zd=function yCb(a){this.b=false;while(!this.b&&this.c.zd(new zCb(this,a)));return this.b};_.b=false;var dM=zeb(Zve,'StreamImpl/FilterSpliterator',725);mdb(1066,1,Rte,zCb);_.Ad=function ACb(a){wCb(this.a,this.b,a)};var cM=zeb(Zve,'StreamImpl/FilterSpliterator/lambda$0$Type',1066);mdb(1061,724,Qte,DCb);_.Pe=function ECb(a){return CCb(this,JD(a,189))};var fM=zeb(Zve,'StreamImpl/MapToDoubleSpliterator',1061);mdb(1065,1,Rte,FCb);_.Ad=function GCb(a){BCb(this.a,this.b,a)};var eM=zeb(Zve,'StreamImpl/MapToDoubleSpliterator/lambda$0$Type',1065);mdb(1060,723,Qte,JCb);_.Pe=function KCb(a){return ICb(this,JD(a,202))};var hM=zeb(Zve,'StreamImpl/MapToIntSpliterator',1060);mdb(1064,1,Rte,LCb);_.Ad=function MCb(a){HCb(this.a,this.b,a)};var gM=zeb(Zve,'StreamImpl/MapToIntSpliterator/lambda$0$Type',1064);mdb(722,486,Qte,PCb);_.zd=function QCb(a){return OCb(this,a)};var jM=zeb(Zve,'StreamImpl/MapToObjSpliterator',722);mdb(1063,1,Rte,RCb);_.Ad=function SCb(a){NCb(this.a,this.b,a)};var iM=zeb(Zve,'StreamImpl/MapToObjSpliterator/lambda$0$Type',1063);mdb(1062,486,Qte,TCb);_.zd=function UCb(a){while(Qcb(this.b,0)){if(!this.a.zd(new VCb)){return false}this.b=adb(this.b,1)}return this.a.zd(a)};_.b=0;var lM=zeb(Zve,'StreamImpl/SkipSpliterator',1062);mdb(1067,1,Rte,VCb);_.Ad=function WCb(a){};var kM=zeb(Zve,'StreamImpl/SkipSpliterator/lambda$0$Type',1067);mdb(617,1,Rte,YCb);_.Ad=function ZCb(a){XCb(this,a)};var mM=zeb(Zve,'StreamImpl/ValueConsumer',617);mdb(1068,1,Rte,$Cb);_.Ad=function _Cb(a){NBb()};var nM=zeb(Zve,'StreamImpl/lambda$0$Type',1068);mdb(1069,1,Rte,aDb);_.Ad=function bDb(a){NBb()};var oM=zeb(Zve,'StreamImpl/lambda$1$Type',1069);mdb(1070,1,{},cDb);_.Te=function dDb(a,b){return iCb(this.a,a,b)};var pM=zeb(Zve,'StreamImpl/lambda$4$Type',1070);mdb(1071,1,Rte,eDb);_.Ad=function fDb(a){jCb(this.b,this.a,a)};var qM=zeb(Zve,'StreamImpl/lambda$5$Type',1071);mdb(1077,1,Rte,gDb);_.Ad=function hDb(a){dBb(this.a,JD(a,375))};var uM=zeb(Zve,'TerminatableStream/lambda$0$Type',1077);mdb(2104,1,{});mdb(1976,1,{},wDb);var wM=zeb('javaemul.internal','ConsoleLogger',1976);var yDb=0;mdb(2096,1,{});mdb(1800,1,Rte,VDb);_.Ad=function WDb(a){JD(a,321)};var xM=zeb(ewe,'BowyerWatsonTriangulation/lambda$0$Type',1800);mdb(1801,1,Rte,XDb);_.Ad=function YDb(a){xe(this.a,JD(a,321).e)};var yM=zeb(ewe,'BowyerWatsonTriangulation/lambda$1$Type',1801);mdb(1802,1,Rte,ZDb);_.Ad=function $Db(a){JD(a,177)};var zM=zeb(ewe,'BowyerWatsonTriangulation/lambda$2$Type',1802);mdb(1797,1,fwe,bEb);_.Le=function cEb(a,b){return aEb(this.a,JD(a,177),JD(b,177))};_.Fb=function dEb(a){return this===a};_.Me=function eEb(){return new Kqb(this)};var AM=zeb(ewe,'NaiveMinST/lambda$0$Type',1797);mdb(440,1,{},gEb);var BM=zeb(ewe,'NodeMicroLayout',440);mdb(177,1,{177:1},hEb);_.Fb=function iEb(a){var b;if(RD(a,177)){b=JD(a,177);return Jub(this.a,b.a)&&Jub(this.b,b.b)||Jub(this.a,b.b)&&Jub(this.b,b.a)}else{return false}};_.Hb=function jEb(){return Kub(this.a)+Kub(this.b)};var CM=zeb(ewe,'TEdge',177);mdb(321,1,{321:1},lEb);_.Fb=function mEb(a){var b;if(RD(a,321)){b=JD(a,321);return kEb(this,b.a)&&kEb(this,b.b)&&kEb(this,b.c)}else{return false}};_.Hb=function nEb(){return Kub(this.a)+Kub(this.b)+Kub(this.c)};var DM=zeb(ewe,'TTriangle',321);mdb(225,1,{225:1},oEb);var EM=zeb(ewe,'Tree',225);mdb(1183,1,{},qEb);var GM=zeb(gwe,'Scanline',1183);var FM=Beb(gwe,hwe);mdb(1728,1,{},tEb);var HM=zeb(iwe,'CGraph',1728);mdb(320,1,{320:1},vEb);_.b=0;_.c=0;_.d=0;_.g=0;_.i=0;_.k=pve;var JM=zeb(iwe,'CGroup',320);mdb(814,1,{},zEb);var IM=zeb(iwe,'CGroup/CGroupBuilder',814);mdb(60,1,{60:1},AEb);_.Ib=function BEb(){var a;if(this.j){return OD(this.j.Kb(this))}return seb(LM),LM.o+'@'+(a=ADb(this)>>>0,a.toString(16))};_.f=0;_.i=pve;var LM=zeb(iwe,'CNode',60);mdb(813,1,{},GEb);var KM=zeb(iwe,'CNode/CNodeBuilder',813);var LEb;mdb(1551,1,{},NEb);_.df=function OEb(a,b){return 0};_.ef=function PEb(a,b){return 0};var MM=zeb(iwe,kwe,1551);mdb(1830,1,{},QEb);_.af=function REb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;j=ove;for(d=new Hmb(a.a.b);d.ad.d.c||d.d.c==f.d.c&&d.d.b0?a+this.n.d+this.n.a:0};_.gf=function $Hb(){var a,b,c,d,e;e=0;if(this.e){this.b?(e=this.b.a):!!this.a[1][1]&&(e=this.a[1][1].gf())}else if(this.g){e=XHb(this,RHb(this,null,true))}else{for(b=(zHb(),WC(OC(hN,1),kue,237,0,[wHb,xHb,yHb])),c=0,d=b.length;c0?e+this.n.b+this.n.c:0};_.hf=function _Hb(){var a,b,c,d,e;if(this.g){a=RHb(this,null,false);for(c=(zHb(),WC(OC(hN,1),kue,237,0,[wHb,xHb,yHb])),d=0,e=c.length;d0){d[0]+=this.d;c-=d[0]}if(d[2]>0){d[2]+=this.d;c-=d[2]}this.c.a=$wnd.Math.max(0,c);this.c.d=b.d+a.d+(this.c.a-c)/2;d[1]=$wnd.Math.max(d[1],c);NHb(this,xHb,b.d+a.d+d[0]-(d[1]-c)/2,d)};_.b=null;_.d=0;_.e=false;_.f=false;_.g=false;var KHb=0,LHb=0;var jN=zeb(Bwe,'GridContainerCell',1499);mdb(461,23,{3:1,35:1,23:1,461:1},fIb);var bIb,cIb,dIb;var kN=Aeb(Bwe,'HorizontalLabelAlignment',461,MI,hIb,gIb);var iIb;mdb(318,216,{216:1,318:1},tIb,uIb,vIb);_.ff=function wIb(){return pIb(this)};_.gf=function xIb(){return qIb(this)};_.a=0;_.c=false;var lN=zeb(Bwe,'LabelCell',318);mdb(253,337,{216:1,337:1,253:1},FIb);_.ff=function GIb(){return yIb(this)};_.gf=function HIb(){return zIb(this)};_.hf=function KIb(){AIb(this)};_.jf=function LIb(){BIb(this)};_.b=0;_.c=0;_.d=false;var qN=zeb(Bwe,'StripContainerCell',253);mdb(1655,1,oue,MIb);_.Mb=function NIb(a){return IIb(JD(a,216))};var mN=zeb(Bwe,'StripContainerCell/lambda$0$Type',1655);mdb(1656,1,{},OIb);_.We=function PIb(a){return JD(a,216).gf()};var nN=zeb(Bwe,'StripContainerCell/lambda$1$Type',1656);mdb(1657,1,oue,QIb);_.Mb=function RIb(a){return JIb(JD(a,216))};var oN=zeb(Bwe,'StripContainerCell/lambda$2$Type',1657);mdb(1658,1,{},SIb);_.We=function TIb(a){return JD(a,216).ff()};var pN=zeb(Bwe,'StripContainerCell/lambda$3$Type',1658);mdb(462,23,{3:1,35:1,23:1,462:1},YIb);var UIb,VIb,WIb;var rN=Aeb(Bwe,'VerticalLabelAlignment',462,MI,$Ib,ZIb);var _Ib;mdb(787,1,{},cJb);_.c=0;_.d=0;_.k=0;_.s=0;_.t=0;_.v=false;_.w=0;_.D=false;_.F=false;var uN=zeb(Jwe,'NodeContext',787);mdb(1497,1,fwe,fJb);_.Le=function gJb(a,b){return eJb(JD(a,64),JD(b,64))};_.Fb=function hJb(a){return this===a};_.Me=function iJb(){return new Kqb(this)};var sN=zeb(Jwe,'NodeContext/0methodref$comparePortSides$Type',1497);mdb(1498,1,fwe,jJb);_.Le=function kJb(a,b){return dJb(JD(a,115),JD(b,115))};_.Fb=function lJb(a){return this===a};_.Me=function mJb(){return new Kqb(this)};var tN=zeb(Jwe,'NodeContext/1methodref$comparePortContexts$Type',1498);mdb(168,23,{3:1,35:1,23:1,168:1},MJb);var nJb,oJb,pJb,qJb,rJb,sJb,tJb,uJb,vJb,wJb,xJb,yJb,zJb,AJb,BJb,CJb,DJb,EJb,FJb,GJb,HJb,IJb;var vN=Aeb(Jwe,'NodeLabelLocation',168,MI,PJb,OJb);var QJb;mdb(115,1,{115:1},TJb);_.a=false;var wN=zeb(Jwe,'PortContext',115);mdb(1502,1,Rte,kKb);_.Ad=function lKb(a){nIb(JD(a,318))};var xN=zeb(Mwe,Nwe,1502);mdb(1503,1,oue,mKb);_.Mb=function nKb(a){return !!JD(a,115).c};var yN=zeb(Mwe,Owe,1503);mdb(1504,1,Rte,oKb);_.Ad=function pKb(a){nIb(JD(a,115).c)};var zN=zeb(Mwe,'LabelPlacer/lambda$2$Type',1504);var qKb;mdb(1501,1,Rte,yKb);_.Ad=function zKb(a){rKb();SJb(JD(a,115))};var AN=zeb(Mwe,'NodeLabelAndSizeUtilities/lambda$0$Type',1501);mdb(788,1,Rte,FKb);_.Ad=function GKb(a){DKb(this.b,this.c,this.a,JD(a,187))};_.a=false;_.c=false;var BN=zeb(Mwe,'NodeLabelCellCreator/lambda$0$Type',788);mdb(1500,1,Rte,MKb);_.Ad=function NKb(a){LKb(this.a,JD(a,187))};var CN=zeb(Mwe,'PortContextCreator/lambda$0$Type',1500);var UKb;mdb(1872,1,{},mLb);var EN=zeb(Qwe,'GreedyRectangleStripOverlapRemover',1872);mdb(1873,1,fwe,oLb);_.Le=function pLb(a,b){return nLb(JD(a,226),JD(b,226))};_.Fb=function qLb(a){return this===a};_.Me=function rLb(){return new Kqb(this)};var DN=zeb(Qwe,'GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type',1873);mdb(1826,1,{},yLb);_.a=5;_.e=0;var KN=zeb(Qwe,'RectangleStripOverlapRemover',1826);mdb(1827,1,fwe,CLb);_.Le=function DLb(a,b){return zLb(JD(a,226),JD(b,226))};_.Fb=function ELb(a){return this===a};_.Me=function FLb(){return new Kqb(this)};var FN=zeb(Qwe,'RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type',1827);mdb(1829,1,fwe,GLb);_.Le=function HLb(a,b){return ALb(JD(a,226),JD(b,226))};_.Fb=function ILb(a){return this===a};_.Me=function JLb(){return new Kqb(this)};var GN=zeb(Qwe,'RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type',1829);mdb(409,23,{3:1,35:1,23:1,409:1},PLb);var KLb,LLb,MLb,NLb;var HN=Aeb(Qwe,'RectangleStripOverlapRemover/OverlapRemovalDirection',409,MI,RLb,QLb);var SLb;mdb(226,1,{226:1},ULb);var IN=zeb(Qwe,'RectangleStripOverlapRemover/RectangleNode',226);mdb(1828,1,Rte,VLb);_.Ad=function WLb(a){tLb(this.a,JD(a,226))};var JN=zeb(Qwe,'RectangleStripOverlapRemover/lambda$1$Type',1828);var XLb=false,YLb,ZLb;mdb(1798,1,Rte,fMb);_.Ad=function gMb(a){_Lb(JD(a,225))};var LN=zeb(Swe,'DepthFirstCompaction/0methodref$compactTree$Type',1798);mdb(810,1,Rte,hMb);_.Ad=function iMb(a){cMb(this.a,JD(a,225))};var MN=zeb(Swe,'DepthFirstCompaction/lambda$1$Type',810);mdb(1799,1,Rte,jMb);_.Ad=function kMb(a){dMb(this.a,this.b,this.c,JD(a,225))};var NN=zeb(Swe,'DepthFirstCompaction/lambda$2$Type',1799);var lMb,mMb;mdb(68,1,{68:1},sMb);var ON=zeb(Swe,'Node',68);mdb(1179,1,{},vMb);var TN=zeb(Swe,'ScanlineOverlapCheck',1179);mdb(1180,1,{683:1},zMb);_._e=function AMb(a){xMb(this,JD(a,442))};var QN=zeb(Swe,'ScanlineOverlapCheck/OverlapsScanlineHandler',1180);mdb(1181,1,fwe,CMb);_.Le=function DMb(a,b){return BMb(JD(a,68),JD(b,68))};_.Fb=function EMb(a){return this===a};_.Me=function FMb(){return new Kqb(this)};var PN=zeb(Swe,'ScanlineOverlapCheck/OverlapsScanlineHandler/lambda$0$Type',1181);mdb(442,1,{442:1},GMb);_.a=false;var RN=zeb(Swe,'ScanlineOverlapCheck/Timestamp',442);mdb(1182,1,fwe,HMb);_.Le=function IMb(a,b){return wMb(JD(a,442),JD(b,442))};_.Fb=function JMb(a){return this===a};_.Me=function KMb(){return new Kqb(this)};var SN=zeb(Swe,'ScanlineOverlapCheck/lambda$0$Type',1182);mdb(545,1,{},LMb);var UN=zeb('org.eclipse.elk.alg.common.utils','SVGImage',545);mdb(748,1,{},TMb);var WN=zeb(Vwe,Wwe,748);mdb(1164,1,fwe,VMb);_.Le=function WMb(a,b){return UMb(JD(a,235),JD(b,235))};_.Fb=function XMb(a){return this===a};_.Me=function YMb(){return new Kqb(this)};var VN=zeb(Vwe,Xwe,1164);mdb(1165,1,Rte,cNb);_.Ad=function dNb(a){bNb(this.b,this.a,JD(a,251))};var XN=zeb(Vwe,Ywe,1165);mdb(214,1,Zwe);var i1=zeb($we,'AbstractLayoutProvider',214);mdb(726,214,Zwe,hNb);_.kf=function iNb(a,b){eNb(this,a,b)};var YN=zeb(Vwe,'ForceLayoutProvider',726);var a5=Beb(_we,axe);mdb(150,1,{3:1,105:1,150:1},pNb);_.of=function tNb(a,b){return nNb(this,a,b)};_.lf=function qNb(){return kNb(this)};_.mf=function rNb(a){return lNb(this,a)};_.nf=function sNb(a){return mNb(this,a)};var c5=zeb(_we,'MapPropertyHolder',150);mdb(313,150,{3:1,313:1,105:1,150:1});var cO=zeb(bxe,'FParticle',313);mdb(251,313,{3:1,251:1,313:1,105:1,150:1},vNb);_.Ib=function wNb(){var a;if(this.a){a=bmb(this.a.a,this,0);return a>=0?'b'+a+'['+CNb(this.a)+']':'b['+CNb(this.a)+']'}return 'b_'+ADb(this)};var ZN=zeb(bxe,'FBendpoint',251);mdb(291,150,{3:1,291:1,105:1,150:1},DNb);_.Ib=function ENb(){return CNb(this)};var $N=zeb(bxe,'FEdge',291);mdb(235,150,{3:1,235:1,105:1,150:1},HNb);var _N=zeb(bxe,'FGraph',235);mdb(445,313,{3:1,445:1,313:1,105:1,150:1},JNb);_.Ib=function KNb(){return this.b==null||this.b.length==0?'l['+CNb(this.a)+']':'l_'+this.b};var aO=zeb(bxe,'FLabel',445);mdb(155,313,{3:1,155:1,313:1,105:1,150:1},MNb);_.Ib=function NNb(){return LNb(this)};_.a=0;var bO=zeb(bxe,'FNode',155);mdb(2062,1,{});_.qf=function SNb(a){ONb(this,a)};_.rf=function TNb(){PNb(this)};_.d=0;var dO=zeb(dxe,'AbstractForceModel',2062);mdb(631,2062,{631:1},UNb);_.pf=function WNb(a,b){var c,d,e,f,g;RNb(this.f,a,b);e=Vfd(Ifd(b.d),a.d);g=$wnd.Math.sqrt(e.a*e.a+e.b*e.b);d=$wnd.Math.max(0,g-Mfd(a.e)/2-Mfd(b.e)/2);c=GNb(this.e,a,b);c>0?(f=-VNb(d,this.c)*c):(f=ZNb(d,this.b)*JD(lNb(a,(ZOb(),MOb)),15).a);Qfd(e,f/g);return e};_.qf=function XNb(a){ONb(this,a);this.a=JD(lNb(a,(ZOb(),BOb)),15).a;this.c=Reb(MD(lNb(a,SOb)));this.b=Reb(MD(lNb(a,OOb)))};_.sf=function YNb(a){return a0&&(f-=_Nb(d,this.a)*c);Qfd(e,f*this.b/g);return e};_.qf=function bOb(a){var b,c,d,e,f,g,h;ONb(this,a);this.b=Reb(MD(lNb(a,(ZOb(),TOb))));this.c=this.b/JD(lNb(a,BOb),15).a;d=a.e.c.length;f=0;e=0;for(h=new Hmb(a.e);h.a0};_.a=0;_.b=0;_.c=0;var fO=zeb(dxe,'FruchtermanReingoldModel',632);var E1=Beb(exe,'ILayoutMetaDataProvider');mdb(844,1,lxe,oOb);_.tf=function pOb(a){mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,fxe),''),'Force Model'),'Determines the model for force calculation.'),hOb),(Ued(),Oed)),hO),Crb((Ged(),Eed)))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,gxe),''),'Iterations'),'The number of iterations on the force model.'),zfb(300)),Qed),UI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,hxe),''),'Repulsive Power'),'Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model'),zfb(0)),Qed),UI),Crb(Bed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,ixe),''),'FR Temperature'),'The temperature is used as a scaling factor for particle displacements.'),jxe),Ned),LI),Crb(Eed))));hdd(a,ixe,fxe,mOb);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,kxe),''),'Eades Repulsion'),"Factor for repulsive forces in Eades' model."),5),Ned),LI),Crb(Eed))));hdd(a,kxe,fxe,jOb);$Ob((new _Ob,a))};var fOb,gOb,hOb,iOb,jOb,kOb,lOb,mOb;var gO=zeb(mxe,'ForceMetaDataProvider',844);mdb(424,23,{3:1,35:1,23:1,424:1},tOb);var qOb,rOb;var hO=Aeb(mxe,'ForceModelStrategy',424,MI,vOb,uOb);var wOb;mdb(984,1,lxe,_Ob);_.tf=function aPb(a){$Ob(a)};var yOb,zOb,AOb,BOb,COb,DOb,EOb,FOb,GOb,HOb,IOb,JOb,KOb,LOb,MOb,NOb,OOb,POb,QOb,ROb,SOb,TOb,UOb,VOb,WOb,XOb,YOb;var jO=zeb(mxe,'ForceOptions',984);mdb(985,1,{},bPb);_.uf=function cPb(){var a;return a=new hNb,a};_.vf=function dPb(a){};var iO=zeb(mxe,'ForceOptions/ForceFactory',985);var ePb,fPb,gPb,hPb;mdb(845,1,lxe,qPb);_.tf=function rPb(a){mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Oxe),''),'Fixed Position'),'Prevent that the node is moved by the layout algorithm.'),(Ndb(),false)),(Ued(),Med)),GI),Crb((Ged(),Ded)))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Pxe),''),'Desired Edge Length'),'Either specified for parent nodes or for individual edges, where the latter takes higher precedence.'),100),Ned),LI),Drb(Eed,WC(OC(g2,1),kue,160,0,[Bed])))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Qxe),''),'Layout Dimension'),'Dimensions that are permitted to be altered during layout.'),lPb),Oed),pO),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Rxe),''),'Stress Epsilon'),'Termination criterion for the iterative process.'),jxe),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Sxe),''),'Iteration Limit'),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),zfb(lte)),Qed),UI),Crb(Eed))));FPb((new GPb,a))};var jPb,kPb,lPb,mPb,nPb,oPb;var kO=zeb(mxe,'StressMetaDataProvider',845);mdb(988,1,lxe,GPb);_.tf=function HPb(a){FPb(a)};var sPb,tPb,uPb,vPb,wPb,xPb,yPb,zPb,APb,BPb,CPb,DPb;var mO=zeb(mxe,'StressOptions',988);mdb(989,1,{},IPb);_.uf=function JPb(){var a;return a=new LPb,a};_.vf=function KPb(a){};var lO=zeb(mxe,'StressOptions/StressFactory',989);mdb(1080,214,Zwe,LPb);_.kf=function MPb(a,b){var c,d,e,f,g;b.Tg(Uxe,1);Odb(LD(Pud(a,(EPb(),wPb))))?Odb(LD(Pud(a,CPb)))||fEb((c=new gEb((urd(),new Ird(a))),c)):eNb(new hNb,a,b.dh(1));e=$Mb(a);d=SMb(this.a,e);for(g=d.Jc();g.Ob();){f=JD(g.Pb(),235);if(f.e.c.length<=1){continue}VPb(this.b,f);TPb(this.b);_lb(f.d,new NPb)}e=RMb(d);ZMb(e);b.Ug()};var oO=zeb(Wxe,'StressLayoutProvider',1080);mdb(1081,1,Rte,NPb);_.Ad=function OPb(a){INb(JD(a,445))};var nO=zeb(Wxe,'StressLayoutProvider/lambda$0$Type',1081);mdb(986,1,{},WPb);_.c=0;_.e=0;_.g=0;var rO=zeb(Wxe,'StressMajorization',986);mdb(384,23,{3:1,35:1,23:1,384:1},aQb);var YPb,ZPb,$Pb;var pO=Aeb(Wxe,'StressMajorization/Dimension',384,MI,cQb,bQb);var dQb;mdb(987,1,fwe,fQb);_.Le=function gQb(a,b){return XPb(this.a,JD(a,155),JD(b,155))};_.Fb=function hQb(a){return this===a};_.Me=function iQb(){return new Kqb(this)};var qO=zeb(Wxe,'StressMajorization/lambda$0$Type',987);mdb(1161,1,{},qQb);var uO=zeb(Yxe,'ElkLayered',1161);mdb(1162,1,Rte,tQb);_.Ad=function uQb(a){rQb(this.a,JD(a,37))};var sO=zeb(Yxe,'ElkLayered/lambda$0$Type',1162);mdb(1163,1,Rte,vQb);_.Ad=function wQb(a){sQb(this.a,JD(a,37))};var tO=zeb(Yxe,'ElkLayered/lambda$1$Type',1163);mdb(1246,1,{},EQb);var xQb,yQb,zQb;var yO=zeb(Yxe,'GraphConfigurator',1246);mdb(757,1,Rte,GQb);_.Ad=function HQb(a){BQb(this.a,JD(a,9))};var vO=zeb(Yxe,'GraphConfigurator/lambda$0$Type',757);mdb(758,1,{},IQb);_.Kb=function JQb(a){return AQb(),new gCb(null,new Wvb(JD(a,25).a,16))};var wO=zeb(Yxe,'GraphConfigurator/lambda$1$Type',758);mdb(759,1,Rte,KQb);_.Ad=function LQb(a){BQb(this.a,JD(a,9))};var xO=zeb(Yxe,'GraphConfigurator/lambda$2$Type',759);mdb(1079,214,Zwe,MQb);_.kf=function NQb(a,b){var c;c=J$b(new S$b,a);XD(Pud(a,($xc(),ewc)))===XD((Bkd(),ykd))?kQb(this.a,c,b):lQb(this.a,c,b);b.Zg()||p_b(new t_b,c)};var zO=zeb(Yxe,'LayeredLayoutProvider',1079);mdb(363,23,{3:1,35:1,23:1,363:1},UQb);var OQb,PQb,QQb,RQb,SQb;var AO=Aeb(Yxe,'LayeredPhases',363,MI,WQb,VQb);var XQb;mdb(1683,1,{},dRb);_.i=0;var ZQb;var DO=zeb(Zxe,'ComponentsToCGraphTransformer',1683);var KRb;mdb(1684,1,{},eRb);_.wf=function fRb(a,b){return $wnd.Math.min(a.a!=null?Reb(a.a):a.c.i,b.a!=null?Reb(b.a):b.c.i)};_.xf=function gRb(a,b){return $wnd.Math.min(a.a!=null?Reb(a.a):a.c.i,b.a!=null?Reb(b.a):b.c.i)};var BO=zeb(Zxe,'ComponentsToCGraphTransformer/1',1684);mdb(82,1,{82:1});_.i=0;_.k=true;_.o=pve;var JO=zeb($xe,'CNode',82);mdb(460,82,{460:1,82:1},hRb,iRb);_.Ib=function jRb(){return ''};var CO=zeb(Zxe,'ComponentsToCGraphTransformer/CRectNode',460);mdb(1652,1,{},wRb);var kRb,lRb;var GO=zeb(Zxe,'OneDimensionalComponentsCompaction',1652);mdb(1653,1,{},zRb);_.Kb=function ARb(a){return xRb(JD(a,49))};_.Fb=function BRb(a){return this===a};var EO=zeb(Zxe,'OneDimensionalComponentsCompaction/lambda$0$Type',1653);mdb(1654,1,{},CRb);_.Kb=function DRb(a){return yRb(JD(a,49))};_.Fb=function ERb(a){return this===a};var FO=zeb(Zxe,'OneDimensionalComponentsCompaction/lambda$1$Type',1654);mdb(1686,1,{},GRb);var HO=zeb($xe,'CGraph',1686);mdb(194,1,{194:1},JRb);_.b=0;_.c=0;_.e=0;_.g=true;_.i=pve;var IO=zeb($xe,'CGroup',194);mdb(1685,1,{},MRb);_.wf=function NRb(a,b){return $wnd.Math.max(a.a!=null?Reb(a.a):a.c.i,b.a!=null?Reb(b.a):b.c.i)};_.xf=function ORb(a,b){return $wnd.Math.max(a.a!=null?Reb(a.a):a.c.i,b.a!=null?Reb(b.a):b.c.i)};var KO=zeb($xe,kwe,1685);mdb(1687,1,{},dSb);_.d=false;var PRb;var MO=zeb($xe,pwe,1687);mdb(1688,1,{},eSb);_.Kb=function fSb(a){return QRb(),Ndb(),JD(JD(a,49).a,82).d.e!=0?true:false};_.Fb=function gSb(a){return this===a};var LO=zeb($xe,qwe,1688);mdb(817,1,{},jSb);_.a=false;_.b=false;_.c=false;_.d=false;var NO=zeb($xe,rwe,817);mdb(1868,1,{},pSb);var SO=zeb(_xe,swe,1868);var cP=Beb(aye,hwe);mdb(1869,1,{377:1},tSb);_._e=function uSb(a){rSb(this,JD(a,465))};var PO=zeb(_xe,twe,1869);mdb(1870,1,fwe,wSb);_.Le=function xSb(a,b){return vSb(JD(a,82),JD(b,82))};_.Fb=function ySb(a){return this===a};_.Me=function zSb(){return new Kqb(this)};var OO=zeb(_xe,uwe,1870);mdb(465,1,{465:1},ASb);_.a=false;var QO=zeb(_xe,vwe,465);mdb(1871,1,fwe,BSb);_.Le=function CSb(a,b){return qSb(JD(a,465),JD(b,465))};_.Fb=function DSb(a){return this===a};_.Me=function ESb(){return new Kqb(this)};var RO=zeb(_xe,wwe,1871);mdb(146,1,{146:1},FSb,GSb);_.Fb=function HSb(a){var b;if(a==null){return false}if(UO!=rb(a)){return false}b=JD(a,146);return Jub(this.c,b.c)&&Jub(this.d,b.d)};_.Hb=function ISb(){return $mb(WC(OC(aJ,1),rte,1,5,[this.c,this.d]))};_.Ib=function JSb(){return '('+this.c+pte+this.d+(this.a?'cx':'')+this.b+')'};_.a=true;_.c=0;_.d=0;var UO=zeb(aye,'Point',146);mdb(408,23,{3:1,35:1,23:1,408:1},RSb);var KSb,LSb,MSb,NSb;var TO=Aeb(aye,'Point/Quadrant',408,MI,VSb,USb);var WSb;mdb(1674,1,{},dTb);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;var YSb,ZSb,$Sb,_Sb,aTb;var bP=zeb(aye,'RectilinearConvexHull',1674);mdb(569,1,{377:1},oTb);_._e=function pTb(a){nTb(this,JD(a,146))};_.b=0;var lTb;var WO=zeb(aye,'RectilinearConvexHull/MaximalElementsEventHandler',569);mdb(1676,1,fwe,rTb);_.Le=function sTb(a,b){return qTb(MD(a),MD(b))};_.Fb=function tTb(a){return this===a};_.Me=function uTb(){return new Kqb(this)};var VO=zeb(aye,'RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type',1676);mdb(1675,1,{377:1},wTb);_._e=function xTb(a){vTb(this,JD(a,146))};_.a=0;_.b=null;_.c=null;_.d=null;_.e=null;var XO=zeb(aye,'RectilinearConvexHull/RectangleEventHandler',1675);mdb(1677,1,fwe,yTb);_.Le=function zTb(a,b){return fTb(JD(a,146),JD(b,146))};_.Fb=function ATb(a){return this===a};_.Me=function BTb(){return new Kqb(this)};var YO=zeb(aye,'RectilinearConvexHull/lambda$0$Type',1677);mdb(1678,1,fwe,CTb);_.Le=function DTb(a,b){return gTb(JD(a,146),JD(b,146))};_.Fb=function ETb(a){return this===a};_.Me=function FTb(){return new Kqb(this)};var ZO=zeb(aye,'RectilinearConvexHull/lambda$1$Type',1678);mdb(1679,1,fwe,GTb);_.Le=function HTb(a,b){return hTb(JD(a,146),JD(b,146))};_.Fb=function ITb(a){return this===a};_.Me=function JTb(){return new Kqb(this)};var $O=zeb(aye,'RectilinearConvexHull/lambda$2$Type',1679);mdb(1680,1,fwe,KTb);_.Le=function LTb(a,b){return iTb(JD(a,146),JD(b,146))};_.Fb=function MTb(a){return this===a};_.Me=function NTb(){return new Kqb(this)};var _O=zeb(aye,'RectilinearConvexHull/lambda$3$Type',1680);mdb(1681,1,fwe,OTb);_.Le=function PTb(a,b){return jTb(JD(a,146),JD(b,146))};_.Fb=function QTb(a){return this===a};_.Me=function RTb(){return new Kqb(this)};var aP=zeb(aye,'RectilinearConvexHull/lambda$4$Type',1681);mdb(1682,1,{},TTb);var dP=zeb(aye,'Scanline',1682);mdb(2066,1,{});var eP=zeb(bye,'AbstractGraphPlacer',2066);mdb(336,1,{336:1},bUb);_.Df=function cUb(a){if(this.Ef(a)){Rc(this.b,JD(lNb(a,(Krc(),Lqc)),22),a);return true}else{return false}};_.Ef=function dUb(a){var b,c,d,e;b=JD(lNb(a,(Krc(),Lqc)),22);e=JD(Qc(ZTb,b),22);for(d=e.Jc();d.Ob();){c=JD(d.Pb(),22);if(!JD(Qc(this.b,c),16).dc()){return false}}return true};var ZTb;var hP=zeb(bye,'ComponentGroup',336);mdb(766,2066,{},iUb);_.Ff=function jUb(a){var b,c;for(c=new Hmb(this.a);c.ac){k=0;l+=h+d;h=0}i=f.c;XTb(f,k+i.a,l+i.b);Pfd(i);e=$wnd.Math.max(e,k+j.a);h=$wnd.Math.max(h,j.b);k+=j.a+d}b.f.a=e;b.f.b=l+h};_.Hf=function xVb(a,b){var c,d,e,f,g;if(XD(lNb(b,($xc(),mvc)))===XD((tUb(),sUb))){for(d=a.Jc();d.Ob();){c=JD(d.Pb(),37);g=0;for(f=new Hmb(c.a);f.ac&&!JD(lNb(f,(Krc(),Lqc)),22).Gc((mmd(),Uld))||!!i&&JD(lNb(i,(Krc(),Lqc)),22).Gc((mmd(),Tld))||JD(lNb(f,(Krc(),Lqc)),22).Gc((mmd(),lmd))){m=l;n+=h+d;h=0}j=f.c;JD(lNb(f,(Krc(),Lqc)),22).Gc((mmd(),Uld))&&(m=e+d);XTb(f,m+j.a,n+j.b);e=$wnd.Math.max(e,m+k.a);JD(lNb(f,Lqc),22).Gc(jmd)&&(l=$wnd.Math.max(l,m+k.a+d));Pfd(j);h=$wnd.Math.max(h,k.b);m+=k.a+d;i=f}b.f.a=e;b.f.b=n+h};_.Hf=function AVb(a,b){};var uP=zeb(bye,'ModelOrderRowGraphPlacer',1277);mdb(1275,1,fwe,CVb);_.Le=function DVb(a,b){return BVb(JD(a,37),JD(b,37))};_.Fb=function EVb(a){return this===a};_.Me=function FVb(){return new Kqb(this)};var vP=zeb(bye,'SimpleRowGraphPlacer/1',1275);var GVb;mdb(1245,1,xwe,MVb);_.Lb=function NVb(a){var b;return b=JD(lNb(JD(a,250).b,($xc(),nwc)),78),!!b&&b.b!=0};_.Fb=function OVb(a){return this===a};_.Mb=function PVb(a){var b;return b=JD(lNb(JD(a,250).b,($xc(),nwc)),78),!!b&&b.b!=0};var xP=zeb(gye,'CompoundGraphPostprocessor/1',1245);mdb(1244,1,hye,dWb);_.If=function eWb(a,b){ZVb(this,JD(a,37),b)};var zP=zeb(gye,'CompoundGraphPreprocessor',1244);mdb(444,1,{444:1},fWb);_.c=false;var yP=zeb(gye,'CompoundGraphPreprocessor/ExternalPort',444);mdb(250,1,{250:1},iWb);_.Ib=function jWb(){return ds(this.c)+':'+AWb(this.b)};var BP=zeb(gye,'CrossHierarchyEdge',250);mdb(764,1,fwe,lWb);_.Le=function mWb(a,b){return kWb(this,JD(a,250),JD(b,250))};_.Fb=function nWb(a){return this===a};_.Me=function pWb(){return new Kqb(this)};var AP=zeb(gye,'CrossHierarchyEdgeComparator',764);mdb(246,150,{3:1,246:1,105:1,150:1});_.p=0;var LP=zeb(iye,'LGraphElement',246);mdb(17,246,{3:1,17:1,246:1,105:1,150:1},BWb);_.Ib=function CWb(){return AWb(this)};var CP=zeb(iye,'LEdge',17);mdb(37,246,{3:1,20:1,37:1,246:1,105:1,150:1},EWb);_.Ic=function FWb(a){Efb(this,a)};_.Jc=function GWb(){return new Hmb(this.b)};_.Ib=function HWb(){if(this.b.c.length==0){return 'G-unlayered'+Ee(this.a)}else if(this.a.c.length==0){return 'G-layered'+Ee(this.b)}return 'G[layerless'+Ee(this.a)+', layers'+Ee(this.b)+']'};var MP=zeb(iye,'LGraph',37);var IWb;mdb(655,1,{});_.Jf=function KWb(){return this.e.n};_.mf=function LWb(a){return lNb(this.e,a)};_.Kf=function MWb(){return this.e.o};_.Lf=function NWb(){return this.e.p};_.nf=function OWb(a){return mNb(this.e,a)};_.Mf=function PWb(a){this.e.n.a=a.a;this.e.n.b=a.b};_.Nf=function QWb(a){this.e.o.a=a.a;this.e.o.b=a.b};_.Of=function RWb(a){this.e.p=a};var DP=zeb(iye,'LGraphAdapters/AbstractLShapeAdapter',655);mdb(464,1,{837:1},SWb);_.Pf=function TWb(){var a,b;if(!this.b){this.b=Xu(this.a.b.c.length);for(b=new Hmb(this.a.b);b.a0&&lYb((RDb(c-1,b.length),b.charCodeAt(c-1)),qye)){--c}if(g> ',a),nZb(c));ehb(dhb((a.a+='[',a),c.i),']')}return a.a};_.c=true;_.d=false;var eZb,fZb,gZb,hZb,iZb,jZb;var dQ=zeb(iye,'LPort',12);mdb(399,1,Wte,uZb);_.Ic=function vZb(a){Efb(this,a)};_.Jc=function wZb(){var a;a=new Hmb(this.a.e);return new xZb(a)};var UP=zeb(iye,'LPort/1',399);mdb(1273,1,Ate,xZb);_.Nb=function yZb(a){ctb(this,a)};_.Pb=function AZb(){return JD(Fmb(this.a),17).c};_.Ob=function zZb(){return Emb(this.a)};_.Qb=function BZb(){Gmb(this.a)};var TP=zeb(iye,'LPort/1/1',1273);mdb(365,1,Wte,CZb);_.Ic=function DZb(a){Efb(this,a)};_.Jc=function EZb(){var a;return a=new Hmb(this.a.g),new FZb(a)};var WP=zeb(iye,'LPort/2',365);mdb(763,1,Ate,FZb);_.Nb=function GZb(a){ctb(this,a)};_.Pb=function IZb(){return JD(Fmb(this.a),17).d};_.Ob=function HZb(){return Emb(this.a)};_.Qb=function JZb(){Gmb(this.a)};var VP=zeb(iye,'LPort/2/1',763);mdb(1266,1,Wte,KZb);_.Ic=function LZb(a){Efb(this,a)};_.Jc=function MZb(){return new OZb(this)};var YP=zeb(iye,'LPort/CombineIter',1266);mdb(207,1,Ate,OZb);_.Nb=function PZb(a){ctb(this,a)};_.Qb=function SZb(){dtb()};_.Ob=function QZb(){return NZb(this)};_.Pb=function RZb(){return Emb(this.a)?Fmb(this.a):Fmb(this.b)};var XP=zeb(iye,'LPort/CombineIter/1',207);mdb(1267,1,xwe,UZb);_.Lb=function VZb(a){return TZb(a)};_.Fb=function WZb(a){return this===a};_.Mb=function XZb(a){return kZb(),JD(a,12).g.c.length!=0};var ZP=zeb(iye,'LPort/lambda$0$Type',1267);mdb(1268,1,xwe,ZZb);_.Lb=function $Zb(a){return YZb(a)};_.Fb=function _Zb(a){return this===a};_.Mb=function a$b(a){return kZb(),JD(a,12).e.c.length!=0};var $P=zeb(iye,'LPort/lambda$1$Type',1268);mdb(1269,1,xwe,b$b);_.Lb=function c$b(a){return kZb(),JD(a,12).j==(mmd(),Uld)};_.Fb=function d$b(a){return this===a};_.Mb=function e$b(a){return kZb(),JD(a,12).j==(mmd(),Uld)};var _P=zeb(iye,'LPort/lambda$2$Type',1269);mdb(1270,1,xwe,f$b);_.Lb=function g$b(a){return kZb(),JD(a,12).j==(mmd(),Tld)};_.Fb=function h$b(a){return this===a};_.Mb=function i$b(a){return kZb(),JD(a,12).j==(mmd(),Tld)};var aQ=zeb(iye,'LPort/lambda$3$Type',1270);mdb(1271,1,xwe,j$b);_.Lb=function k$b(a){return kZb(),JD(a,12).j==(mmd(),jmd)};_.Fb=function l$b(a){return this===a};_.Mb=function m$b(a){return kZb(),JD(a,12).j==(mmd(),jmd)};var bQ=zeb(iye,'LPort/lambda$4$Type',1271);mdb(1272,1,xwe,n$b);_.Lb=function o$b(a){return kZb(),JD(a,12).j==(mmd(),lmd)};_.Fb=function p$b(a){return this===a};_.Mb=function q$b(a){return kZb(),JD(a,12).j==(mmd(),lmd)};var cQ=zeb(iye,'LPort/lambda$5$Type',1272);mdb(25,246,{3:1,20:1,246:1,25:1,105:1,150:1},s$b);_.Ic=function t$b(a){Efb(this,a)};_.Jc=function u$b(){return new Hmb(this.a)};_.Ib=function v$b(){return 'L_'+bmb(this.b.b,this,0)+Ee(this.a)};var fQ=zeb(iye,'Layer',25);mdb(1659,1,{},z$b);_.b=0;var gQ=zeb(iye,'Tarjan',1659);mdb(1282,1,{},S$b);var qQ=zeb(vye,wye,1282);mdb(1286,1,{},W$b);_.Kb=function X$b(a){return EEd(JD(a,84))};var hQ=zeb(vye,'ElkGraphImporter/0methodref$connectableShapeToNode$Type',1286);mdb(1289,1,{},Y$b);_.Kb=function Z$b(a){return EEd(JD(a,84))};var iQ=zeb(vye,'ElkGraphImporter/1methodref$connectableShapeToNode$Type',1289);mdb(1283,1,Rte,$$b);_.Ad=function _$b(a){F$b(this.a,JD(a,125))};var jQ=zeb(vye,Ywe,1283);mdb(1284,1,Rte,a_b);_.Ad=function b_b(a){F$b(this.a,JD(a,125))};var kQ=zeb(vye,xye,1284);mdb(1285,1,{},c_b);_.Kb=function d_b(a){return new gCb(null,new Wvb(twd(JD(a,85)),16))};var lQ=zeb(vye,yye,1285);mdb(1287,1,oue,e_b);_.Mb=function f_b(a){return T$b(this.a,JD(a,26))};var mQ=zeb(vye,zye,1287);mdb(1288,1,{},g_b);_.Kb=function h_b(a){return new gCb(null,new Wvb(swd(JD(a,85)),16))};var nQ=zeb(vye,'ElkGraphImporter/lambda$5$Type',1288);mdb(1290,1,oue,i_b);_.Mb=function j_b(a){return U$b(this.a,JD(a,26))};var oQ=zeb(vye,'ElkGraphImporter/lambda$7$Type',1290);mdb(1291,1,oue,k_b);_.Mb=function l_b(a){return V$b(JD(a,85))};var pQ=zeb(vye,'ElkGraphImporter/lambda$8$Type',1291);mdb(1261,1,{},t_b);var m_b;var vQ=zeb(vye,'ElkGraphLayoutTransferrer',1261);mdb(1262,1,oue,w_b);_.Mb=function x_b(a){return u_b(this.a,JD(a,17))};var rQ=zeb(vye,'ElkGraphLayoutTransferrer/lambda$0$Type',1262);mdb(1263,1,Rte,y_b);_.Ad=function z_b(a){n_b();Ylb(this.a,JD(a,17))};var sQ=zeb(vye,'ElkGraphLayoutTransferrer/lambda$1$Type',1263);mdb(1264,1,oue,A_b);_.Mb=function B_b(a){return v_b(this.a,JD(a,17))};var tQ=zeb(vye,'ElkGraphLayoutTransferrer/lambda$2$Type',1264);mdb(1265,1,Rte,C_b);_.Ad=function D_b(a){n_b();Ylb(this.a,JD(a,17))};var uQ=zeb(vye,'ElkGraphLayoutTransferrer/lambda$3$Type',1265);mdb(806,1,{},M_b);var wQ=zeb(Aye,'BiLinkedHashMultiMap',806);mdb(1511,1,hye,P_b);_.If=function Q_b(a,b){N_b(JD(a,37),b)};var zQ=zeb(Aye,'CommentNodeMarginCalculator',1511);mdb(1512,1,{},R_b);_.Kb=function S_b(a){return new gCb(null,new Wvb(JD(a,25).a,16))};var xQ=zeb(Aye,'CommentNodeMarginCalculator/lambda$0$Type',1512);mdb(1513,1,Rte,T_b);_.Ad=function U_b(a){O_b(JD(a,9))};var yQ=zeb(Aye,'CommentNodeMarginCalculator/lambda$1$Type',1513);mdb(1514,1,hye,Y_b);_.If=function Z_b(a,b){W_b(JD(a,37),b)};var AQ=zeb(Aye,'CommentPostprocessor',1514);mdb(1515,1,hye,b0b);_.If=function c0b(a,b){$_b(JD(a,37),b)};var BQ=zeb(Aye,'CommentPreprocessor',1515);mdb(1516,1,hye,e0b);_.If=function f0b(a,b){d0b(JD(a,37),b)};var CQ=zeb(Aye,'ConstraintsPostprocessor',1516);mdb(1517,1,hye,m0b);_.If=function n0b(a,b){k0b(JD(a,37),b)};var DQ=zeb(Aye,'EdgeAndLayerConstraintEdgeReverser',1517);mdb(1518,1,hye,q0b);_.If=function s0b(a,b){o0b(JD(a,37),b)};var HQ=zeb(Aye,'EndLabelPostprocessor',1518);mdb(1519,1,{},t0b);_.Kb=function u0b(a){return new gCb(null,new Wvb(JD(a,25).a,16))};var EQ=zeb(Aye,'EndLabelPostprocessor/lambda$0$Type',1519);mdb(1520,1,oue,v0b);_.Mb=function w0b(a){return r0b(JD(a,9))};var FQ=zeb(Aye,'EndLabelPostprocessor/lambda$1$Type',1520);mdb(1521,1,Rte,x0b);_.Ad=function y0b(a){p0b(JD(a,9))};var GQ=zeb(Aye,'EndLabelPostprocessor/lambda$2$Type',1521);mdb(1522,1,hye,J0b);_.If=function M0b(a,b){F0b(JD(a,37),b)};var OQ=zeb(Aye,'EndLabelPreprocessor',1522);mdb(1523,1,{},N0b);_.Kb=function O0b(a){return new gCb(null,new Wvb(JD(a,25).a,16))};var IQ=zeb(Aye,'EndLabelPreprocessor/lambda$0$Type',1523);mdb(1524,1,Rte,P0b);_.Ad=function Q0b(a){B0b(this.a,this.b,this.c,JD(a,9))};_.a=0;_.b=0;_.c=false;var JQ=zeb(Aye,'EndLabelPreprocessor/lambda$1$Type',1524);mdb(1525,1,oue,R0b);_.Mb=function S0b(a){return XD(lNb(JD(a,70),($xc(),Uvc)))===XD((Kjd(),Jjd))};var KQ=zeb(Aye,'EndLabelPreprocessor/lambda$2$Type',1525);mdb(1526,1,Rte,T0b);_.Ad=function U0b(a){Qtb(this.a,JD(a,70))};var LQ=zeb(Aye,'EndLabelPreprocessor/lambda$3$Type',1526);mdb(1527,1,oue,V0b);_.Mb=function W0b(a){return XD(lNb(JD(a,70),($xc(),Uvc)))===XD((Kjd(),Ijd))};var MQ=zeb(Aye,'EndLabelPreprocessor/lambda$4$Type',1527);mdb(1528,1,Rte,X0b);_.Ad=function Y0b(a){Qtb(this.a,JD(a,70))};var NQ=zeb(Aye,'EndLabelPreprocessor/lambda$5$Type',1528);mdb(1576,1,hye,f1b);_.If=function g1b(a,b){c1b(JD(a,37),b)};var Z0b;var WQ=zeb(Aye,'EndLabelSorter',1576);mdb(1577,1,fwe,i1b);_.Le=function j1b(a,b){return h1b(JD(a,455),JD(b,455))};_.Fb=function k1b(a){return this===a};_.Me=function l1b(){return new Kqb(this)};var PQ=zeb(Aye,'EndLabelSorter/1',1577);mdb(455,1,{455:1},m1b);var QQ=zeb(Aye,'EndLabelSorter/LabelGroup',455);mdb(1578,1,{},n1b);_.Kb=function o1b(a){return $0b(),new gCb(null,new Wvb(JD(a,25).a,16))};var RQ=zeb(Aye,'EndLabelSorter/lambda$0$Type',1578);mdb(1579,1,oue,p1b);_.Mb=function q1b(a){return $0b(),JD(a,9).k==(UYb(),RYb)};var SQ=zeb(Aye,'EndLabelSorter/lambda$1$Type',1579);mdb(1580,1,Rte,r1b);_.Ad=function s1b(a){d1b(JD(a,9))};var TQ=zeb(Aye,'EndLabelSorter/lambda$2$Type',1580);mdb(1581,1,oue,t1b);_.Mb=function u1b(a){return $0b(),XD(lNb(JD(a,70),($xc(),Uvc)))===XD((Kjd(),Ijd))};var UQ=zeb(Aye,'EndLabelSorter/lambda$3$Type',1581);mdb(1582,1,oue,v1b);_.Mb=function w1b(a){return $0b(),XD(lNb(JD(a,70),($xc(),Uvc)))===XD((Kjd(),Jjd))};var VQ=zeb(Aye,'EndLabelSorter/lambda$4$Type',1582);mdb(1529,1,hye,I1b);_.If=function J1b(a,b){G1b(this,JD(a,37))};_.b=0;_.c=0;var bR=zeb(Aye,'FinalSplineBendpointsCalculator',1529);mdb(1530,1,{},K1b);_.Kb=function L1b(a){return new gCb(null,new Wvb(JD(a,25).a,16))};var XQ=zeb(Aye,'FinalSplineBendpointsCalculator/lambda$0$Type',1530);mdb(1531,1,{},M1b);_.Kb=function N1b(a){return new gCb(null,new Xvb(new Yr(Dr(BYb(JD(a,9)).a.Jc(),new Dl))))};var YQ=zeb(Aye,'FinalSplineBendpointsCalculator/lambda$1$Type',1531);mdb(1532,1,oue,O1b);_.Mb=function P1b(a){return !vWb(JD(a,17))};var ZQ=zeb(Aye,'FinalSplineBendpointsCalculator/lambda$2$Type',1532);mdb(1533,1,oue,Q1b);_.Mb=function R1b(a){return mNb(JD(a,17),(Krc(),Brc))};var $Q=zeb(Aye,'FinalSplineBendpointsCalculator/lambda$3$Type',1533);mdb(1534,1,Rte,S1b);_.Ad=function T1b(a){z1b(this.a,JD(a,132))};var _Q=zeb(Aye,'FinalSplineBendpointsCalculator/lambda$4$Type',1534);mdb(1535,1,Rte,U1b);_.Ad=function V1b(a){Lnb(JD(a,17).a)};var aR=zeb(Aye,'FinalSplineBendpointsCalculator/lambda$5$Type',1535);mdb(790,1,hye,r2b);_.If=function s2b(a,b){i2b(this,JD(a,37),b)};var dR=zeb(Aye,'GraphTransformer',790);mdb(502,23,{3:1,35:1,23:1,502:1},w2b);var t2b,u2b;var cR=Aeb(Aye,'GraphTransformer/Mode',502,MI,y2b,x2b);var z2b;mdb(1536,1,hye,F2b);_.If=function G2b(a,b){C2b(JD(a,37),b)};var eR=zeb(Aye,'HierarchicalNodeResizingProcessor',1536);mdb(1537,1,hye,N2b);_.If=function O2b(a,b){J2b(JD(a,37),b)};var gR=zeb(Aye,'HierarchicalPortConstraintProcessor',1537);mdb(1538,1,fwe,Q2b);_.Le=function R2b(a,b){return P2b(JD(a,9),JD(b,9))};_.Fb=function S2b(a){return this===a};_.Me=function T2b(){return new Kqb(this)};var fR=zeb(Aye,'HierarchicalPortConstraintProcessor/NodeComparator',1538);mdb(1539,1,hye,W2b);_.If=function X2b(a,b){U2b(JD(a,37),b)};var hR=zeb(Aye,'HierarchicalPortDummySizeProcessor',1539);mdb(1540,1,hye,i3b);_.If=function j3b(a,b){b3b(this,JD(a,37),b)};_.a=0;var kR=zeb(Aye,'HierarchicalPortOrthogonalEdgeRouter',1540);mdb(1541,1,fwe,l3b);_.Le=function m3b(a,b){return k3b(JD(a,9),JD(b,9))};_.Fb=function n3b(a){return this===a};_.Me=function o3b(){return new Kqb(this)};var iR=zeb(Aye,'HierarchicalPortOrthogonalEdgeRouter/1',1541);mdb(1542,1,fwe,q3b);_.Le=function r3b(a,b){return p3b(JD(a,9),JD(b,9))};_.Fb=function s3b(a){return this===a};_.Me=function t3b(){return new Kqb(this)};var jR=zeb(Aye,'HierarchicalPortOrthogonalEdgeRouter/2',1542);mdb(1543,1,hye,w3b);_.If=function x3b(a,b){v3b(JD(a,37),b)};var lR=zeb(Aye,'HierarchicalPortPositionProcessor',1543);mdb(1544,1,hye,G3b);_.If=function H3b(a,b){F3b(this,JD(a,37))};_.a=0;_.c=0;var y3b,z3b;var pR=zeb(Aye,'HighDegreeNodeLayeringProcessor',1544);mdb(566,1,{566:1},I3b);_.b=-1;_.d=-1;var mR=zeb(Aye,'HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation',566);mdb(1545,1,{},J3b);_.Kb=function K3b(a){return A3b(),yYb(JD(a,9))};_.Fb=function L3b(a){return this===a};var nR=zeb(Aye,'HighDegreeNodeLayeringProcessor/lambda$0$Type',1545);mdb(1546,1,{},M3b);_.Kb=function N3b(a){return A3b(),BYb(JD(a,9))};_.Fb=function O3b(a){return this===a};var oR=zeb(Aye,'HighDegreeNodeLayeringProcessor/lambda$1$Type',1546);mdb(1552,1,hye,U3b);_.If=function V3b(a,b){T3b(this,JD(a,37),b)};var uR=zeb(Aye,'HyperedgeDummyMerger',1552);mdb(791,1,{},W3b);_.a=false;_.b=false;_.c=false;var qR=zeb(Aye,'HyperedgeDummyMerger/MergeState',791);mdb(1553,1,{},X3b);_.Kb=function Y3b(a){return new gCb(null,new Wvb(JD(a,25).a,16))};var rR=zeb(Aye,'HyperedgeDummyMerger/lambda$0$Type',1553);mdb(1554,1,{},Z3b);_.Kb=function $3b(a){return new gCb(null,new Wvb(JD(a,9).j,16))};var sR=zeb(Aye,'HyperedgeDummyMerger/lambda$1$Type',1554);mdb(1555,1,Rte,_3b);_.Ad=function a4b(a){JD(a,12).p=-1};var tR=zeb(Aye,'HyperedgeDummyMerger/lambda$2$Type',1555);mdb(1556,1,hye,d4b);_.If=function e4b(a,b){c4b(JD(a,37),b)};var vR=zeb(Aye,'HypernodesProcessor',1556);mdb(1557,1,hye,g4b);_.If=function h4b(a,b){f4b(JD(a,37),b)};var wR=zeb(Aye,'InLayerConstraintProcessor',1557);mdb(1558,1,hye,j4b);_.If=function k4b(a,b){i4b(JD(a,37),b)};var xR=zeb(Aye,'InnermostNodeMarginCalculator',1558);mdb(1559,1,hye,o4b);_.If=function t4b(a,b){n4b(this,JD(a,37))};_.a=pve;_.b=pve;_.c=ove;_.d=ove;var ER=zeb(Aye,'InteractiveExternalPortPositioner',1559);mdb(1560,1,{},u4b);_.Kb=function v4b(a){return JD(a,17).d.i};_.Fb=function w4b(a){return this===a};var yR=zeb(Aye,'InteractiveExternalPortPositioner/lambda$0$Type',1560);mdb(1561,1,{},x4b);_.Kb=function y4b(a){return p4b(this.a,MD(a))};_.Fb=function z4b(a){return this===a};var zR=zeb(Aye,'InteractiveExternalPortPositioner/lambda$1$Type',1561);mdb(1562,1,{},A4b);_.Kb=function B4b(a){return JD(a,17).c.i};_.Fb=function C4b(a){return this===a};var AR=zeb(Aye,'InteractiveExternalPortPositioner/lambda$2$Type',1562);mdb(1563,1,{},D4b);_.Kb=function E4b(a){return q4b(this.a,MD(a))};_.Fb=function F4b(a){return this===a};var BR=zeb(Aye,'InteractiveExternalPortPositioner/lambda$3$Type',1563);mdb(1564,1,{},G4b);_.Kb=function H4b(a){return r4b(this.a,MD(a))};_.Fb=function I4b(a){return this===a};var CR=zeb(Aye,'InteractiveExternalPortPositioner/lambda$4$Type',1564);mdb(1565,1,{},J4b);_.Kb=function K4b(a){return s4b(this.a,MD(a))};_.Fb=function L4b(a){return this===a};var DR=zeb(Aye,'InteractiveExternalPortPositioner/lambda$5$Type',1565);mdb(79,23,{3:1,35:1,23:1,79:1,196:1},R5b);_.bg=function S5b(){switch(this.g){case 15:return new Zlc;case 22:return new tmc;case 48:return new Cmc;case 29:case 36:return new s7b;case 33:return new P_b;case 43:return new Y_b;case 1:return new b0b;case 42:return new e0b;case 57:return new r2b((v2b(),u2b));case 0:return new r2b((v2b(),t2b));case 2:return new m0b;case 55:return new q0b;case 34:return new J0b;case 52:return new I1b;case 56:return new F2b;case 13:return new N2b;case 39:return new W2b;case 45:return new i3b;case 41:return new w3b;case 9:return new G3b;case 50:return new Ndc;case 38:return new U3b;case 44:return new d4b;case 28:return new g4b;case 31:return new j4b;case 3:return new o4b;case 18:return new _5b;case 30:return new f6b;case 5:return new s6b;case 51:return new B6b;case 35:return new Y6b;case 37:return new G7b;case 53:return new f1b;case 11:return new O7b;case 7:return new Y7b;case 40:return new k8b;case 46:return new n8b;case 16:return new r8b;case 10:return new I8b;case 49:return new i9b;case 21:return new q9b;case 23:return new KGc((XGc(),VGc));case 8:return new z9b;case 12:return new H9b;case 4:return new N9b;case 19:return new lac;case 17:return new Jac;case 54:return new Mac;case 6:return new Bbc;case 25:return new Qac;case 26:return new Plc;case 47:return new fbc;case 32:return new Mbc;case 14:return new Zbc;case 27:return new inc;case 20:return new mcc;case 24:return new KGc((XGc(),WGc));default:throw Icb(new hfb(Eye+(this.f!=null?this.f:''+this.g)));}};var M4b,N4b,O4b,P4b,Q4b,R4b,S4b,T4b,U4b,V4b,W4b,X4b,Y4b,Z4b,$4b,_4b,a5b,b5b,c5b,d5b,e5b,f5b,g5b,h5b,i5b,j5b,k5b,l5b,m5b,n5b,o5b,p5b,q5b,r5b,s5b,t5b,u5b,v5b,w5b,x5b,y5b,z5b,A5b,B5b,C5b,D5b,E5b,F5b,G5b,H5b,I5b,J5b,K5b,L5b,M5b,N5b,O5b,P5b;var FR=Aeb(Aye,Fye,79,MI,U5b,T5b);var V5b;mdb(1566,1,hye,_5b);_.If=function a6b(a,b){Z5b(JD(a,37),b)};var GR=zeb(Aye,'InvertedPortProcessor',1566);mdb(1567,1,hye,f6b);_.If=function g6b(a,b){e6b(JD(a,37),b)};var KR=zeb(Aye,'LabelAndNodeSizeProcessor',1567);mdb(1568,1,oue,h6b);_.Mb=function i6b(a){return JD(a,9).k==(UYb(),RYb)};var HR=zeb(Aye,'LabelAndNodeSizeProcessor/lambda$0$Type',1568);mdb(1569,1,oue,j6b);_.Mb=function k6b(a){return JD(a,9).k==(UYb(),NYb)};var IR=zeb(Aye,'LabelAndNodeSizeProcessor/lambda$1$Type',1569);mdb(1570,1,Rte,l6b);_.Ad=function m6b(a){c6b(this.b,this.a,this.c,JD(a,9))};_.a=false;_.c=false;var JR=zeb(Aye,'LabelAndNodeSizeProcessor/lambda$2$Type',1570);mdb(1571,1,hye,s6b);_.If=function t6b(a,b){q6b(JD(a,37),b)};var n6b;var MR=zeb(Aye,'LabelDummyInserter',1571);mdb(1572,1,xwe,u6b);_.Lb=function v6b(a){return XD(lNb(JD(a,70),($xc(),Uvc)))===XD((Kjd(),Hjd))};_.Fb=function w6b(a){return this===a};_.Mb=function x6b(a){return XD(lNb(JD(a,70),($xc(),Uvc)))===XD((Kjd(),Hjd))};var LR=zeb(Aye,'LabelDummyInserter/1',1572);mdb(1573,1,hye,B6b);_.If=function C6b(a,b){A6b(JD(a,37),b)};var OR=zeb(Aye,'LabelDummyRemover',1573);mdb(1574,1,oue,D6b);_.Mb=function E6b(a){return Odb(LD(lNb(JD(a,70),($xc(),Tvc))))};var NR=zeb(Aye,'LabelDummyRemover/lambda$0$Type',1574);mdb(1332,1,hye,Y6b);_.If=function a7b(a,b){U6b(this,JD(a,37),b)};_.a=null;var F6b;var VR=zeb(Aye,'LabelDummySwitcher',1332);mdb(294,1,{294:1},e7b);_.c=0;_.d=null;_.f=0;var PR=zeb(Aye,'LabelDummySwitcher/LabelDummyInfo',294);mdb(1333,1,{},f7b);_.Kb=function g7b(a){return G6b(),new gCb(null,new Wvb(JD(a,25).a,16))};var QR=zeb(Aye,'LabelDummySwitcher/lambda$0$Type',1333);mdb(1334,1,oue,h7b);_.Mb=function i7b(a){return G6b(),JD(a,9).k==(UYb(),OYb)};var RR=zeb(Aye,'LabelDummySwitcher/lambda$1$Type',1334);mdb(1335,1,{},j7b);_.Kb=function k7b(a){return Z6b(this.a,JD(a,9))};var SR=zeb(Aye,'LabelDummySwitcher/lambda$2$Type',1335);mdb(1336,1,Rte,l7b);_.Ad=function m7b(a){$6b(this.a,JD(a,294))};var TR=zeb(Aye,'LabelDummySwitcher/lambda$3$Type',1336);mdb(1337,1,fwe,n7b);_.Le=function o7b(a,b){return _6b(JD(a,294),JD(b,294))};_.Fb=function p7b(a){return this===a};_.Me=function q7b(){return new Kqb(this)};var UR=zeb(Aye,'LabelDummySwitcher/lambda$4$Type',1337);mdb(789,1,hye,s7b);_.If=function t7b(a,b){r7b(JD(a,37),b)};var WR=zeb(Aye,'LabelManagementProcessor',789);mdb(1575,1,hye,G7b);_.If=function H7b(a,b){A7b(JD(a,37),b)};var XR=zeb(Aye,'LabelSideSelector',1575);mdb(1583,1,hye,O7b);_.If=function P7b(a,b){K7b(JD(a,37),b)};var YR=zeb(Aye,'LayerConstraintPostprocessor',1583);mdb(1584,1,hye,Y7b);_.If=function Z7b(a,b){W7b(JD(a,37),b)};var Q7b;var $R=zeb(Aye,'LayerConstraintPreprocessor',1584);mdb(367,23,{3:1,35:1,23:1,367:1},e8b);var $7b,_7b,a8b,b8b;var ZR=Aeb(Aye,'LayerConstraintPreprocessor/HiddenNodeConnections',367,MI,g8b,f8b);var h8b;mdb(1585,1,hye,k8b);_.If=function l8b(a,b){j8b(JD(a,37),b)};var _R=zeb(Aye,'LayerSizeAndGraphHeightCalculator',1585);mdb(1586,1,hye,n8b);_.If=function p8b(a,b){m8b(JD(a,37),b)};var aS=zeb(Aye,'LongEdgeJoiner',1586);mdb(1587,1,hye,r8b);_.If=function t8b(a,b){q8b(JD(a,37),b)};var bS=zeb(Aye,'LongEdgeSplitter',1587);mdb(1588,1,hye,I8b);_.If=function L8b(a,b){C8b(this,JD(a,37),b)};_.e=0;_.f=0;_.j=0;_.k=0;_.n=0;_.o=0;var w8b,x8b;var hS=zeb(Aye,'NodePromotion',1588);mdb(1589,1,fwe,N8b);_.Le=function O8b(a,b){return M8b(JD(a,9),JD(b,9))};_.Fb=function P8b(a){return this===a};_.Me=function Q8b(){return new Kqb(this)};var cS=zeb(Aye,'NodePromotion/1',1589);mdb(1590,1,fwe,S8b);_.Le=function T8b(a,b){return R8b(JD(a,9),JD(b,9))};_.Fb=function U8b(a){return this===a};_.Me=function V8b(){return new Kqb(this)};var dS=zeb(Aye,'NodePromotion/2',1590);mdb(1591,1,{},W8b);_.Kb=function X8b(a){return JD(a,49),y8b(),Ndb(),true};_.Fb=function Y8b(a){return this===a};var eS=zeb(Aye,'NodePromotion/lambda$0$Type',1591);mdb(1592,1,{},Z8b);_.Kb=function $8b(a){return J8b(this.a,JD(a,49))};_.Fb=function _8b(a){return this===a};_.a=0;var fS=zeb(Aye,'NodePromotion/lambda$1$Type',1592);mdb(1593,1,{},a9b);_.Kb=function b9b(a){return K8b(this.a,JD(a,49))};_.Fb=function c9b(a){return this===a};_.a=0;var gS=zeb(Aye,'NodePromotion/lambda$2$Type',1593);mdb(1594,1,hye,i9b);_.If=function j9b(a,b){d9b(JD(a,37),b)};var iS=zeb(Aye,'NorthSouthPortPostprocessor',1594);mdb(1595,1,hye,q9b);_.If=function s9b(a,b){o9b(JD(a,37),b)};var kS=zeb(Aye,'NorthSouthPortPreprocessor',1595);mdb(1596,1,fwe,t9b);_.Le=function u9b(a,b){return r9b(JD(a,12),JD(b,12))};_.Fb=function v9b(a){return this===a};_.Me=function w9b(){return new Kqb(this)};var jS=zeb(Aye,'NorthSouthPortPreprocessor/lambda$0$Type',1596);mdb(1597,1,hye,z9b);_.If=function B9b(a,b){y9b(JD(a,37),b)};var nS=zeb(Aye,'PartitionMidprocessor',1597);mdb(1598,1,oue,C9b);_.Mb=function D9b(a){return mNb(JD(a,9),($xc(),Vwc))};var lS=zeb(Aye,'PartitionMidprocessor/lambda$0$Type',1598);mdb(1599,1,Rte,E9b);_.Ad=function F9b(a){A9b(this.a,JD(a,9))};var mS=zeb(Aye,'PartitionMidprocessor/lambda$1$Type',1599);mdb(1600,1,hye,H9b);_.If=function I9b(a,b){G9b(JD(a,37),b)};var oS=zeb(Aye,'PartitionPostprocessor',1600);mdb(1601,1,hye,N9b);_.If=function P9b(a,b){L9b(JD(a,37),b)};var vS=zeb(Aye,'PartitionPreprocessor',1601);mdb(1602,1,oue,Q9b);_.Mb=function R9b(a){return mNb(JD(a,9),($xc(),Vwc))};var pS=zeb(Aye,'PartitionPreprocessor/lambda$0$Type',1602);mdb(1603,1,oue,S9b);_.Mb=function T9b(a){return mNb(JD(a,9),($xc(),Vwc))};var qS=zeb(Aye,'PartitionPreprocessor/lambda$1$Type',1603);mdb(1604,1,{},U9b);_.Kb=function V9b(a){return new gCb(null,new Xvb(new Yr(Dr(BYb(JD(a,9)).a.Jc(),new Dl))))};var rS=zeb(Aye,'PartitionPreprocessor/lambda$2$Type',1604);mdb(1605,1,oue,W9b);_.Mb=function X9b(a){return J9b(this.a,JD(a,17))};var sS=zeb(Aye,'PartitionPreprocessor/lambda$3$Type',1605);mdb(1606,1,Rte,Y9b);_.Ad=function Z9b(a){M9b(JD(a,17))};var tS=zeb(Aye,'PartitionPreprocessor/lambda$4$Type',1606);mdb(1607,1,oue,$9b);_.Mb=function _9b(a){return O9b(this.a,JD(a,9))};_.a=0;var uS=zeb(Aye,'PartitionPreprocessor/lambda$5$Type',1607);mdb(1608,1,hye,lac);_.If=function pac(a,b){iac(JD(a,37),b)};var aac,bac,cac,dac,eac,fac;var BS=zeb(Aye,'PortListSorter',1608);mdb(1609,1,{},rac);_.Kb=function sac(a){return gac(),JD(a,12).e};var wS=zeb(Aye,'PortListSorter/lambda$0$Type',1609);mdb(1610,1,{},tac);_.Kb=function uac(a){return gac(),JD(a,12).g};var xS=zeb(Aye,'PortListSorter/lambda$1$Type',1610);mdb(1611,1,fwe,vac);_.Le=function wac(a,b){return mac(JD(a,12),JD(b,12))};_.Fb=function xac(a){return this===a};_.Me=function yac(){return new Kqb(this)};var yS=zeb(Aye,'PortListSorter/lambda$2$Type',1611);mdb(1612,1,fwe,zac);_.Le=function Aac(a,b){return nac(JD(a,12),JD(b,12))};_.Fb=function Bac(a){return this===a};_.Me=function Cac(){return new Kqb(this)};var zS=zeb(Aye,'PortListSorter/lambda$3$Type',1612);mdb(1613,1,fwe,Dac);_.Le=function Eac(a,b){return oac(JD(a,12),JD(b,12))};_.Fb=function Fac(a){return this===a};_.Me=function Gac(){return new Kqb(this)};var AS=zeb(Aye,'PortListSorter/lambda$4$Type',1613);mdb(1614,1,hye,Jac);_.If=function Kac(a,b){Hac(JD(a,37),b)};var CS=zeb(Aye,'PortSideProcessor',1614);mdb(1615,1,hye,Mac);_.If=function Nac(a,b){Lac(JD(a,37),b)};var DS=zeb(Aye,'ReversedEdgeRestorer',1615);mdb(1620,1,hye,Qac);_.If=function Rac(a,b){Oac(this,JD(a,37),b)};var KS=zeb(Aye,'SelfLoopPortRestorer',1620);mdb(1621,1,{},Sac);_.Kb=function Tac(a){return new gCb(null,new Wvb(JD(a,25).a,16))};var ES=zeb(Aye,'SelfLoopPortRestorer/lambda$0$Type',1621);mdb(1622,1,oue,Uac);_.Mb=function Vac(a){return JD(a,9).k==(UYb(),RYb)};var FS=zeb(Aye,'SelfLoopPortRestorer/lambda$1$Type',1622);mdb(1623,1,oue,Wac);_.Mb=function Xac(a){return mNb(JD(a,9),(Krc(),xrc))};var GS=zeb(Aye,'SelfLoopPortRestorer/lambda$2$Type',1623);mdb(1624,1,{},Yac);_.Kb=function Zac(a){return JD(lNb(JD(a,9),(Krc(),xrc)),338)};var HS=zeb(Aye,'SelfLoopPortRestorer/lambda$3$Type',1624);mdb(1625,1,Rte,$ac);_.Ad=function _ac(a){Pac(this.a,JD(a,338))};var IS=zeb(Aye,'SelfLoopPortRestorer/lambda$4$Type',1625);mdb(792,1,Rte,abc);_.Ad=function bbc(a){Qgc(JD(a,107))};var JS=zeb(Aye,'SelfLoopPortRestorer/lambda$5$Type',792);mdb(1627,1,hye,fbc);_.If=function hbc(a,b){cbc(JD(a,37),b)};var TS=zeb(Aye,'SelfLoopPostProcessor',1627);mdb(1628,1,{},ibc);_.Kb=function jbc(a){return new gCb(null,new Wvb(JD(a,25).a,16))};var LS=zeb(Aye,'SelfLoopPostProcessor/lambda$0$Type',1628);mdb(1629,1,oue,kbc);_.Mb=function lbc(a){return JD(a,9).k==(UYb(),RYb)};var MS=zeb(Aye,'SelfLoopPostProcessor/lambda$1$Type',1629);mdb(1630,1,oue,mbc);_.Mb=function nbc(a){return mNb(JD(a,9),(Krc(),xrc))};var NS=zeb(Aye,'SelfLoopPostProcessor/lambda$2$Type',1630);mdb(1631,1,Rte,obc);_.Ad=function pbc(a){dbc(JD(a,9))};var OS=zeb(Aye,'SelfLoopPostProcessor/lambda$3$Type',1631);mdb(1632,1,{},qbc);_.Kb=function rbc(a){return new gCb(null,new Wvb(JD(a,107).f,1))};var PS=zeb(Aye,'SelfLoopPostProcessor/lambda$4$Type',1632);mdb(1633,1,Rte,sbc);_.Ad=function tbc(a){ebc(this.a,JD(a,341))};var QS=zeb(Aye,'SelfLoopPostProcessor/lambda$5$Type',1633);mdb(1634,1,oue,ubc);_.Mb=function vbc(a){return !!JD(a,107).i};var RS=zeb(Aye,'SelfLoopPostProcessor/lambda$6$Type',1634);mdb(1635,1,Rte,wbc);_.Ad=function xbc(a){gbc(this.a,JD(a,107))};var SS=zeb(Aye,'SelfLoopPostProcessor/lambda$7$Type',1635);mdb(1616,1,hye,Bbc);_.If=function Cbc(a,b){Abc(JD(a,37),b)};var XS=zeb(Aye,'SelfLoopPreProcessor',1616);mdb(1617,1,{},Dbc);_.Kb=function Ebc(a){return new gCb(null,new Wvb(JD(a,107).f,1))};var US=zeb(Aye,'SelfLoopPreProcessor/lambda$0$Type',1617);mdb(1618,1,{},Fbc);_.Kb=function Gbc(a){return JD(a,341).a};var VS=zeb(Aye,'SelfLoopPreProcessor/lambda$1$Type',1618);mdb(1619,1,Rte,Hbc);_.Ad=function Ibc(a){zbc(JD(a,17))};var WS=zeb(Aye,'SelfLoopPreProcessor/lambda$2$Type',1619);mdb(1636,1,hye,Mbc);_.If=function Nbc(a,b){Kbc(this,JD(a,37),b)};var bT=zeb(Aye,'SelfLoopRouter',1636);mdb(1637,1,{},Obc);_.Kb=function Pbc(a){return new gCb(null,new Wvb(JD(a,25).a,16))};var YS=zeb(Aye,'SelfLoopRouter/lambda$0$Type',1637);mdb(1638,1,oue,Qbc);_.Mb=function Rbc(a){return JD(a,9).k==(UYb(),RYb)};var ZS=zeb(Aye,'SelfLoopRouter/lambda$1$Type',1638);mdb(1639,1,oue,Sbc);_.Mb=function Tbc(a){return mNb(JD(a,9),(Krc(),xrc))};var $S=zeb(Aye,'SelfLoopRouter/lambda$2$Type',1639);mdb(1640,1,{},Ubc);_.Kb=function Vbc(a){return JD(lNb(JD(a,9),(Krc(),xrc)),338)};var _S=zeb(Aye,'SelfLoopRouter/lambda$3$Type',1640);mdb(1641,1,Rte,Wbc);_.Ad=function Xbc(a){Jbc(this.a,this.b,JD(a,338))};var aT=zeb(Aye,'SelfLoopRouter/lambda$4$Type',1641);mdb(1642,1,hye,Zbc);_.If=function acc(a,b){Ybc(JD(a,37),b)};var gT=zeb(Aye,'SemiInteractiveCrossMinProcessor',1642);mdb(1643,1,oue,bcc);_.Mb=function ccc(a){return JD(a,9).k==(UYb(),RYb)};var cT=zeb(Aye,'SemiInteractiveCrossMinProcessor/lambda$0$Type',1643);mdb(1644,1,oue,dcc);_.Mb=function ecc(a){return kNb(JD(a,9))._b(($xc(),ixc))};var dT=zeb(Aye,'SemiInteractiveCrossMinProcessor/lambda$1$Type',1644);mdb(1645,1,fwe,fcc);_.Le=function gcc(a,b){return $bc(JD(a,9),JD(b,9))};_.Fb=function hcc(a){return this===a};_.Me=function icc(){return new Kqb(this)};var eT=zeb(Aye,'SemiInteractiveCrossMinProcessor/lambda$2$Type',1645);mdb(1646,1,{},jcc);_.Te=function kcc(a,b){return _bc(JD(a,9),JD(b,9))};var fT=zeb(Aye,'SemiInteractiveCrossMinProcessor/lambda$3$Type',1646);mdb(1648,1,hye,mcc);_.If=function rcc(a,b){lcc(JD(a,37),b)};var jT=zeb(Aye,'SortByInputModelProcessor',1648);mdb(1649,1,oue,scc);_.Mb=function tcc(a){return JD(a,12).g.c.length!=0};var hT=zeb(Aye,'SortByInputModelProcessor/lambda$0$Type',1649);mdb(1650,1,Rte,ucc);_.Ad=function vcc(a){pcc(this.a,JD(a,12))};var iT=zeb(Aye,'SortByInputModelProcessor/lambda$1$Type',1650);mdb(1729,804,{},Ecc);_.bf=function Fcc(a){var b,c,d,e;this.c=a;switch(this.a.g){case 2:b=new imb;VBb(SBb(new gCb(null,new Wvb(this.c.a.b,16)),new Gdc),new Idc(this,b));uFb(this,new Occ);_lb(b,new Scc);b.c.length=0;VBb(SBb(new gCb(null,new Wvb(this.c.a.b,16)),new Ucc),new Wcc(b));uFb(this,new $cc);_lb(b,new cdc);b.c.length=0;c=$ub(hBb(XBb(new gCb(null,new Wvb(this.c.a.b,16)),new edc(this))),new gdc);VBb(new gCb(null,new Wvb(this.c.a.a,16)),new kdc(c,b));uFb(this,new odc);_lb(b,new sdc);b.c.length=0;break;case 3:d=new imb;uFb(this,new Gcc);e=$ub(hBb(XBb(new gCb(null,new Wvb(this.c.a.b,16)),new Kcc(this))),new idc);VBb(SBb(new gCb(null,new Wvb(this.c.a.b,16)),new udc),new wdc(e,d));uFb(this,new Adc);_lb(d,new Edc);d.c.length=0;break;default:throw Icb(new obd);}};_.b=0;var IT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation',1729);mdb(1730,1,xwe,Gcc);_.Lb=function Hcc(a){return RD(JD(a,60).g,156)};_.Fb=function Icc(a){return this===a};_.Mb=function Jcc(a){return RD(JD(a,60).g,156)};var kT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$0$Type',1730);mdb(1731,1,{},Kcc);_.We=function Lcc(a){return ycc(this.a,JD(a,60))};var lT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$1$Type',1731);mdb(1739,1,pue,Mcc);_.be=function Ncc(){xcc(this.a,this.b,-1)};_.b=0;var mT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$10$Type',1739);mdb(1741,1,xwe,Occ);_.Lb=function Pcc(a){return RD(JD(a,60).g,156)};_.Fb=function Qcc(a){return this===a};_.Mb=function Rcc(a){return RD(JD(a,60).g,156)};var nT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$11$Type',1741);mdb(1742,1,Rte,Scc);_.Ad=function Tcc(a){JD(a,375).be()};var oT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$12$Type',1742);mdb(1743,1,oue,Ucc);_.Mb=function Vcc(a){return RD(JD(a,60).g,9)};var pT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$13$Type',1743);mdb(1745,1,Rte,Wcc);_.Ad=function Xcc(a){zcc(this.a,JD(a,60))};var qT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$14$Type',1745);mdb(1744,1,pue,Ycc);_.be=function Zcc(){xcc(this.b,this.a,-1)};_.a=0;var rT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$15$Type',1744);mdb(1746,1,xwe,$cc);_.Lb=function _cc(a){return RD(JD(a,60).g,9)};_.Fb=function adc(a){return this===a};_.Mb=function bdc(a){return RD(JD(a,60).g,9)};var sT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$16$Type',1746);mdb(1747,1,Rte,cdc);_.Ad=function ddc(a){JD(a,375).be()};var tT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$17$Type',1747);mdb(1748,1,{},edc);_.We=function fdc(a){return Acc(this.a,JD(a,60))};var uT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$18$Type',1748);mdb(1749,1,{},gdc);_.Ue=function hdc(){return 0};var vT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$19$Type',1749);mdb(1732,1,{},idc);_.Ue=function jdc(){return 0};var wT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$2$Type',1732);mdb(1751,1,Rte,kdc);_.Ad=function ldc(a){Bcc(this.a,this.b,JD(a,320))};_.a=0;var xT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$20$Type',1751);mdb(1750,1,pue,mdc);_.be=function ndc(){wcc(this.a,this.b,-1)};_.b=0;var yT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$21$Type',1750);mdb(1752,1,xwe,odc);_.Lb=function pdc(a){return JD(a,60),true};_.Fb=function qdc(a){return this===a};_.Mb=function rdc(a){return JD(a,60),true};var zT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$22$Type',1752);mdb(1753,1,Rte,sdc);_.Ad=function tdc(a){JD(a,375).be()};var AT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$23$Type',1753);mdb(1733,1,oue,udc);_.Mb=function vdc(a){return RD(JD(a,60).g,9)};var BT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$3$Type',1733);mdb(1735,1,Rte,wdc);_.Ad=function xdc(a){Ccc(this.a,this.b,JD(a,60))};_.a=0;var CT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$4$Type',1735);mdb(1734,1,pue,ydc);_.be=function zdc(){xcc(this.b,this.a,-1)};_.a=0;var DT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$5$Type',1734);mdb(1736,1,xwe,Adc);_.Lb=function Bdc(a){return JD(a,60),true};_.Fb=function Cdc(a){return this===a};_.Mb=function Ddc(a){return JD(a,60),true};var ET=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$6$Type',1736);mdb(1737,1,Rte,Edc);_.Ad=function Fdc(a){JD(a,375).be()};var FT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$7$Type',1737);mdb(1738,1,oue,Gdc);_.Mb=function Hdc(a){return RD(JD(a,60).g,156)};var GT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$8$Type',1738);mdb(1740,1,Rte,Idc);_.Ad=function Jdc(a){Dcc(this.a,this.b,JD(a,60))};var HT=zeb(Kye,'EdgeAwareScanlineConstraintCalculation/lambda$9$Type',1740);mdb(1547,1,hye,Ndc);_.If=function Sdc(a,b){Mdc(this,JD(a,37),b)};var Kdc;var MT=zeb(Kye,'HorizontalGraphCompactor',1547);mdb(1548,1,{},Tdc);_.df=function Udc(a,b){var c,d,e;if(Qdc(a,b)){return 0}c=Odc(a);d=Odc(b);if(!!c&&c.k==(UYb(),NYb)||!!d&&d.k==(UYb(),NYb)){return 0}e=JD(lNb(this.a.a,(Krc(),yrc)),316);return zAc(e,c?c.k:(UYb(),PYb),d?d.k:(UYb(),PYb))};_.ef=function Vdc(a,b){var c,d,e;if(Qdc(a,b)){return 1}c=Odc(a);d=Odc(b);e=JD(lNb(this.a.a,(Krc(),yrc)),316);return CAc(e,c?c.k:(UYb(),PYb),d?d.k:(UYb(),PYb))};var JT=zeb(Kye,'HorizontalGraphCompactor/1',1548);mdb(1549,1,{},Wdc);_.cf=function Xdc(a,b){return Ldc(),a.a.i==0};var KT=zeb(Kye,'HorizontalGraphCompactor/lambda$0$Type',1549);mdb(1550,1,{},Ydc);_.cf=function Zdc(a,b){return Rdc(this.a,a,b)};var LT=zeb(Kye,'HorizontalGraphCompactor/lambda$1$Type',1550);mdb(1696,1,{},sec);var $dc,_dc;var oU=zeb(Kye,'LGraphToCGraphTransformer',1696);mdb(1704,1,oue,Bec);_.Mb=function Cec(a){return a!=null};var NT=zeb(Kye,'LGraphToCGraphTransformer/0methodref$nonNull$Type',1704);mdb(1697,1,{},Dec);_.Kb=function Eec(a){return aec(),qdb(lNb(JD(JD(a,60).g,9),(Krc(),hrc)))};var OT=zeb(Kye,'LGraphToCGraphTransformer/lambda$0$Type',1697);mdb(1698,1,{},Fec);_.Kb=function Gec(a){return aec(),Lfc(JD(JD(a,60).g,156))};var PT=zeb(Kye,'LGraphToCGraphTransformer/lambda$1$Type',1698);mdb(1707,1,oue,Hec);_.Mb=function Iec(a){return aec(),RD(JD(a,60).g,9)};var QT=zeb(Kye,'LGraphToCGraphTransformer/lambda$10$Type',1707);mdb(1708,1,Rte,Jec);_.Ad=function Kec(a){tec(JD(a,60))};var RT=zeb(Kye,'LGraphToCGraphTransformer/lambda$11$Type',1708);mdb(1709,1,oue,Lec);_.Mb=function Mec(a){return aec(),RD(JD(a,60).g,156)};var ST=zeb(Kye,'LGraphToCGraphTransformer/lambda$12$Type',1709);mdb(1713,1,Rte,Nec);_.Ad=function Oec(a){uec(JD(a,60))};var TT=zeb(Kye,'LGraphToCGraphTransformer/lambda$13$Type',1713);mdb(1710,1,Rte,Pec);_.Ad=function Qec(a){vec(this.a,JD(a,8))};_.a=0;var UT=zeb(Kye,'LGraphToCGraphTransformer/lambda$14$Type',1710);mdb(1711,1,Rte,Rec);_.Ad=function Sec(a){wec(this.a,JD(a,119))};_.a=0;var VT=zeb(Kye,'LGraphToCGraphTransformer/lambda$15$Type',1711);mdb(1712,1,Rte,Tec);_.Ad=function Uec(a){xec(this.a,JD(a,8))};_.a=0;var WT=zeb(Kye,'LGraphToCGraphTransformer/lambda$16$Type',1712);mdb(1714,1,{},Vec);_.Kb=function Wec(a){return aec(),new gCb(null,new Xvb(new Yr(Dr(BYb(JD(a,9)).a.Jc(),new Dl))))};var XT=zeb(Kye,'LGraphToCGraphTransformer/lambda$17$Type',1714);mdb(1715,1,oue,Xec);_.Mb=function Yec(a){return aec(),vWb(JD(a,17))};var YT=zeb(Kye,'LGraphToCGraphTransformer/lambda$18$Type',1715);mdb(1716,1,Rte,Zec);_.Ad=function $ec(a){jec(this.a,JD(a,17))};var ZT=zeb(Kye,'LGraphToCGraphTransformer/lambda$19$Type',1716);mdb(1700,1,Rte,_ec);_.Ad=function afc(a){kec(this.a,JD(a,156))};var $T=zeb(Kye,'LGraphToCGraphTransformer/lambda$2$Type',1700);mdb(1717,1,{},bfc);_.Kb=function cfc(a){return aec(),new gCb(null,new Wvb(JD(a,25).a,16))};var _T=zeb(Kye,'LGraphToCGraphTransformer/lambda$20$Type',1717);mdb(1718,1,{},dfc);_.Kb=function efc(a){return aec(),new gCb(null,new Xvb(new Yr(Dr(BYb(JD(a,9)).a.Jc(),new Dl))))};var aU=zeb(Kye,'LGraphToCGraphTransformer/lambda$21$Type',1718);mdb(1719,1,{},ffc);_.Kb=function gfc(a){return aec(),JD(lNb(JD(a,17),(Krc(),Brc)),16)};var bU=zeb(Kye,'LGraphToCGraphTransformer/lambda$22$Type',1719);mdb(1720,1,oue,hfc);_.Mb=function ifc(a){return yec(JD(a,16))};var cU=zeb(Kye,'LGraphToCGraphTransformer/lambda$23$Type',1720);mdb(1721,1,Rte,jfc);_.Ad=function kfc(a){cec(this.a,JD(a,16))};var dU=zeb(Kye,'LGraphToCGraphTransformer/lambda$24$Type',1721);mdb(1722,1,{},lfc);_.Kb=function mfc(a){return aec(),new gCb(null,new Xvb(new Yr(Dr(BYb(JD(a,9)).a.Jc(),new Dl))))};var eU=zeb(Kye,'LGraphToCGraphTransformer/lambda$25$Type',1722);mdb(1723,1,oue,nfc);_.Mb=function ofc(a){return aec(),vWb(JD(a,17))};var fU=zeb(Kye,'LGraphToCGraphTransformer/lambda$26$Type',1723);mdb(1725,1,Rte,pfc);_.Ad=function qfc(a){lec(this.a,JD(a,17))};var gU=zeb(Kye,'LGraphToCGraphTransformer/lambda$27$Type',1725);mdb(1724,1,Rte,rfc);_.Ad=function sfc(a){zec(this.a,JD(a,70))};_.a=0;var hU=zeb(Kye,'LGraphToCGraphTransformer/lambda$28$Type',1724);mdb(1699,1,Rte,tfc);_.Ad=function ufc(a){mec(this.a,this.b,JD(a,156))};var iU=zeb(Kye,'LGraphToCGraphTransformer/lambda$3$Type',1699);mdb(1701,1,{},vfc);_.Kb=function wfc(a){return aec(),new gCb(null,new Wvb(JD(a,25).a,16))};var jU=zeb(Kye,'LGraphToCGraphTransformer/lambda$4$Type',1701);mdb(1702,1,{},xfc);_.Kb=function yfc(a){return aec(),new gCb(null,new Xvb(new Yr(Dr(BYb(JD(a,9)).a.Jc(),new Dl))))};var kU=zeb(Kye,'LGraphToCGraphTransformer/lambda$5$Type',1702);mdb(1703,1,{},zfc);_.Kb=function Afc(a){return aec(),JD(lNb(JD(a,17),(Krc(),Brc)),16)};var lU=zeb(Kye,'LGraphToCGraphTransformer/lambda$6$Type',1703);mdb(1705,1,Rte,Bfc);_.Ad=function Cfc(a){Aec(this.a,JD(a,16))};var mU=zeb(Kye,'LGraphToCGraphTransformer/lambda$8$Type',1705);mdb(1706,1,Rte,Dfc);_.Ad=function Efc(a){nec(this.a,this.b,JD(a,156))};var nU=zeb(Kye,'LGraphToCGraphTransformer/lambda$9$Type',1706);mdb(1695,1,{},Ifc);_.af=function Jfc(a){var b,c,d,e,f;this.a=a;this.d=new cGb;this.c=SC(bN,rte,124,this.a.a.a.c.length,0,1);this.b=0;for(c=new Hmb(this.a.a.a);c.a=p){Ylb(f,zfb(k));s=$wnd.Math.max(s,t[k-1]-l);h+=o;q+=t[k-1]-q;l=t[k-1];o=i[k]}o=$wnd.Math.max(o,i[k]);++k}h+=o}n=$wnd.Math.min(1/s,1/b.b/h);if(n>d){d=n;c=f}}return c};_.ng=function fnc(){return false};var NV=zeb(Sye,'MSDCutIndexHeuristic',803);mdb(1647,1,hye,inc);_.If=function jnc(a,b){hnc(JD(a,37),b)};var OV=zeb(Sye,'SingleEdgeGraphWrapper',1647);mdb(231,23,{3:1,35:1,23:1,231:1},unc);var nnc,onc,pnc,qnc,rnc,snc;var PV=Aeb(Tye,'CenterEdgeLabelPlacementStrategy',231,MI,wnc,vnc);var xnc;mdb(422,23,{3:1,35:1,23:1,422:1},Cnc);var znc,Anc;var QV=Aeb(Tye,'ConstraintCalculationStrategy',422,MI,Enc,Dnc);var Fnc;mdb(301,23,{3:1,35:1,23:1,301:1,188:1,196:1},Nnc);_.bg=function Pnc(){return Mnc(this)};_.og=function Onc(){return Mnc(this)};var Hnc,Inc,Jnc,Knc;var RV=Aeb(Tye,'CrossingMinimizationStrategy',301,MI,Rnc,Qnc);var Snc;mdb(350,23,{3:1,35:1,23:1,350:1},Ync);var Unc,Vnc,Wnc;var SV=Aeb(Tye,'CuttingStrategy',350,MI,$nc,Znc);var _nc;mdb(267,23,{3:1,35:1,23:1,267:1,188:1,196:1},moc);_.bg=function ooc(){return loc(this)};_.og=function noc(){return loc(this)};var boc,coc,doc,eoc,foc,goc,hoc,ioc,joc;var TV=Aeb(Tye,'CycleBreakingStrategy',267,MI,qoc,poc);var roc;mdb(419,23,{3:1,35:1,23:1,419:1},woc);var toc,uoc;var UV=Aeb(Tye,'DirectionCongruency',419,MI,yoc,xoc);var zoc;mdb(449,23,{3:1,35:1,23:1,449:1},Foc);var Boc,Coc,Doc;var VV=Aeb(Tye,'EdgeConstraint',449,MI,Hoc,Goc);var Ioc;mdb(284,23,{3:1,35:1,23:1,284:1},Soc);var Koc,Loc,Moc,Noc,Ooc,Poc;var WV=Aeb(Tye,'EdgeLabelSideSelection',284,MI,Uoc,Toc);var Voc;mdb(476,23,{3:1,35:1,23:1,476:1},$oc);var Xoc,Yoc;var XV=Aeb(Tye,'EdgeStraighteningStrategy',476,MI,apc,_oc);var bpc;mdb(282,23,{3:1,35:1,23:1,282:1},kpc);var dpc,epc,fpc,gpc,hpc,ipc;var YV=Aeb(Tye,'FixedAlignment',282,MI,mpc,lpc);var npc;mdb(283,23,{3:1,35:1,23:1,283:1},wpc);var ppc,qpc,rpc,spc,tpc,upc;var ZV=Aeb(Tye,'GraphCompactionStrategy',283,MI,ypc,xpc);var zpc;mdb(261,23,{3:1,35:1,23:1,261:1},Mpc);var Bpc,Cpc,Dpc,Epc,Fpc,Gpc,Hpc,Ipc,Jpc,Kpc;var $V=Aeb(Tye,'GraphProperties',261,MI,Opc,Npc);var Ppc;mdb(302,23,{3:1,35:1,23:1,302:1},Vpc);var Rpc,Spc,Tpc;var _V=Aeb(Tye,'GreedySwitchType',302,MI,Xpc,Wpc);var Ypc;mdb(329,23,{3:1,35:1,23:1,329:1},cqc);var $pc,_pc,aqc;var aW=Aeb(Tye,'GroupOrderStrategy',329,MI,eqc,dqc);var fqc;mdb(315,23,{3:1,35:1,23:1,315:1},lqc);var hqc,iqc,jqc;var bW=Aeb(Tye,'InLayerConstraint',315,MI,nqc,mqc);var oqc;mdb(420,23,{3:1,35:1,23:1,420:1},tqc);var qqc,rqc;var cW=Aeb(Tye,'InteractiveReferencePoint',420,MI,vqc,uqc);var wqc;var yqc,zqc,Aqc,Bqc,Cqc,Dqc,Eqc,Fqc,Gqc,Hqc,Iqc,Jqc,Kqc,Lqc,Mqc,Nqc,Oqc,Pqc,Qqc,Rqc,Sqc,Tqc,Uqc,Vqc,Wqc,Xqc,Yqc,Zqc,$qc,_qc,arc,brc,crc,drc,erc,frc,grc,hrc,irc,jrc,krc,lrc,mrc,nrc,orc,prc,qrc,rrc,trc,urc,vrc,wrc,xrc,yrc,zrc,Arc,Brc,Crc,Drc,Erc,Frc,Grc,Hrc,Irc,Jrc;mdb(165,23,{3:1,35:1,23:1,165:1},Rrc);var Lrc,Mrc,Nrc,Orc,Prc;var dW=Aeb(Tye,'LayerConstraint',165,MI,Trc,Src);var Urc;mdb(423,23,{3:1,35:1,23:1,423:1},Zrc);var Wrc,Xrc;var eW=Aeb(Tye,'LayerUnzippingStrategy',423,MI,_rc,$rc);var asc;mdb(843,1,lxe,dvc);_.tf=function evc(a){mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,$ye),''),'Direction Congruency'),'Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other.'),_sc),(Ued(),Oed)),UV),Crb((Ged(),Eed)))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,_ye),''),'Feedback Edges'),'Whether feedback edges should be highlighted by routing around the nodes.'),(Ndb(),false)),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,aze),''),'Interactive Reference Point'),'Determines which point of a node is considered by interactive layout phases.'),wtc),Oed),cW),Crb(Eed))));hdd(a,aze,ize,ytc);hdd(a,aze,sze,xtc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,bze),''),'Merge Edges'),'Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,cze),''),'Merge Hierarchy-Crossing Edges'),'If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port.'),true),Med),GI),Crb(Eed))));mdd(a,new ied(ved(yed(xed(zed(red(sed(wed(ted(ued(new Aed,dze),''),'Allow Non-Flow Ports To Switch Sides'),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),false),Med),GI),Crb(Fed)),WC(OC(hJ,1),Ote,2,6,['org.eclipse.elk.layered.northOrSouthPort']))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,eze),''),'Port Sorting Strategy'),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),quc),Oed),pW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,fze),''),'Thoroughness'),'How much effort should be spent to produce a nice layout.'),zfb(7)),Qed),UI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,gze),''),'Add Unnecessary Bendpoints'),'Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,hze),''),'Generate Position and Layer IDs'),'If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,ize),'cycleBreaking'),'Cycle Breaking Strategy'),'Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right).'),Zsc),Oed),TV),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,jze),GAe),'Node Layering Strategy'),'Strategy for node layering.'),Ntc),Oed),jW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,kze),GAe),'Layer Constraint'),'Determines a constraint on the placement of the node regarding the layering.'),Dtc),Oed),dW),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,lze),GAe),'Layer Choice Constraint'),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),null),Qed),UI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,mze),GAe),'Layer ID'),'Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set.'),zfb(-1)),Qed),UI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,nze),HAe),'Upper Bound On Width [MinWidth Layerer]'),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),zfb(4)),Qed),UI),Crb(Eed))));hdd(a,nze,jze,Gtc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,oze),HAe),'Upper Layer Estimation Scaling Factor [MinWidth Layerer]'),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),zfb(2)),Qed),UI),Crb(Eed))));hdd(a,oze,jze,Itc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,pze),IAe),'Node Promotion Strategy'),'Reduces number of dummy nodes after layering phase (if possible).'),Ltc),Oed),nW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,qze),IAe),'Max Node Promotion Iterations'),'Limits the number of iterations for node promotion.'),zfb(0)),Qed),UI),Crb(Eed))));hdd(a,qze,pze,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,rze),'layering.coffmanGraham'),'Layer Bound'),'The maximum number of nodes allowed per layer.'),zfb(lte)),Qed),UI),Crb(Eed))));hdd(a,rze,jze,Atc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,sze),JAe),'Crossing Minimization Strategy'),'Strategy for crossing minimization.'),Xsc),Oed),RV),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,tze),JAe),'Force Node Model Order'),'The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,uze),JAe),'Hierarchical Sweepiness'),'How likely it is to use cross-hierarchy (1) vs bottom-up (-1).'),0.1),Ned),LI),Crb(Eed))));hdd(a,uze,KAe,Psc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,vze),JAe),'Semi-Interactive Crossing Minimization'),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),false),Med),GI),Crb(Eed))));hdd(a,vze,sze,Vsc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,wze),JAe),'In Layer Predecessor of'),"Allows to set a constraint which specifies of which node the current node is the predecessor. If set to 's' then the node is the predecessor of 's' and is in the same layer"),null),Sed),hJ),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,xze),JAe),'In Layer Successor of'),"Allows to set a constraint which specifies of which node the current node is the successor. If set to 's' then the node is the successor of 's' and is in the same layer"),null),Sed),hJ),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,yze),JAe),'Position Choice Constraint'),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),null),Qed),UI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,zze),JAe),'Position ID'),'Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set.'),zfb(-1)),Qed),UI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Aze),LAe),'Greedy Switch Activation Threshold'),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),zfb(40)),Qed),UI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Bze),LAe),'Greedy Switch Crossing Minimization'),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),Msc),Oed),_V),Crb(Eed))));hdd(a,Bze,sze,Nsc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Cze),'crossingMinimization.greedySwitchHierarchical'),'Greedy Switch Crossing Minimization (hierarchical)'),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),Isc),Oed),_V),Crb(Eed))));hdd(a,Cze,sze,Jsc);hdd(a,Cze,KAe,Ksc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Dze),MAe),'Node Placement Strategy'),'Strategy for node placement.'),ouc),Oed),mW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,Eze),MAe),'Favor Straight Edges Over Balancing'),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),Med),GI),Crb(Eed))));hdd(a,Eze,Dze,euc);hdd(a,Eze,Dze,fuc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Fze),NAe),'BK Edge Straightening'),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),$tc),Oed),XV),Crb(Eed))));hdd(a,Fze,Dze,_tc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Gze),NAe),'BK Fixed Alignment'),'Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four.'),buc),Oed),YV),Crb(Eed))));hdd(a,Gze,Dze,cuc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Hze),'nodePlacement.linearSegments'),'Linear Segments Deflection Dampening'),'Dampens the movement of nodes to keep the diagram from getting too large.'),0.3),Ned),LI),Crb(Eed))));hdd(a,Hze,Dze,huc);mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,Ize),'nodePlacement.networkSimplex'),'Node Flexibility'),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),Oed),lW),Crb(Ded))));hdd(a,Ize,Dze,muc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Jze),'nodePlacement.networkSimplex.nodeFlexibility'),'Node Flexibility Default'),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),kuc),Oed),lW),Crb(Eed))));hdd(a,Jze,Dze,luc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Kze),OAe),'Self-Loop Distribution'),'Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE.'),htc),Oed),rW),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Lze),OAe),'Self-Loop Ordering'),'Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE.'),jtc),Oed),sW),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Mze),'edgeRouting.splines'),'Spline Routing Mode'),'Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes.'),ltc),Oed),uW),Crb(Eed))));hdd(a,Mze,PAe,mtc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Nze),'edgeRouting.splines.sloppy'),'Sloppy Spline Layer Spacing Factor'),'Spacing factor for routing area between layers when using sloppy spline routing.'),0.2),Ned),LI),Crb(Eed))));hdd(a,Nze,PAe,otc);hdd(a,Nze,Mze,ptc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Oze),'edgeRouting.polyline'),'Sloped Edge Zone Width'),'Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer.'),2),Ned),LI),Crb(Eed))));hdd(a,Oze,PAe,ftc);mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,Pze),QAe),'Spacing Base Value'),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Qze),QAe),'Edge Node Between Layers Spacing'),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Rze),QAe),'Edge Edge Between Layer Spacing'),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Sze),QAe),'Node Node Between Layers Spacing'),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Tze),RAe),'Direction Priority'),'Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase.'),zfb(0)),Qed),UI),Crb(Bed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Uze),RAe),'Shortness Priority'),'Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase.'),zfb(0)),Qed),UI),Crb(Bed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Vze),RAe),'Straightness Priority'),'Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement.'),zfb(0)),Qed),UI),Crb(Bed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Wze),SAe),'Connected Components Compaction'),'Tries to further compact components (disconnected sub-graphs).'),false),Med),GI),Crb(Eed))));hdd(a,Wze,uxe,true);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Xze),TAe),'Post Compaction Strategy'),UAe),hsc),Oed),ZV),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Yze),TAe),'Post Compaction Constraint Calculation'),UAe),fsc),Oed),QV),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Zze),VAe),'High Degree Node Treatment'),'Makes room around high degree nodes to place leafs and trees.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,$ze),VAe),'High Degree Node Threshold'),'Whether a node is considered to have a high degree.'),zfb(16)),Qed),UI),Crb(Eed))));hdd(a,$ze,Zze,true);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,_ze),VAe),'High Degree Node Maximum Tree Height'),'Maximum height of a subtree connected to a high degree node to be moved to separate layers.'),zfb(5)),Qed),UI),Crb(Eed))));hdd(a,_ze,Zze,true);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,aAe),WAe),'Graph Wrapping Strategy'),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),Wuc),Oed),wW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,bAe),WAe),'Additional Wrapped Edges Spacing'),'To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing.'),10),Ned),LI),Crb(Eed))));hdd(a,bAe,aAe,Buc);hdd(a,bAe,aAe,Cuc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,cAe),WAe),'Correction Factor for Wrapping'),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),Ned),LI),Crb(Eed))));hdd(a,cAe,aAe,Euc);hdd(a,cAe,aAe,Fuc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,dAe),XAe),'Cutting Strategy'),'The strategy by which the layer indexes are determined at which the layering crumbles into chunks.'),Muc),Oed),SV),Crb(Eed))));hdd(a,dAe,aAe,Nuc);hdd(a,dAe,aAe,Ouc);mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,eAe),XAe),'Manually Specified Cuts'),'Allows the user to specify her own cuts for a certain graph.'),Red),HK),Crb(Eed))));hdd(a,eAe,dAe,Huc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,fAe),'wrapping.cutting.msd'),'MSD Freedom'),'The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts.'),Juc),Qed),UI),Crb(Eed))));hdd(a,fAe,dAe,Kuc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,gAe),YAe),'Validification Strategy'),'When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed.'),_uc),Oed),vW),Crb(Eed))));hdd(a,gAe,aAe,avc);hdd(a,gAe,aAe,bvc);mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,hAe),YAe),'Valid Indices for Wrapping'),null),Red),HK),Crb(Eed))));hdd(a,hAe,aAe,Yuc);hdd(a,hAe,aAe,Zuc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,iAe),ZAe),'Improve Cuts'),'For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought.'),true),Med),GI),Crb(Eed))));hdd(a,iAe,aAe,Suc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,jAe),ZAe),'Distance Penalty When Improving Cuts'),null),2),Ned),LI),Crb(Eed))));hdd(a,jAe,aAe,Quc);hdd(a,jAe,iAe,true);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,kAe),ZAe),'Improve Wrapped Edges'),'The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges.'),true),Med),GI),Crb(Eed))));hdd(a,kAe,aAe,Uuc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,lAe),$Ae),'Layer Unzipping Strategy'),"The strategy to use for unzipping a layer into multiple sublayers while maintaining the existing ordering of nodes and edges after crossing minimization. The default value is 'NONE'."),Wtc),Oed),eW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,mAe),$Ae),'Minimize Edge Length Heuristic'),'Use a heuristic to decide whether or not to actually perform the layer split with the goal of minimizing the total edge length. This option only works when layerSplit is set to 2. The property can be set to the nodes in a layer, which then applies the property for the layer. If any node sets the value to true, then the value is set to true for the entire layer.'),false),Med),GI),Crb(Ded))));hdd(a,mAe,nAe,Rtc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,nAe),$Ae),'Unzipping Layer Split'),'Defines the number of sublayers to split a layer into. The property can be set to the nodes in a layer, which then applies the property for the layer. If multiple nodes set the value to different values, then the lowest value is chosen.'),Ptc),Qed),UI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,oAe),$Ae),'Reset Alternation on Long Edges'),'If set to true, nodes will always be placed in the first sublayer after a long edge when using the ALTERNATING strategy. Otherwise long edge dummies are treated the same as regular nodes. The default value is true. The property can be set to the nodes in a layer, which then applies the property for the layer. If any node sets the value to false, then the value is set to false for the entire layer.'),Ttc),Med),GI),Crb(Ded))));hdd(a,oAe,lAe,Utc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,pAe),_Ae),'Edge Label Side Selection'),'Method to decide on edge label sides.'),dtc),Oed),WV),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,qAe),_Ae),'Edge Center Label Placement Strategy'),'Determines in which layer center labels of long edges should be placed.'),btc),Oed),PV),Drb(Eed,WC(OC(g2,1),kue,160,0,[Ced])))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,rAe),aBe),'Consider Model Order'),'Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting.'),Esc),Oed),oW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,sAe),aBe),'Consider Port Order'),'If disabled the port order of output ports is derived from the edge order and input ports are ordered by their incoming connections. If enabled all ports are ordered by the port model order.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,tAe),aBe),'No Model Order'),'Set on a node to not set a model order for this node even though it is a real node.'),false),Med),GI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,uAe),aBe),'Consider Model Order for Components'),'If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected.'),jsc),Oed),iP),Crb(Eed))));hdd(a,uAe,uxe,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,vAe),aBe),'Long Edge Ordering Strategy'),'Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout.'),Asc),Oed),kW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,wAe),aBe),'Crossing Counter Node Order Influence'),'Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0).'),0),Ned),LI),Crb(Eed))));hdd(a,wAe,rAe,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,xAe),aBe),'Crossing Counter Port Order Influence'),'Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0).'),0),Ned),LI),Crb(Eed))));hdd(a,xAe,rAe,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,yAe),bBe),cBe),'Used to define partial ordering groups during cycle breaking. A lower group id means that the group is sorted before other groups. A group model order of 0 is the default group.'),zfb(0)),Qed),UI),Crb(Ded))));hdd(a,yAe,tAe,false);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,zAe),bBe),cBe),'Used to define partial ordering groups during crossing minimization. A lower group id means that the group is sorted before other groups. A group model order of 0 is the default group.'),zfb(0)),Qed),UI),Drb(Ded,WC(OC(g2,1),kue,160,0,[Bed,Fed])))));hdd(a,zAe,tAe,false);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,AAe),bBe),cBe),'Used to define partial ordering groups during component packing. A lower group id means that the group is sorted before other groups. A group model order of 0 is the default group.'),zfb(0)),Qed),UI),Drb(Ded,WC(OC(g2,1),kue,160,0,[Bed,Fed])))));hdd(a,AAe,tAe,false);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,BAe),bBe),'Cycle Breaking Group Ordering Strategy'),'Determines how to count ordering violations during cycle breaking. NONE: They do not count. ENFORCED: A group with a higher model order is before a node with a smaller. MODEL_ORDER: The model order counts instead of the model order group id ordering.'),nsc),Oed),aW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,CAe),bBe),'Cycle Breaking Preferred Source Id'),'The model order group id for which should be preferred as a source if possible.'),Qed),UI),Crb(Eed))));hdd(a,CAe,ize,psc);mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,DAe),bBe),'Cycle Breaking Preferred Target Id'),'The model order group id for which should be preferred as a target if possible.'),Qed),UI),Crb(Eed))));hdd(a,DAe,ize,rsc);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,EAe),bBe),'Crossing Minimization Group Ordering Strategy'),'Determines how to count ordering violations during crossing minimization. NONE: They do not count. ENFORCED: A group with a lower id is before a group with a higher id. MODEL_ORDER: The model order counts instead of the model order group id ordering.'),vsc),Oed),aW),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,FAe),bBe),'Crossing Minimization Enforced Group Orders'),'Holds all group ids which are enforcing their order during crossing minimization strategies. E.g. if only groups 2 and -1 (default) enforce their ordering. Other groups e.g. the group of timer nodes can be ordered arbitrarily if it helps and the mentioned groups may not change their order.'),tsc),Red),HK),Crb(Eed))));_xc((new ayc,a))};var csc,dsc,esc,fsc,gsc,hsc,isc,jsc,ksc,lsc,msc,nsc,osc,psc,qsc,rsc,ssc,tsc,usc,vsc,wsc,xsc,ysc,zsc,Asc,Bsc,Csc,Dsc,Esc,Fsc,Gsc,Hsc,Isc,Jsc,Ksc,Lsc,Msc,Nsc,Osc,Psc,Qsc,Rsc,Ssc,Tsc,Usc,Vsc,Wsc,Xsc,Ysc,Zsc,$sc,_sc,atc,btc,ctc,dtc,etc,ftc,gtc,htc,itc,jtc,ktc,ltc,mtc,ntc,otc,ptc,qtc,rtc,stc,ttc,utc,vtc,wtc,xtc,ytc,ztc,Atc,Btc,Ctc,Dtc,Etc,Ftc,Gtc,Htc,Itc,Jtc,Ktc,Ltc,Mtc,Ntc,Otc,Ptc,Qtc,Rtc,Stc,Ttc,Utc,Vtc,Wtc,Xtc,Ytc,Ztc,$tc,_tc,auc,buc,cuc,duc,euc,fuc,guc,huc,iuc,juc,kuc,luc,muc,nuc,ouc,puc,quc,ruc,suc,tuc,uuc,vuc,wuc,xuc,yuc,zuc,Auc,Buc,Cuc,Duc,Euc,Fuc,Guc,Huc,Iuc,Juc,Kuc,Luc,Muc,Nuc,Ouc,Puc,Quc,Ruc,Suc,Tuc,Uuc,Vuc,Wuc,Xuc,Yuc,Zuc,$uc,_uc,avc,bvc;var fW=zeb(Tye,'LayeredMetaDataProvider',843);mdb(982,1,lxe,ayc);_.tf=function byc(a){_xc(a)};var fvc,gvc,hvc,ivc,jvc,kvc,lvc,mvc,nvc,ovc,pvc,qvc,rvc,svc,tvc,uvc,vvc,wvc,xvc,yvc,zvc,Avc,Bvc,Cvc,Dvc,Evc,Fvc,Gvc,Hvc,Ivc,Jvc,Kvc,Lvc,Mvc,Nvc,Ovc,Pvc,Qvc,Rvc,Svc,Tvc,Uvc,Vvc,Wvc,Xvc,Yvc,Zvc,$vc,_vc,awc,bwc,cwc,dwc,ewc,fwc,gwc,hwc,iwc,jwc,kwc,lwc,mwc,nwc,owc,pwc,qwc,rwc,swc,twc,uwc,vwc,wwc,xwc,ywc,zwc,Awc,Bwc,Cwc,Dwc,Ewc,Fwc,Gwc,Hwc,Iwc,Jwc,Kwc,Lwc,Mwc,Nwc,Owc,Pwc,Qwc,Rwc,Swc,Twc,Uwc,Vwc,Wwc,Xwc,Ywc,Zwc,$wc,_wc,axc,bxc,cxc,dxc,exc,fxc,gxc,hxc,ixc,jxc,kxc,lxc,mxc,nxc,oxc,pxc,qxc,rxc,sxc,txc,uxc,vxc,wxc,xxc,yxc,zxc,Axc,Bxc,Cxc,Dxc,Exc,Fxc,Gxc,Hxc,Ixc,Jxc,Kxc,Lxc,Mxc,Nxc,Oxc,Pxc,Qxc,Rxc,Sxc,Txc,Uxc,Vxc,Wxc,Xxc,Yxc,Zxc;var hW=zeb(Tye,'LayeredOptions',982);mdb(983,1,{},cyc);_.uf=function dyc(){var a;return a=new MQb,a};_.vf=function eyc(a){};var gW=zeb(Tye,'LayeredOptions/LayeredFactory',983);mdb(1345,1,{});_.a=0;var fyc;var j3=zeb(TBe,'ElkSpacings/AbstractSpacingsBuilder',1345);mdb(778,1345,{},ryc);var oyc,pyc;var iW=zeb(Tye,'LayeredSpacings/LayeredSpacingsBuilder',778);mdb(268,23,{3:1,35:1,23:1,268:1,188:1,196:1},Dyc);_.bg=function Fyc(){return Cyc(this)};_.og=function Eyc(){return Cyc(this)};var syc,tyc,uyc,vyc,wyc,xyc,yyc,zyc,Ayc;var jW=Aeb(Tye,'LayeringStrategy',268,MI,Hyc,Gyc);var Iyc;mdb(352,23,{3:1,35:1,23:1,352:1},Pyc);var Kyc,Lyc,Myc;var kW=Aeb(Tye,'LongEdgeOrderingStrategy',352,MI,Ryc,Qyc);var Syc;mdb(203,23,{3:1,35:1,23:1,203:1},$yc);var Uyc,Vyc,Wyc,Xyc;var lW=Aeb(Tye,'NodeFlexibility',203,MI,bzc,azc);var czc;mdb(328,23,{3:1,35:1,23:1,328:1,188:1,196:1},lzc);_.bg=function nzc(){return kzc(this)};_.og=function mzc(){return kzc(this)};var ezc,fzc,gzc,hzc,izc;var mW=Aeb(Tye,'NodePlacementStrategy',328,MI,pzc,ozc);var qzc;mdb(243,23,{3:1,35:1,23:1,243:1},Dzc);var szc,tzc,uzc,vzc,wzc,xzc,yzc,zzc,Azc,Bzc;var nW=Aeb(Tye,'NodePromotionStrategy',243,MI,Fzc,Ezc);var Gzc;mdb(269,23,{3:1,35:1,23:1,269:1},Nzc);var Izc,Jzc,Kzc,Lzc;var oW=Aeb(Tye,'OrderingStrategy',269,MI,Pzc,Ozc);var Qzc;mdb(421,23,{3:1,35:1,23:1,421:1},Vzc);var Szc,Tzc;var pW=Aeb(Tye,'PortSortingStrategy',421,MI,Xzc,Wzc);var Yzc;mdb(452,23,{3:1,35:1,23:1,452:1},cAc);var $zc,_zc,aAc;var qW=Aeb(Tye,'PortType',452,MI,eAc,dAc);var fAc;mdb(381,23,{3:1,35:1,23:1,381:1},lAc);var hAc,iAc,jAc;var rW=Aeb(Tye,'SelfLoopDistributionStrategy',381,MI,nAc,mAc);var oAc;mdb(348,23,{3:1,35:1,23:1,348:1},uAc);var qAc,rAc,sAc;var sW=Aeb(Tye,'SelfLoopOrderingStrategy',348,MI,wAc,vAc);var xAc;mdb(316,1,{316:1},IAc);var tW=zeb(Tye,'Spacings',316);mdb(349,23,{3:1,35:1,23:1,349:1},OAc);var KAc,LAc,MAc;var uW=Aeb(Tye,'SplineRoutingMode',349,MI,QAc,PAc);var RAc;mdb(351,23,{3:1,35:1,23:1,351:1},XAc);var TAc,UAc,VAc;var vW=Aeb(Tye,'ValidifyStrategy',351,MI,ZAc,YAc);var $Ac;mdb(382,23,{3:1,35:1,23:1,382:1},eBc);var aBc,bBc,cBc;var wW=Aeb(Tye,'WrappingStrategy',382,MI,gBc,fBc);var hBc;mdb(1361,1,XBe,oBc);_.pg=function pBc(a){return JD(a,37),jBc};_.If=function qBc(a,b){nBc(this,JD(a,37),b)};var jBc;var xW=zeb(YBe,'BFSNodeOrderCycleBreaker',1361);mdb(1359,1,XBe,wBc);_.pg=function xBc(a){return JD(a,37),rBc};_.If=function yBc(a,b){vBc(this,JD(a,37),b)};var rBc;var zW=zeb(YBe,'DFSNodeOrderCycleBreaker',1359);mdb(1360,1,Rte,zBc);_.Ad=function ABc(a){uBc(this.a,this.c,this.b,JD(a,17))};_.b=false;var yW=zeb(YBe,'DFSNodeOrderCycleBreaker/lambda$0$Type',1360);mdb(1353,1,XBe,FBc);_.pg=function GBc(a){return JD(a,37),BBc};_.If=function HBc(a,b){EBc(this,JD(a,37),b)};var BBc;var AW=zeb(YBe,'DepthFirstCycleBreaker',1353);mdb(779,1,XBe,MBc);_.pg=function OBc(a){return JD(a,37),IBc};_.If=function PBc(a,b){KBc(this,JD(a,37),b)};_.qg=function NBc(a){return JD(amb(a,Nvb(this.e,a.c.length)),9)};var IBc;var BW=zeb(YBe,'GreedyCycleBreaker',779);mdb(1356,779,XBe,QBc);_.qg=function RBc(a){var b,c,d,e,f,g,h,i,j;j=null;d=lte;i=$wnd.Math.max(this.b.a.c.length,JD(lNb(this.b,(Krc(),frc)),15).a);b=i*JD(lNb(this.b,Bqc),15).a;e=new UBc;c=XD(lNb(this.b,($xc(),pvc)))===XD((bqc(),$pc));for(h=new Hmb(a);h.af){d=f;j=g}}}if(!j){return JD(amb(a,Nvb(this.e,a.c.length)),9)}return j};var CW=zeb(YBe,'GreedyModelOrderCycleBreaker',1356);mdb(505,1,{},UBc);_.a=0;_.b=0;var DW=zeb(YBe,'GroupModelOrderCalculator',505);mdb(1354,1,XBe,ZBc);_.pg=function $Bc(a){return JD(a,37),VBc};_.If=function _Bc(a,b){YBc(this,JD(a,37),b)};var VBc;var EW=zeb(YBe,'InteractiveCycleBreaker',1354);mdb(1355,1,XBe,dCc);_.pg=function eCc(a){return JD(a,37),aCc};_.If=function fCc(a,b){cCc(JD(a,37),b)};var aCc;var FW=zeb(YBe,'ModelOrderCycleBreaker',1355);mdb(780,1,XBe);_.pg=function lCc(a){return JD(a,37),gCc};_.If=function mCc(a,b){iCc(this,JD(a,37),b)};_.rg=function kCc(a,b){var c,d,e,f,g,h,i,j,k,l;for(g=0;gj){i=m;l=j}if(kBr(new Yr(Dr(BYb(h).a.Jc(),new Dl)))){for(e=new Yr(Dr(yYb(i).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),17);JD(au(this.d,g),22).Gc(d.c.i)&&Ylb(this.c,d)}}else{for(e=new Yr(Dr(BYb(h).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),17);JD(au(this.d,g),22).Gc(d.d.i)&&Ylb(this.c,d)}}}}};var HW=zeb(YBe,'SCCNodeTypeCycleBreaker',1358);mdb(1357,780,XBe,pCc);_.rg=function qCc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;for(g=0;gj){i=m;l=j}if(kBr(new Yr(Dr(BYb(h).a.Jc(),new Dl)))){for(e=new Yr(Dr(yYb(i).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),17);JD(au(this.d,g),22).Gc(d.c.i)&&Ylb(this.c,d)}}else{for(e=new Yr(Dr(BYb(h).a.Jc(),new Dl));Wr(e);){d=JD(Xr(e),17);JD(au(this.d,g),22).Gc(d.d.i)&&Ylb(this.c,d)}}}};var IW=zeb(YBe,'SCConnectivity',1357);mdb(1373,1,XBe,uCc);_.pg=function vCc(a){return JD(a,37),rCc};_.If=function xCc(a,b){tCc(this,JD(a,37),b)};var rCc;var KW=zeb(_Be,'BreadthFirstModelOrderLayerer',1373);mdb(1374,1,fwe,yCc);_.Le=function zCc(a,b){return wCc(JD(a,9),JD(b,9))};_.Fb=function ACc(a){return this===a};_.Me=function BCc(){return new Kqb(this)};var JW=zeb(_Be,'BreadthFirstModelOrderLayerer/lambda$0$Type',1374);mdb(1364,1,XBe,LCc);_.pg=function MCc(a){return JD(a,37),CCc};_.If=function NCc(a,b){JCc(this,JD(a,37),b)};var CCc;var NW=zeb(_Be,'CoffmanGrahamLayerer',1364);mdb(1365,1,fwe,OCc);_.Le=function PCc(a,b){return FCc(this.a,JD(a,9),JD(b,9))};_.Fb=function QCc(a){return this===a};_.Me=function RCc(){return new Kqb(this)};var LW=zeb(_Be,'CoffmanGrahamLayerer/0methodref$compareNodesInTopo$Type',1365);mdb(1366,1,fwe,SCc);_.Le=function TCc(a,b){return ICc(this.a,JD(a,9),JD(b,9))};_.Fb=function UCc(a){return this===a};_.Me=function VCc(){return new Kqb(this)};var MW=zeb(_Be,'CoffmanGrahamLayerer/lambda$1$Type',1366);mdb(1375,1,XBe,bDc);_.pg=function cDc(a){return JD(a,37),WCc};_.If=function eDc(a,b){aDc(this,JD(a,37),b)};_.c=0;_.e=0;var WCc;var PW=zeb(_Be,'DepthFirstModelOrderLayerer',1375);mdb(1376,1,fwe,fDc);_.Le=function gDc(a,b){return dDc(JD(a,9),JD(b,9))};_.Fb=function hDc(a){return this===a};_.Me=function iDc(){return new Kqb(this)};var OW=zeb(_Be,'DepthFirstModelOrderLayerer/lambda$0$Type',1376);mdb(1367,1,XBe,lDc);_.pg=function mDc(a){return JD(a,37),Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),l5b)),PQb,u5b),QQb,t5b)};_.If=function nDc(a,b){kDc(JD(a,37),b)};var RW=zeb(_Be,'InteractiveLayerer',1367);mdb(564,1,{564:1},oDc);_.a=0;_.c=0;var QW=zeb(_Be,'InteractiveLayerer/LayerSpan',564);mdb(1363,1,XBe,uDc);_.pg=function vDc(a){return JD(a,37),pDc};_.If=function wDc(a,b){rDc(this,JD(a,37),b)};var pDc;var SW=zeb(_Be,'LongestPathLayerer',1363);mdb(1372,1,XBe,CDc);_.pg=function DDc(a){return JD(a,37),xDc};_.If=function EDc(a,b){zDc(this,JD(a,37),b)};var xDc;var TW=zeb(_Be,'LongestPathSourceLayerer',1372);mdb(1370,1,XBe,NDc);_.pg=function ODc(a){return JD(a,37),Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),X4b)),PQb,u5b),QQb,t5b)};_.If=function PDc(a,b){LDc(this,JD(a,37),b)};_.a=0;_.b=0;_.d=0;var FDc,GDc;var VW=zeb(_Be,'MinWidthLayerer',1370);mdb(1371,1,fwe,RDc);_.Le=function SDc(a,b){return QDc(this,JD(a,9),JD(b,9))};_.Fb=function TDc(a){return this===a};_.Me=function UDc(){return new Kqb(this)};var UW=zeb(_Be,'MinWidthLayerer/MinOutgoingEdgesComparator',1371);mdb(1362,1,XBe,aEc);_.pg=function bEc(a){return JD(a,37),VDc};_.If=function cEc(a,b){_Dc(this,JD(a,37),b)};var VDc;var WW=zeb(_Be,'NetworkSimplexLayerer',1362);mdb(1368,1,XBe,oEc);_.pg=function pEc(a){return JD(a,37),Xbd(Xbd(Xbd(new acd,(TQb(),OQb),(Q5b(),X4b)),PQb,u5b),QQb,t5b)};_.If=function qEc(a,b){lEc(this,JD(a,37),b)};_.d=0;_.f=0;_.g=0;_.i=0;_.s=0;_.t=0;_.u=0;var YW=zeb(_Be,'StretchWidthLayerer',1368);mdb(1369,1,fwe,sEc);_.Le=function tEc(a,b){return rEc(JD(a,9),JD(b,9))};_.Fb=function uEc(a){return this===a};_.Me=function vEc(){return new Kqb(this)};var XW=zeb(_Be,'StretchWidthLayerer/1',1369);mdb(406,1,aCe);_.eg=function KEc(a,b,c,d,e,f){};_.tg=function IEc(a,b,c){return BEc(this,a,b,c)};_.dg=function JEc(){this.g=SC(bE,bCe,30,this.d,15,1);this.f=SC(bE,bCe,30,this.d,15,1)};_.fg=function LEc(a,b){this.e[a]=SC(cE,Pue,30,b[a].length,15,1)};_.gg=function MEc(a,b,c){var d;d=c[a][b];d.p=b;this.e[a][b]=b};_.hg=function NEc(a,b,c,d){JD(amb(d[a][b].j,c),12).p=this.d++};_.b=0;_.c=0;_.d=0;var $W=zeb(cCe,'AbstractBarycenterPortDistributor',406);mdb(1663,1,fwe,OEc);_.Le=function PEc(a,b){return EEc(this.a,JD(a,12),JD(b,12))};_.Fb=function QEc(a){return this===a};_.Me=function REc(){return new Kqb(this)};var ZW=zeb(cCe,'AbstractBarycenterPortDistributor/lambda$0$Type',1663);mdb(816,1,Nye,ZEc);_.eg=function aFc(a,b,c,d,e,f){};_.gg=function cFc(a,b,c){};_.hg=function dFc(a,b,c,d){};_.cg=function $Ec(){return false};_.dg=function _Ec(){this.c=this.e.a;this.g=this.f.g};_.fg=function bFc(a,b){b[a][0].c.p=a};_.ig=function eFc(){return false};_.ug=function fFc(a,b,c,d){if(c){WEc(this,a)}else{TEc(this,a,d);UEc(this,a,b)}if(a.c.length>1){Odb(LD(lNb(xYb((JDb(0,a.c.length),JD(a.c[0],9))),($xc(),Cvc))))?SHc(a,this.d,JD(this,660)):(Fnb(),gmb(a,this.d));sFc(this.e,a)}};_.jg=function gFc(a,b,c,d){var e,f,g,h,i,j,k;if(b!=XEc(c,a.length)){f=a[b-(c?1:-1)];xEc(this.f,f,c?(bAc(),_zc):(bAc(),$zc))}e=a[b][0];k=!d||e.k==(UYb(),NYb);j=Wu(a[b]);this.ug(j,k,false,c);g=0;for(i=new Hmb(j);i.a');a0?(LIc(this.a,a[b-1],a[b]),undefined):!c&&b1){Odb(LD(lNb(xYb((JDb(0,a.c.length),JD(a.c[0],9))),($xc(),Cvc))))?SHc(a,this.d,this):(Fnb(),gmb(a,this.d));Odb(LD(lNb(xYb((JDb(0,a.c.length),JD(a.c[0],9))),Cvc)))||sFc(this.e,a)}};var xX=zeb(cCe,'ModelOrderBarycenterHeuristic',660);mdb(1843,1,fwe,UHc);_.Le=function VHc(a,b){return PHc(this.a,JD(a,9),JD(b,9))};_.Fb=function WHc(a){return this===a};_.Me=function XHc(){return new Kqb(this)};var wX=zeb(cCe,'ModelOrderBarycenterHeuristic/lambda$0$Type',1843);mdb(1383,1,XBe,_Hc);_.pg=function aIc(a){var b;return JD(a,37),b=bcd(YHc),Xbd(b,(TQb(),QQb),(Q5b(),F5b)),b};_.If=function bIc(a,b){$Hc((JD(a,37),b))};var YHc;var yX=zeb(cCe,'NoCrossingMinimizer',1383);mdb(796,406,aCe,cIc);_.sg=function dIc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;l=this.g;switch(c.g){case 1:{e=0;f=0;for(k=new Hmb(a.j);k.a1&&(e.j==(mmd(),Tld)?(this.b[a]=true):e.j==lmd&&a>0&&(this.b[a-1]=true))};_.f=0;var BX=zeb(Mye,'AllCrossingsCounter',1838);mdb(583,1,{},vIc);_.b=0;_.d=0;var CX=zeb(Mye,'BinaryIndexedTree',583);mdb(519,1,{},ZIc);var xIc,yIc;var MX=zeb(Mye,'CrossingsCounter',519);mdb(1912,1,fwe,bJc);_.Le=function cJc(a,b){return SIc(this.a,JD(a,12),JD(b,12))};_.Fb=function dJc(a){return this===a};_.Me=function eJc(){return new Kqb(this)};var DX=zeb(Mye,'CrossingsCounter/lambda$0$Type',1912);mdb(1913,1,fwe,fJc);_.Le=function gJc(a,b){return TIc(this.a,JD(a,12),JD(b,12))};_.Fb=function hJc(a){return this===a};_.Me=function iJc(){return new Kqb(this)};var EX=zeb(Mye,'CrossingsCounter/lambda$1$Type',1913);mdb(1914,1,fwe,jJc);_.Le=function kJc(a,b){return UIc(this.a,JD(a,12),JD(b,12))};_.Fb=function lJc(a){return this===a};_.Me=function mJc(){return new Kqb(this)};var FX=zeb(Mye,'CrossingsCounter/lambda$2$Type',1914);mdb(1915,1,fwe,nJc);_.Le=function oJc(a,b){return VIc(this.a,JD(a,12),JD(b,12))};_.Fb=function pJc(a){return this===a};_.Me=function qJc(){return new Kqb(this)};var GX=zeb(Mye,'CrossingsCounter/lambda$3$Type',1915);mdb(1916,1,Rte,rJc);_.Ad=function sJc(a){$Ic(this.a,JD(a,12))};var HX=zeb(Mye,'CrossingsCounter/lambda$4$Type',1916);mdb(1917,1,oue,tJc);_.Mb=function uJc(a){return _Ic(this.a,JD(a,12))};var IX=zeb(Mye,'CrossingsCounter/lambda$5$Type',1917);mdb(1918,1,Rte,wJc);_.Ad=function xJc(a){vJc(this,a)};var JX=zeb(Mye,'CrossingsCounter/lambda$6$Type',1918);mdb(1919,1,Rte,yJc);_.Ad=function zJc(a){var b;zIc();olb(this.b,(b=this.a,JD(a,12),b))};var KX=zeb(Mye,'CrossingsCounter/lambda$7$Type',1919);mdb(823,1,xwe,AJc);_.Lb=function BJc(a){return zIc(),mNb(JD(a,12),(Krc(),prc))};_.Fb=function CJc(a){return this===a};_.Mb=function DJc(a){return zIc(),mNb(JD(a,12),(Krc(),prc))};var LX=zeb(Mye,'CrossingsCounter/lambda$8$Type',823);mdb(1911,1,{},FJc);var QX=zeb(Mye,'HyperedgeCrossingsCounter',1911);mdb(467,1,{35:1,467:1},HJc);_.Dd=function IJc(a){return GJc(this,JD(a,467))};_.b=0;_.c=0;_.e=0;_.f=0;var PX=zeb(Mye,'HyperedgeCrossingsCounter/Hyperedge',467);mdb(370,1,{35:1,370:1},KJc);_.Dd=function LJc(a){return JJc(this,JD(a,370))};_.b=0;_.c=0;var OX=zeb(Mye,'HyperedgeCrossingsCounter/HyperedgeCorner',370);mdb(518,23,{3:1,35:1,23:1,518:1},PJc);var MJc,NJc;var NX=Aeb(Mye,'HyperedgeCrossingsCounter/HyperedgeCorner/Type',518,MI,RJc,QJc);var SJc;mdb(1385,1,XBe,ZJc);_.pg=function $Jc(a){return JD(lNb(JD(a,37),(Krc(),Rqc)),22).Gc((Lpc(),Epc))?VJc:null};_.If=function _Jc(a,b){YJc(this,JD(a,37),b)};var VJc;var SX=zeb(fCe,'InteractiveNodePlacer',1385);mdb(1386,1,XBe,nKc);_.pg=function oKc(a){return JD(lNb(JD(a,37),(Krc(),Rqc)),22).Gc((Lpc(),Epc))?aKc:null};_.If=function pKc(a,b){lKc(this,JD(a,37),b)};var aKc,bKc,cKc;var UX=zeb(fCe,'LinearSegmentsNodePlacer',1386);mdb(263,1,{35:1,263:1},tKc);_.Dd=function uKc(a){return qKc(this,JD(a,263))};_.Fb=function vKc(a){var b;if(RD(a,263)){b=JD(a,263);return this.b==b.b}return false};_.Hb=function wKc(){return this.b};_.Ib=function xKc(){return 'ls'+Ee(this.e)};_.a=0;_.b=0;_.c=-1;_.d=-1;_.g=0;var TX=zeb(fCe,'LinearSegmentsNodePlacer/LinearSegment',263);mdb(1388,1,XBe,UKc);_.pg=function VKc(a){return JD(lNb(JD(a,37),(Krc(),Rqc)),22).Gc((Lpc(),Epc))?yKc:null};_.If=function bLc(a,b){QKc(this,JD(a,37),b)};_.b=0;_.g=0;var yKc;var EY=zeb(fCe,'NetworkSimplexPlacer',1388);mdb(1407,1,fwe,cLc);_.Le=function dLc(a,b){return ofb(JD(a,15).a,JD(b,15).a)};_.Fb=function eLc(a){return this===a};_.Me=function fLc(){return new Kqb(this)};var VX=zeb(fCe,'NetworkSimplexPlacer/0methodref$compare$Type',1407);mdb(1409,1,fwe,gLc);_.Le=function hLc(a,b){return ofb(JD(a,15).a,JD(b,15).a)};_.Fb=function iLc(a){return this===a};_.Me=function jLc(){return new Kqb(this)};var WX=zeb(fCe,'NetworkSimplexPlacer/1methodref$compare$Type',1409);mdb(644,1,{644:1},kLc);var XX=zeb(fCe,'NetworkSimplexPlacer/EdgeRep',644);mdb(405,1,{405:1},lLc);_.b=false;var YX=zeb(fCe,'NetworkSimplexPlacer/NodeRep',405);mdb(500,13,{3:1,4:1,20:1,31:1,56:1,13:1,18:1,16:1,59:1,500:1},pLc);var bY=zeb(fCe,'NetworkSimplexPlacer/Path',500);mdb(1389,1,{},qLc);_.Kb=function rLc(a){return JD(a,17).d.i.k};var ZX=zeb(fCe,'NetworkSimplexPlacer/Path/lambda$0$Type',1389);mdb(1390,1,oue,sLc);_.Mb=function tLc(a){return JD(a,249)==(UYb(),PYb)};var $X=zeb(fCe,'NetworkSimplexPlacer/Path/lambda$1$Type',1390);mdb(1391,1,{},uLc);_.Kb=function vLc(a){return JD(a,17).d.i};var _X=zeb(fCe,'NetworkSimplexPlacer/Path/lambda$2$Type',1391);mdb(1392,1,oue,wLc);_.Mb=function xLc(a){return $Lc(_yc(JD(a,9)))};var aY=zeb(fCe,'NetworkSimplexPlacer/Path/lambda$3$Type',1392);mdb(1393,1,oue,yLc);_.Mb=function zLc(a){return ZKc(JD(a,12))};var cY=zeb(fCe,'NetworkSimplexPlacer/lambda$0$Type',1393);mdb(1394,1,Rte,ALc);_.Ad=function BLc(a){FKc(this.a,this.b,JD(a,12))};var dY=zeb(fCe,'NetworkSimplexPlacer/lambda$1$Type',1394);mdb(1403,1,Rte,CLc);_.Ad=function DLc(a){GKc(this.a,JD(a,17))};var eY=zeb(fCe,'NetworkSimplexPlacer/lambda$10$Type',1403);mdb(1404,1,{},ELc);_.Kb=function FLc(a){return zKc(),new gCb(null,new Wvb(JD(a,25).a,16))};var fY=zeb(fCe,'NetworkSimplexPlacer/lambda$11$Type',1404);mdb(1405,1,Rte,GLc);_.Ad=function HLc(a){HKc(this.a,JD(a,9))};var gY=zeb(fCe,'NetworkSimplexPlacer/lambda$12$Type',1405);mdb(1406,1,{},ILc);_.Kb=function JLc(a){return zKc(),zfb(JD(a,124).e)};var hY=zeb(fCe,'NetworkSimplexPlacer/lambda$13$Type',1406);mdb(1408,1,{},KLc);_.Kb=function LLc(a){return zKc(),zfb(JD(a,124).e)};var iY=zeb(fCe,'NetworkSimplexPlacer/lambda$15$Type',1408);mdb(1410,1,oue,MLc);_.Mb=function NLc(a){return zKc(),JD(a,405).c.k==(UYb(),RYb)};var jY=zeb(fCe,'NetworkSimplexPlacer/lambda$17$Type',1410);mdb(1411,1,oue,OLc);_.Mb=function PLc(a){return zKc(),JD(a,405).c.j.c.length>1};var kY=zeb(fCe,'NetworkSimplexPlacer/lambda$18$Type',1411);mdb(1412,1,Rte,QLc);_.Ad=function RLc(a){$Kc(this.c,this.b,this.d,this.a,JD(a,405))};_.c=0;_.d=0;var lY=zeb(fCe,'NetworkSimplexPlacer/lambda$19$Type',1412);mdb(1395,1,{},SLc);_.Kb=function TLc(a){return zKc(),new gCb(null,new Wvb(JD(a,25).a,16))};var mY=zeb(fCe,'NetworkSimplexPlacer/lambda$2$Type',1395);mdb(1413,1,Rte,ULc);_.Ad=function VLc(a){_Kc(this.a,JD(a,12))};_.a=0;var nY=zeb(fCe,'NetworkSimplexPlacer/lambda$20$Type',1413);mdb(1414,1,{},WLc);_.Kb=function XLc(a){return zKc(),new gCb(null,new Wvb(JD(a,25).a,16))};var oY=zeb(fCe,'NetworkSimplexPlacer/lambda$21$Type',1414);mdb(1415,1,Rte,YLc);_.Ad=function ZLc(a){IKc(this.a,JD(a,9))};var pY=zeb(fCe,'NetworkSimplexPlacer/lambda$22$Type',1415);mdb(1416,1,oue,_Lc);_.Mb=function aMc(a){return $Lc(a)};var qY=zeb(fCe,'NetworkSimplexPlacer/lambda$23$Type',1416);mdb(1417,1,{},bMc);_.Kb=function cMc(a){return zKc(),new gCb(null,new Wvb(JD(a,25).a,16))};var rY=zeb(fCe,'NetworkSimplexPlacer/lambda$24$Type',1417);mdb(1418,1,oue,dMc);_.Mb=function eMc(a){return JKc(this.a,JD(a,9))};var sY=zeb(fCe,'NetworkSimplexPlacer/lambda$25$Type',1418);mdb(1419,1,Rte,fMc);_.Ad=function gMc(a){KKc(this.a,this.b,JD(a,9))};var tY=zeb(fCe,'NetworkSimplexPlacer/lambda$26$Type',1419);mdb(1420,1,oue,hMc);_.Mb=function iMc(a){return zKc(),!vWb(JD(a,17))};var uY=zeb(fCe,'NetworkSimplexPlacer/lambda$27$Type',1420);mdb(1421,1,oue,jMc);_.Mb=function kMc(a){return zKc(),!vWb(JD(a,17))};var vY=zeb(fCe,'NetworkSimplexPlacer/lambda$28$Type',1421);mdb(1422,1,{},lMc);_.Te=function mMc(a,b){return LKc(this.a,JD(a,25),JD(b,25))};var wY=zeb(fCe,'NetworkSimplexPlacer/lambda$29$Type',1422);mdb(1396,1,{},nMc);_.Kb=function oMc(a){return zKc(),new gCb(null,new Xvb(new Yr(Dr(BYb(JD(a,9)).a.Jc(),new Dl))))};var xY=zeb(fCe,'NetworkSimplexPlacer/lambda$3$Type',1396);mdb(1397,1,oue,pMc);_.Mb=function qMc(a){return zKc(),YKc(JD(a,17))};var yY=zeb(fCe,'NetworkSimplexPlacer/lambda$4$Type',1397);mdb(1398,1,Rte,rMc);_.Ad=function sMc(a){RKc(this.a,JD(a,17))};var zY=zeb(fCe,'NetworkSimplexPlacer/lambda$5$Type',1398);mdb(1399,1,{},tMc);_.Kb=function uMc(a){return zKc(),new gCb(null,new Wvb(JD(a,25).a,16))};var AY=zeb(fCe,'NetworkSimplexPlacer/lambda$6$Type',1399);mdb(1400,1,oue,vMc);_.Mb=function wMc(a){return zKc(),JD(a,9).k==(UYb(),RYb)};var BY=zeb(fCe,'NetworkSimplexPlacer/lambda$7$Type',1400);mdb(1401,1,{},xMc);_.Kb=function yMc(a){return zKc(),new gCb(null,new Xvb(new Yr(Dr(vYb(JD(a,9)).a.Jc(),new Dl))))};var CY=zeb(fCe,'NetworkSimplexPlacer/lambda$8$Type',1401);mdb(1402,1,oue,zMc);_.Mb=function AMc(a){return zKc(),uWb(JD(a,17))};var DY=zeb(fCe,'NetworkSimplexPlacer/lambda$9$Type',1402);mdb(1384,1,XBe,EMc);_.pg=function FMc(a){return JD(lNb(JD(a,37),(Krc(),Rqc)),22).Gc((Lpc(),Epc))?BMc:null};_.If=function GMc(a,b){DMc(JD(a,37),b)};var BMc;var FY=zeb(fCe,'SimpleNodePlacer',1384);mdb(185,1,{185:1},OMc);_.Ib=function PMc(){var a;a='';this.c==(SMc(),RMc)?(a+=Gwe):this.c==QMc&&(a+=Fwe);this.o==($Mc(),YMc)?(a+=Rwe):this.o==ZMc?(a+='UP'):(a+='BALANCED');return a};var IY=zeb(iCe,'BKAlignedLayout',185);mdb(509,23,{3:1,35:1,23:1,509:1},TMc);var QMc,RMc;var GY=Aeb(iCe,'BKAlignedLayout/HDirection',509,MI,VMc,UMc);var WMc;mdb(508,23,{3:1,35:1,23:1,508:1},_Mc);var YMc,ZMc;var HY=Aeb(iCe,'BKAlignedLayout/VDirection',508,MI,bNc,aNc);var cNc;mdb(1664,1,{},gNc);var JY=zeb(iCe,'BKAligner',1664);mdb(1667,1,{},lNc);var MY=zeb(iCe,'BKCompactor',1667);mdb(652,1,{652:1},mNc);_.a=0;var KY=zeb(iCe,'BKCompactor/ClassEdge',652);mdb(456,1,{456:1},oNc);_.a=null;_.b=0;var LY=zeb(iCe,'BKCompactor/ClassNode',456);mdb(1387,1,XBe,wNc);_.pg=function ANc(a){return JD(lNb(JD(a,37),(Krc(),Rqc)),22).Gc((Lpc(),Epc))?pNc:null};_.If=function BNc(a,b){vNc(this,JD(a,37),b)};_.d=false;var pNc;var NY=zeb(iCe,'BKNodePlacer',1387);mdb(1665,1,{},DNc);_.d=0;var PY=zeb(iCe,'NeighborhoodInformation',1665);mdb(1666,1,fwe,INc);_.Le=function JNc(a,b){return HNc(this,JD(a,49),JD(b,49))};_.Fb=function KNc(a){return this===a};_.Me=function LNc(){return new Kqb(this)};var OY=zeb(iCe,'NeighborhoodInformation/NeighborComparator',1666);mdb(809,1,{});var TY=zeb(iCe,'ThresholdStrategy',809);mdb(1795,809,{},QNc);_.vg=function RNc(a,b,c){return this.a.o==($Mc(),ZMc)?ove:pve};_.wg=function SNc(){};var QY=zeb(iCe,'ThresholdStrategy/NullThresholdStrategy',1795);mdb(576,1,{576:1},TNc);_.c=false;_.d=false;var RY=zeb(iCe,'ThresholdStrategy/Postprocessable',576);mdb(1796,809,{},XNc);_.vg=function YNc(a,b,c){var d,e,f;e=b==c;d=this.a.a[c.p]==b;if(!(e||d)){return a}f=a;if(this.a.c==(SMc(),RMc)){e&&(f=UNc(this,b,true));!isNaN(f)&&!isFinite(f)&&d&&(f=UNc(this,c,false))}else{e&&(f=UNc(this,b,true));!isNaN(f)&&!isFinite(f)&&d&&(f=UNc(this,c,false))}return f};_.wg=function ZNc(){var a,b,c,d,e;while(this.d.b!=0){e=JD(Xtb(this.d),576);d=VNc(this,e);if(!d.a){continue}a=d.a;c=Odb(this.a.f[this.a.g[e.b.p].p]);if(!c&&!vWb(a)&&a.c.i.c==a.d.i.c){continue}b=WNc(this,e);b||Ixb(this.e,e)}while(this.e.a.c.length!=0){WNc(this,JD(Hxb(this.e),576))}};var SY=zeb(iCe,'ThresholdStrategy/SimpleThresholdStrategy',1796);mdb(635,1,{635:1,188:1,196:1},bOc);_.bg=function dOc(){return aOc(this)};_.og=function cOc(){return aOc(this)};var $Nc;var UY=zeb(jCe,'EdgeRouterFactory',635);mdb(1445,1,XBe,qOc);_.pg=function rOc(a){return oOc(JD(a,37))};_.If=function sOc(a,b){pOc(JD(a,37),b)};var fOc,gOc,hOc,iOc,jOc,kOc,lOc,mOc;var VY=zeb(jCe,'OrthogonalEdgeRouter',1445);mdb(1438,1,XBe,HOc);_.pg=function IOc(a){return COc(JD(a,37))};_.If=function JOc(a,b){EOc(this,JD(a,37),b)};var tOc,uOc,vOc,wOc,xOc,yOc;var XY=zeb(jCe,'PolylineEdgeRouter',1438);mdb(1439,1,xwe,LOc);_.Lb=function MOc(a){return KOc(JD(a,9))};_.Fb=function NOc(a){return this===a};_.Mb=function OOc(a){return KOc(JD(a,9))};var WY=zeb(jCe,'PolylineEdgeRouter/1',1439);mdb(1851,1,oue,TOc);_.Mb=function UOc(a){return JD(a,133).c==(BPc(),zPc)};var YY=zeb(kCe,'HyperEdgeCycleDetector/lambda$0$Type',1851);mdb(1852,1,{},VOc);_.Xe=function WOc(a){return JD(a,133).d};var ZY=zeb(kCe,'HyperEdgeCycleDetector/lambda$1$Type',1852);mdb(1853,1,oue,XOc);_.Mb=function YOc(a){return JD(a,133).c==(BPc(),zPc)};var $Y=zeb(kCe,'HyperEdgeCycleDetector/lambda$2$Type',1853);mdb(1854,1,{},ZOc);_.Xe=function $Oc(a){return JD(a,133).d};var _Y=zeb(kCe,'HyperEdgeCycleDetector/lambda$3$Type',1854);mdb(1855,1,{},_Oc);_.Xe=function aPc(a){return JD(a,133).d};var aZ=zeb(kCe,'HyperEdgeCycleDetector/lambda$4$Type',1855);mdb(1856,1,{},bPc);_.Xe=function cPc(a){return JD(a,133).d};var bZ=zeb(kCe,'HyperEdgeCycleDetector/lambda$5$Type',1856);mdb(116,1,{35:1,116:1},oPc);_.Dd=function pPc(a){return ePc(this,JD(a,116))};_.Fb=function qPc(a){var b;if(RD(a,116)){b=JD(a,116);return this.g==b.g}return false};_.Hb=function rPc(){return this.g};_.Ib=function tPc(){var a,b,c,d;a=new khb('{');d=new Hmb(this.n);while(d.a'+this.b+' ('+cs(this.c)+')'};_.d=0;var dZ=zeb(kCe,'HyperEdgeSegmentDependency',133);mdb(515,23,{3:1,35:1,23:1,515:1},CPc);var zPc,APc;var cZ=Aeb(kCe,'HyperEdgeSegmentDependency/DependencyType',515,MI,EPc,DPc);var FPc;mdb(1857,1,{},TPc);var lZ=zeb(kCe,'HyperEdgeSegmentSplitter',1857);mdb(1858,1,{},WPc);_.a=0;_.b=0;var eZ=zeb(kCe,'HyperEdgeSegmentSplitter/AreaRating',1858);mdb(340,1,{340:1},XPc);_.a=0;_.b=0;_.c=0;var fZ=zeb(kCe,'HyperEdgeSegmentSplitter/FreeArea',340);mdb(1859,1,fwe,YPc);_.Le=function ZPc(a,b){return VPc(JD(a,116),JD(b,116))};_.Fb=function $Pc(a){return this===a};_.Me=function _Pc(){return new Kqb(this)};var gZ=zeb(kCe,'HyperEdgeSegmentSplitter/lambda$0$Type',1859);mdb(1860,1,Rte,aQc);_.Ad=function bQc(a){NPc(this.a,this.d,this.c,this.b,JD(a,116))};_.b=0;var hZ=zeb(kCe,'HyperEdgeSegmentSplitter/lambda$1$Type',1860);mdb(1861,1,{},cQc);_.Kb=function dQc(a){return new gCb(null,new Wvb(JD(a,116).e,16))};var iZ=zeb(kCe,'HyperEdgeSegmentSplitter/lambda$2$Type',1861);mdb(1862,1,{},eQc);_.Kb=function fQc(a){return new gCb(null,new Wvb(JD(a,116).j,16))};var jZ=zeb(kCe,'HyperEdgeSegmentSplitter/lambda$3$Type',1862);mdb(1863,1,{},gQc);_.We=function hQc(a){return Reb(MD(a))};var kZ=zeb(kCe,'HyperEdgeSegmentSplitter/lambda$4$Type',1863);mdb(653,1,{},nQc);_.a=0;_.b=0;_.c=0;var pZ=zeb(kCe,'OrthogonalRoutingGenerator',653);mdb(1668,1,{},rQc);_.Kb=function sQc(a){return new gCb(null,new Wvb(JD(a,116).e,16))};var nZ=zeb(kCe,'OrthogonalRoutingGenerator/lambda$0$Type',1668);mdb(1669,1,{},tQc);_.Kb=function uQc(a){return new gCb(null,new Wvb(JD(a,116).j,16))};var oZ=zeb(kCe,'OrthogonalRoutingGenerator/lambda$1$Type',1669);mdb(661,1,{});var qZ=zeb(lCe,'BaseRoutingDirectionStrategy',661);mdb(1849,661,{},yQc);_.xg=function zQc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(!!a.r&&!a.q){return}k=b+a.o*c;for(j=new Hmb(a.n);j.ajxe){f=k;e=a;d=new Yfd(l,f);Qtb(g.a,d);vQc(this,g,e,d,false);m=a.r;if(m){n=Reb(MD(au(m.e,0)));d=new Yfd(n,f);Qtb(g.a,d);vQc(this,g,e,d,false);f=b+m.o*c;e=m;d=new Yfd(n,f);Qtb(g.a,d);vQc(this,g,e,d,false)}d=new Yfd(p,f);Qtb(g.a,d);vQc(this,g,e,d,false)}}}}};_.yg=function AQc(a){return a.i.n.a+a.n.a+a.a.a};_.zg=function BQc(){return mmd(),jmd};_.Ag=function CQc(){return mmd(),Uld};var rZ=zeb(lCe,'NorthToSouthRoutingStrategy',1849);mdb(1850,661,{},DQc);_.xg=function EQc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(!!a.r&&!a.q){return}k=b-a.o*c;for(j=new Hmb(a.n);j.ajxe){f=k;e=a;d=new Yfd(l,f);Qtb(g.a,d);vQc(this,g,e,d,false);m=a.r;if(m){n=Reb(MD(au(m.e,0)));d=new Yfd(n,f);Qtb(g.a,d);vQc(this,g,e,d,false);f=b-m.o*c;e=m;d=new Yfd(n,f);Qtb(g.a,d);vQc(this,g,e,d,false)}d=new Yfd(p,f);Qtb(g.a,d);vQc(this,g,e,d,false)}}}}};_.yg=function FQc(a){return a.i.n.a+a.n.a+a.a.a};_.zg=function GQc(){return mmd(),Uld};_.Ag=function HQc(){return mmd(),jmd};var sZ=zeb(lCe,'SouthToNorthRoutingStrategy',1850);mdb(1848,661,{},IQc);_.xg=function JQc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(!!a.r&&!a.q){return}k=b+a.o*c;for(j=new Hmb(a.n);j.ajxe){f=k;e=a;d=new Yfd(f,l);Qtb(g.a,d);vQc(this,g,e,d,true);m=a.r;if(m){n=Reb(MD(au(m.e,0)));d=new Yfd(f,n);Qtb(g.a,d);vQc(this,g,e,d,true);f=b+m.o*c;e=m;d=new Yfd(f,n);Qtb(g.a,d);vQc(this,g,e,d,true)}d=new Yfd(f,p);Qtb(g.a,d);vQc(this,g,e,d,true)}}}}};_.yg=function KQc(a){return a.i.n.b+a.n.b+a.a.b};_.zg=function LQc(){return mmd(),Tld};_.Ag=function MQc(){return mmd(),lmd};var tZ=zeb(lCe,'WestToEastRoutingStrategy',1848);mdb(812,1,{},SQc);_.Ib=function TQc(){return Ee(this.a)};_.b=0;_.c=false;_.d=false;_.f=0;var vZ=zeb(nCe,'NubSpline',812);mdb(410,1,{410:1},WQc,XQc);var uZ=zeb(nCe,'NubSpline/PolarCP',410);mdb(1440,1,XBe,pRc);_.pg=function rRc(a){return kRc(JD(a,37))};_.If=function sRc(a,b){oRc(this,JD(a,37),b)};var YQc,ZQc,$Qc,_Qc,aRc;var CZ=zeb(nCe,'SplineEdgeRouter',1440);mdb(273,1,{273:1},vRc);_.Ib=function wRc(){return this.a+' ->('+this.c+') '+this.b};_.c=0;var wZ=zeb(nCe,'SplineEdgeRouter/Dependency',273);mdb(454,23,{3:1,35:1,23:1,454:1},ARc);var xRc,yRc;var xZ=Aeb(nCe,'SplineEdgeRouter/SideToProcess',454,MI,CRc,BRc);var DRc;mdb(1441,1,oue,FRc);_.Mb=function GRc(a){return bRc(),!JD(a,132).o};var yZ=zeb(nCe,'SplineEdgeRouter/lambda$0$Type',1441);mdb(1442,1,{},HRc);_.Xe=function IRc(a){return bRc(),JD(a,132).v+1};var zZ=zeb(nCe,'SplineEdgeRouter/lambda$1$Type',1442);mdb(1443,1,Rte,JRc);_.Ad=function KRc(a){mRc(this.a,this.b,JD(a,49))};var AZ=zeb(nCe,'SplineEdgeRouter/lambda$2$Type',1443);mdb(1444,1,Rte,LRc);_.Ad=function MRc(a){nRc(this.a,this.b,JD(a,49))};var BZ=zeb(nCe,'SplineEdgeRouter/lambda$3$Type',1444);mdb(132,1,{35:1,132:1},SRc,TRc);_.Dd=function URc(a){return QRc(this,JD(a,132))};_.b=0;_.e=false;_.f=0;_.g=0;_.j=false;_.k=false;_.n=0;_.o=false;_.p=false;_.q=false;_.s=0;_.u=0;_.v=0;_.F=0;var EZ=zeb(nCe,'SplineSegment',132);mdb(457,1,{457:1},VRc);_.a=0;_.b=false;_.c=false;_.d=false;_.e=false;_.f=0;var DZ=zeb(nCe,'SplineSegment/EdgeInformation',457);mdb(1167,1,{},cSc);var GZ=zeb(tCe,Wwe,1167);mdb(1168,1,fwe,eSc);_.Le=function fSc(a,b){return dSc(JD(a,120),JD(b,120))};_.Fb=function gSc(a){return this===a};_.Me=function hSc(){return new Kqb(this)};var FZ=zeb(tCe,Xwe,1168);mdb(1166,1,{},nSc);var HZ=zeb(tCe,'MrTree',1166);mdb(398,23,{3:1,35:1,23:1,398:1,188:1,196:1},uSc);_.bg=function wSc(){return tSc(this)};_.og=function vSc(){return tSc(this)};var oSc,pSc,qSc,rSc;var IZ=Aeb(tCe,'TreeLayoutPhases',398,MI,ySc,xSc);var zSc;mdb(1082,214,Zwe,BSc);_.kf=function CSc(a,b){var c,d,e,f,g,h,i,j;Odb(LD(Pud(a,(DXc(),mXc))))||fEb((c=new gEb((urd(),new Ird(a))),c));g=b.dh(uCe);g.Tg('build tGraph',1);h=(i=new sTc,jNb(i,a),oNb(i,(MWc(),DWc),a),j=new Yrb,kSc(a,i,j),jSc(a,i,j),i);g.Ug();g=b.dh(uCe);g.Tg('Split graph',1);f=bSc(this.a,h);g.Ug();for(e=new Hmb(f);e.a'+wTc(this.c):'e_'+tb(this)};var VZ=zeb(wCe,'TEdge',65);mdb(120,150,{3:1,120:1,105:1,150:1},sTc);_.Ib=function tTc(){var a,b,c,d,e;e=null;for(d=Wtb(this.b,0);d.b!=d.d.c;){c=JD(iub(d),40);e+=(c.c==null||c.c.length==0?'n_'+c.g:'n_'+c.c)+'\n'}for(b=Wtb(this.a,0);b.b!=b.d.c;){a=JD(iub(b),65);e+=(!!a.b&&!!a.c?wTc(a.b)+'->'+wTc(a.c):'e_'+tb(a))+'\n'}return e};var XZ=zeb(wCe,'TGraph',120);mdb(633,494,{3:1,494:1,633:1,105:1,150:1});var _Z=zeb(wCe,'TShape',633);mdb(40,633,{3:1,494:1,40:1,633:1,105:1,150:1},xTc);_.Ib=function yTc(){return wTc(this)};var $Z=zeb(wCe,'TNode',40);mdb(236,1,Wte,zTc);_.Ic=function ATc(a){Efb(this,a)};_.Jc=function BTc(){var a;return a=Wtb(this.a.d,0),new CTc(a)};var ZZ=zeb(wCe,'TNode/2',236);mdb(334,1,Ate,CTc);_.Nb=function DTc(a){ctb(this,a)};_.Pb=function FTc(){return JD(iub(this.a),65).c};_.Ob=function ETc(){return hub(this.a)};_.Qb=function GTc(){kub(this.a)};var YZ=zeb(wCe,'TNode/2/1',334);mdb(1893,1,hye,MTc);_.If=function ZTc(a,b){KTc(this,JD(a,120),b)};var n$=zeb(yCe,'CompactionProcessor',1893);mdb(1894,1,fwe,$Tc);_.Le=function _Tc(a,b){return NTc(this.a,JD(a,40),JD(b,40))};_.Fb=function aUc(a){return this===a};_.Me=function bUc(){return new Kqb(this)};var a$=zeb(yCe,'CompactionProcessor/lambda$0$Type',1894);mdb(1895,1,oue,cUc);_.Mb=function dUc(a){return OTc(this.b,this.a,JD(a,49))};_.a=0;_.b=0;var b$=zeb(yCe,'CompactionProcessor/lambda$1$Type',1895);mdb(1904,1,fwe,eUc);_.Le=function fUc(a,b){return PTc(JD(a,40),JD(b,40))};_.Fb=function gUc(a){return this===a};_.Me=function hUc(){return new Kqb(this)};var c$=zeb(yCe,'CompactionProcessor/lambda$10$Type',1904);mdb(1905,1,fwe,iUc);_.Le=function jUc(a,b){return QTc(JD(a,40),JD(b,40))};_.Fb=function kUc(a){return this===a};_.Me=function lUc(){return new Kqb(this)};var d$=zeb(yCe,'CompactionProcessor/lambda$11$Type',1905);mdb(1906,1,fwe,mUc);_.Le=function nUc(a,b){return RTc(JD(a,40),JD(b,40))};_.Fb=function oUc(a){return this===a};_.Me=function pUc(){return new Kqb(this)};var e$=zeb(yCe,'CompactionProcessor/lambda$12$Type',1906);mdb(1896,1,oue,qUc);_.Mb=function rUc(a){return STc(this.a,JD(a,49))};_.a=0;var f$=zeb(yCe,'CompactionProcessor/lambda$2$Type',1896);mdb(1897,1,oue,sUc);_.Mb=function tUc(a){return TTc(this.a,JD(a,49))};_.a=0;var g$=zeb(yCe,'CompactionProcessor/lambda$3$Type',1897);mdb(1898,1,oue,uUc);_.Mb=function vUc(a){return JD(a,40).c.indexOf(vCe)==-1};var h$=zeb(yCe,'CompactionProcessor/lambda$4$Type',1898);mdb(1899,1,{},wUc);_.Kb=function xUc(a){return UTc(this.a,JD(a,40))};_.a=0;var i$=zeb(yCe,'CompactionProcessor/lambda$5$Type',1899);mdb(Oue,1,{},yUc);_.Kb=function zUc(a){return VTc(this.a,JD(a,40))};_.a=0;var j$=zeb(yCe,'CompactionProcessor/lambda$6$Type',Oue);mdb(1901,1,fwe,AUc);_.Le=function BUc(a,b){return WTc(this.a,JD(a,240),JD(b,240))};_.Fb=function CUc(a){return this===a};_.Me=function DUc(){return new Kqb(this)};var k$=zeb(yCe,'CompactionProcessor/lambda$7$Type',1901);mdb(1902,1,fwe,EUc);_.Le=function FUc(a,b){return XTc(this.a,JD(a,40),JD(b,40))};_.Fb=function GUc(a){return this===a};_.Me=function HUc(){return new Kqb(this)};var l$=zeb(yCe,'CompactionProcessor/lambda$8$Type',1902);mdb(1903,1,fwe,IUc);_.Le=function JUc(a,b){return YTc(JD(a,40),JD(b,40))};_.Fb=function KUc(a){return this===a};_.Me=function LUc(){return new Kqb(this)};var m$=zeb(yCe,'CompactionProcessor/lambda$9$Type',1903);mdb(1891,1,hye,NUc);_.If=function OUc(a,b){MUc(JD(a,120),b)};var o$=zeb(yCe,'DirectionProcessor',1891);mdb(1883,1,hye,RUc);_.If=function TUc(a,b){QUc(this,JD(a,120),b)};var p$=zeb(yCe,'FanProcessor',1883);mdb(1251,1,hye,VUc);_.If=function YUc(a,b){UUc(JD(a,120),b)};var u$=zeb(yCe,'GraphBoundsProcessor',1251);mdb(1252,1,{},ZUc);_.We=function $Uc(a){return JD(a,40).e.a};var q$=zeb(yCe,'GraphBoundsProcessor/lambda$0$Type',1252);mdb(1253,1,{},_Uc);_.We=function aVc(a){return JD(a,40).e.b};var r$=zeb(yCe,'GraphBoundsProcessor/lambda$1$Type',1253);mdb(1254,1,{},bVc);_.We=function cVc(a){return WUc(JD(a,40))};var s$=zeb(yCe,'GraphBoundsProcessor/lambda$2$Type',1254);mdb(1255,1,{},dVc);_.We=function eVc(a){return XUc(JD(a,40))};var t$=zeb(yCe,'GraphBoundsProcessor/lambda$3$Type',1255);mdb(264,23,{3:1,35:1,23:1,264:1,196:1},rVc);_.bg=function sVc(){switch(this.g){case 0:return new ZVc;case 1:return new RUc;case 2:return new JVc;case 3:return new PVc;case 4:return new CVc;case 8:return new yVc;case 5:return new NUc;case 6:return new WVc;case 7:return new MTc;case 9:return new VUc;case 10:return new aWc;default:throw Icb(new hfb(Eye+(this.f!=null?this.f:''+this.g)));}};var fVc,gVc,hVc,iVc,jVc,kVc,lVc,mVc,nVc,oVc,pVc;var v$=Aeb(yCe,Fye,264,MI,uVc,tVc);var vVc;mdb(1890,1,hye,yVc);_.If=function zVc(a,b){xVc(JD(a,120),b)};var w$=zeb(yCe,'LevelCoordinatesProcessor',1890);mdb(1888,1,hye,CVc);_.If=function DVc(a,b){AVc(this,JD(a,120),b)};_.a=0;var y$=zeb(yCe,'LevelHeightProcessor',1888);mdb(1889,1,Wte,EVc);_.Ic=function FVc(a){Efb(this,a)};_.Jc=function GVc(){return Fnb(),Xnb(),Wnb};var x$=zeb(yCe,'LevelHeightProcessor/1',1889);mdb(1884,1,hye,JVc);_.If=function KVc(a,b){HVc(this,JD(a,120),b)};var A$=zeb(yCe,'LevelProcessor',1884);mdb(1885,1,oue,LVc);_.Mb=function MVc(a){return Odb(LD(lNb(JD(a,40),(MWc(),JWc))))};var z$=zeb(yCe,'LevelProcessor/lambda$0$Type',1885);mdb(1886,1,hye,PVc);_.If=function QVc(a,b){NVc(this,JD(a,120),b)};_.a=0;var C$=zeb(yCe,'NeighborsProcessor',1886);mdb(1887,1,Wte,RVc);_.Ic=function SVc(a){Efb(this,a)};_.Jc=function TVc(){return Fnb(),Xnb(),Wnb};var B$=zeb(yCe,'NeighborsProcessor/1',1887);mdb(1892,1,hye,WVc);_.If=function XVc(a,b){UVc(this,JD(a,120),b)};_.a=0;var D$=zeb(yCe,'NodePositionProcessor',1892);mdb(1882,1,hye,ZVc);_.If=function $Vc(a,b){YVc(this,JD(a,120),b)};var E$=zeb(yCe,'RootProcessor',1882);mdb(1907,1,hye,aWc);_.If=function bWc(a,b){_Vc(JD(a,120),b)};var F$=zeb(yCe,'Untreeifyer',1907);mdb(385,23,{3:1,35:1,23:1,385:1},gWc);var cWc,dWc,eWc;var G$=Aeb(CCe,'EdgeRoutingMode',385,MI,iWc,hWc);var jWc;var lWc,mWc,nWc,oWc,pWc,qWc,rWc,sWc,tWc,uWc,vWc,wWc,xWc,yWc,zWc,AWc,BWc,CWc,DWc,EWc,FWc,GWc,HWc,IWc,JWc,KWc,LWc;mdb(846,1,lxe,YWc);_.tf=function ZWc(a){mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,ECe),''),LCe),'Turns on Tree compaction which decreases the size of the whole tree by placing nodes of multiple levels in one large level'),(Ndb(),false)),(Ued(),Med)),GI),Crb((Ged(),Eed)))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,FCe),''),'Edge End Texture Length'),'Should be set to the length of the texture at the end of an edge. This value can be used to improve the Edge Routing.'),7),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,GCe),''),'Tree Level'),'The index for the tree level the node is in'),zfb(0)),Qed),UI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,HCe),''),LCe),'When set to a positive number this option will force the algorithm to place the node to the specified position within the trees layer if weighting is set to constraint'),zfb(-1)),Qed),UI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,ICe),''),'Weighting of Nodes'),'Which weighting to use when computing a node order.'),WWc),Oed),K$),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,JCe),''),'Edge Routing Mode'),'Chooses an Edge Routing algorithm.'),QWc),Oed),G$),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,KCe),''),'Search Order'),'Which search order to use when computing a spanning tree.'),TWc),Oed),L$),Crb(Eed))));EXc((new FXc,a))};var NWc,OWc,PWc,QWc,RWc,SWc,TWc,UWc,VWc,WWc;var H$=zeb(CCe,'MrTreeMetaDataProvider',846);mdb(990,1,lxe,FXc);_.tf=function GXc(a){EXc(a)};var $Wc,_Wc,aXc,bXc,cXc,dXc,eXc,fXc,gXc,hXc,iXc,jXc,kXc,lXc,mXc,nXc,oXc,pXc,qXc,rXc,sXc,tXc,uXc,vXc,wXc,xXc,yXc,zXc,AXc,BXc,CXc;var J$=zeb(CCe,'MrTreeOptions',990);mdb(991,1,{},HXc);_.uf=function IXc(){var a;return a=new BSc,a};_.vf=function JXc(a){};var I$=zeb(CCe,'MrTreeOptions/MrtreeFactory',991);mdb(353,23,{3:1,35:1,23:1,353:1},PXc);var KXc,LXc,MXc,NXc;var K$=Aeb(CCe,'OrderWeighting',353,MI,RXc,QXc);var SXc;mdb(425,23,{3:1,35:1,23:1,425:1},XXc);var UXc,VXc;var L$=Aeb(CCe,'TreeifyingOrder',425,MI,ZXc,YXc);var $Xc;mdb(1446,1,XBe,hYc);_.pg=function iYc(a){return JD(a,120),aYc};_.If=function jYc(a,b){gYc(this,JD(a,120),b)};var aYc;var M$=zeb('org.eclipse.elk.alg.mrtree.p1treeify','DFSTreeifyer',1446);mdb(1447,1,XBe,pYc);_.pg=function qYc(a){return JD(a,120),kYc};_.If=function uYc(a,b){oYc(this,JD(a,120),b)};var kYc;var U$=zeb(PCe,'NodeOrderer',1447);mdb(1454,1,{},wYc);_.rd=function xYc(a){return vYc(a)};var N$=zeb(PCe,'NodeOrderer/0methodref$lambda$6$Type',1454);mdb(1448,1,oue,yYc);_.Mb=function zYc(a){return lYc(),Odb(LD(lNb(JD(a,40),(MWc(),JWc))))};var O$=zeb(PCe,'NodeOrderer/lambda$0$Type',1448);mdb(1449,1,oue,AYc);_.Mb=function BYc(a){return lYc(),JD(lNb(JD(a,40),(DXc(),qXc)),15).a<0};var P$=zeb(PCe,'NodeOrderer/lambda$1$Type',1449);mdb(1450,1,oue,CYc);_.Mb=function DYc(a){return rYc(this.a,JD(a,40))};var Q$=zeb(PCe,'NodeOrderer/lambda$2$Type',1450);mdb(1451,1,oue,EYc);_.Mb=function FYc(a){return sYc(this.a,JD(a,40))};var R$=zeb(PCe,'NodeOrderer/lambda$3$Type',1451);mdb(1452,1,fwe,GYc);_.Le=function HYc(a,b){return tYc(JD(a,40),JD(b,40))};_.Fb=function IYc(a){return this===a};_.Me=function JYc(){return new Kqb(this)};var S$=zeb(PCe,'NodeOrderer/lambda$4$Type',1452);mdb(1453,1,oue,KYc);_.Mb=function LYc(a){return lYc(),JD(lNb(JD(a,40),(MWc(),rWc)),15).a!=0};var T$=zeb(PCe,'NodeOrderer/lambda$5$Type',1453);mdb(1455,1,XBe,TYc);_.pg=function UYc(a){return JD(a,120),MYc};_.If=function VYc(a,b){RYc(this,JD(a,120),b)};_.b=0;var MYc;var V$=zeb('org.eclipse.elk.alg.mrtree.p3place','NodePlacer',1455);mdb(1456,1,XBe,dZc);_.pg=function eZc(a){return JD(a,120),WYc};_.If=function sZc(a,b){cZc(JD(a,120),b)};var WYc;var p_=zeb(QCe,'EdgeRouter',1456);mdb(1458,1,fwe,tZc);_.Le=function uZc(a,b){return ofb(JD(a,15).a,JD(b,15).a)};_.Fb=function vZc(a){return this===a};_.Me=function wZc(){return new Kqb(this)};var W$=zeb(QCe,'EdgeRouter/0methodref$compare$Type',1458);mdb(1463,1,{},xZc);_.We=function yZc(a){return Reb(MD(a))};var X$=zeb(QCe,'EdgeRouter/1methodref$doubleValue$Type',1463);mdb(1465,1,fwe,zZc);_.Le=function AZc(a,b){return Xeb(Reb(MD(a)),Reb(MD(b)))};_.Fb=function BZc(a){return this===a};_.Me=function CZc(){return new Kqb(this)};var Y$=zeb(QCe,'EdgeRouter/2methodref$compare$Type',1465);mdb(1467,1,fwe,DZc);_.Le=function EZc(a,b){return Xeb(Reb(MD(a)),Reb(MD(b)))};_.Fb=function FZc(a){return this===a};_.Me=function GZc(){return new Kqb(this)};var Z$=zeb(QCe,'EdgeRouter/3methodref$compare$Type',1467);mdb(1469,1,{},HZc);_.We=function IZc(a){return Reb(MD(a))};var $$=zeb(QCe,'EdgeRouter/4methodref$doubleValue$Type',1469);mdb(1471,1,fwe,JZc);_.Le=function KZc(a,b){return Xeb(Reb(MD(a)),Reb(MD(b)))};_.Fb=function LZc(a){return this===a};_.Me=function MZc(){return new Kqb(this)};var _$=zeb(QCe,'EdgeRouter/5methodref$compare$Type',1471);mdb(1473,1,fwe,NZc);_.Le=function OZc(a,b){return Xeb(Reb(MD(a)),Reb(MD(b)))};_.Fb=function PZc(a){return this===a};_.Me=function QZc(){return new Kqb(this)};var a_=zeb(QCe,'EdgeRouter/6methodref$compare$Type',1473);mdb(1457,1,{},RZc);_.Kb=function SZc(a){return XYc(),JD(lNb(JD(a,40),(DXc(),BXc)),15)};var b_=zeb(QCe,'EdgeRouter/lambda$0$Type',1457);mdb(1468,1,{},TZc);_.Kb=function UZc(a){return fZc(JD(a,40))};var c_=zeb(QCe,'EdgeRouter/lambda$11$Type',1468);mdb(1470,1,{},VZc);_.Kb=function WZc(a){return gZc(this.b,this.a,JD(a,40))};_.a=0;_.b=0;var d_=zeb(QCe,'EdgeRouter/lambda$13$Type',1470);mdb(1472,1,{},XZc);_.Kb=function YZc(a){return hZc(this.b,this.a,JD(a,40))};_.a=0;_.b=0;var e_=zeb(QCe,'EdgeRouter/lambda$15$Type',1472);mdb(1474,1,fwe,ZZc);_.Le=function $Zc(a,b){return iZc(JD(a,65),JD(b,65))};_.Fb=function _Zc(a){return this===a};_.Me=function a$c(){return new Kqb(this)};var f_=zeb(QCe,'EdgeRouter/lambda$17$Type',1474);mdb(1475,1,fwe,b$c);_.Le=function c$c(a,b){return jZc(JD(a,65),JD(b,65))};_.Fb=function d$c(a){return this===a};_.Me=function e$c(){return new Kqb(this)};var g_=zeb(QCe,'EdgeRouter/lambda$18$Type',1475);mdb(1476,1,fwe,f$c);_.Le=function g$c(a,b){return kZc(JD(a,65),JD(b,65))};_.Fb=function h$c(a){return this===a};_.Me=function i$c(){return new Kqb(this)};var h_=zeb(QCe,'EdgeRouter/lambda$19$Type',1476);mdb(1459,1,oue,j$c);_.Mb=function k$c(a){return lZc(this.a,JD(a,40))};_.a=0;var i_=zeb(QCe,'EdgeRouter/lambda$2$Type',1459);mdb(1477,1,fwe,l$c);_.Le=function m$c(a,b){return mZc(JD(a,65),JD(b,65))};_.Fb=function n$c(a){return this===a};_.Me=function o$c(){return new Kqb(this)};var j_=zeb(QCe,'EdgeRouter/lambda$20$Type',1477);mdb(1460,1,fwe,p$c);_.Le=function q$c(a,b){return nZc(JD(a,40),JD(b,40))};_.Fb=function r$c(a){return this===a};_.Me=function s$c(){return new Kqb(this)};var k_=zeb(QCe,'EdgeRouter/lambda$3$Type',1460);mdb(1461,1,fwe,t$c);_.Le=function u$c(a,b){return oZc(JD(a,40),JD(b,40))};_.Fb=function v$c(a){return this===a};_.Me=function w$c(){return new Kqb(this)};var l_=zeb(QCe,'EdgeRouter/lambda$4$Type',1461);mdb(1462,1,{},x$c);_.Kb=function y$c(a){return pZc(JD(a,40))};var m_=zeb(QCe,'EdgeRouter/lambda$5$Type',1462);mdb(1464,1,{},z$c);_.Kb=function A$c(a){return qZc(this.b,this.a,JD(a,40))};_.a=0;_.b=0;var n_=zeb(QCe,'EdgeRouter/lambda$7$Type',1464);mdb(1466,1,{},B$c);_.Kb=function C$c(a){return rZc(this.b,this.a,JD(a,40))};_.a=0;_.b=0;var o_=zeb(QCe,'EdgeRouter/lambda$9$Type',1466);mdb(662,1,{662:1},E$c);_.e=0;_.f=false;_.g=false;var s_=zeb(QCe,'MultiLevelEdgeNodeNodeGap',662);mdb(1864,1,fwe,H$c);_.Le=function I$c(a,b){return F$c(JD(a,240),JD(b,240))};_.Fb=function J$c(a){return this===a};_.Me=function K$c(){return new Kqb(this)};var q_=zeb(QCe,'MultiLevelEdgeNodeNodeGap/lambda$0$Type',1864);mdb(1865,1,fwe,L$c);_.Le=function M$c(a,b){return G$c(JD(a,240),JD(b,240))};_.Fb=function N$c(a){return this===a};_.Me=function O$c(){return new Kqb(this)};var r_=zeb(QCe,'MultiLevelEdgeNodeNodeGap/lambda$1$Type',1865);var P$c;mdb(487,23,{3:1,35:1,23:1,487:1,188:1,196:1},V$c);_.bg=function X$c(){return U$c(this)};_.og=function W$c(){return U$c(this)};var R$c,S$c;var t_=Aeb(RCe,'RadialLayoutPhases',487,MI,Z$c,Y$c);var $$c;mdb(1083,214,Zwe,b_c);_.kf=function c_c(a,b){var c,d,e,f,g,h;c=a_c(this,a);b.Tg('Radial layout',c.c.length);Odb(LD(Pud(a,(u1c(),h1c))))||fEb((d=new gEb((urd(),new Ird(a))),d));h=e_c(a);Rud(a,(Q$c(),P$c),h);if(!h){throw Icb(new hfb('The given graph is not a tree!'))}e=Reb(MD(Pud(a,m1c)));e==0&&(e=d_c(a));Rud(a,m1c,e);for(g=new Hmb(a_c(this,a));g.a=3){v=JD(SFd(t,0),26);w=JD(SFd(t,1),26);f=0;while(f+2=v.f+w.f+k||w.f>=u.f+v.f+k){B=true;break}else{++f}}}else{B=true}if(!B){m=t.i;for(h=new fKd(t);h.e!=h.i.gc();){g=JD(dKd(h),26);Rud(g,(gjd(),Aid),zfb(m));--m}pod(a,new _nd);b.Ug();return}c=(ybd(this.a),Bbd(this.a,(B2c(),y2c),JD(Pud(a,B4c),188)),Bbd(this.a,z2c,JD(Pud(a,s4c),188)),Bbd(this.a,A2c,JD(Pud(a,y4c),188)),vbd(this.a,(D=new acd,Xbd(D,y2c,(W2c(),U2c)),Xbd(D,z2c,T2c),Odb(LD(Pud(a,p4c)))&&Xbd(D,y2c,V2c),Odb(LD(Pud(a,g4c)))&&Xbd(D,y2c,S2c),D)),wbd(this.a,a));j=1/c.c.length;A=0;for(o=new Hmb(c);o.a0&&agd((RDb(c-1,b.length),b.charCodeAt(c-1)),qye)){--c}if(e>=c){throw Icb(new hfb('The given string does not contain any numbers.'))}f=Cgb((QDb(e,c,b.length),b.substr(e,c-e)),',|;|\r|\n');if(f.length!=2){throw Icb(new hfb('Exactly two numbers are expected, '+f.length+' were found.'))}try{this.a=Udb(Kgb(f[0]));this.b=Udb(Kgb(f[1]))}catch(a){a=Hcb(a);if(RD(a,131)){d=a;throw Icb(new hfb(rye+d))}else throw Icb(a)}};_.Ib=function dgd(){return '('+this.a+','+this.b+')'};_.a=0;_.b=0;var o2=zeb(sye,'KVector',8);mdb(78,66,{3:1,4:1,20:1,31:1,56:1,18:1,66:1,16:1,78:1,414:1},jgd,kgd,lgd);_.Nc=function ogd(){return igd(this)};_.ag=function mgd(b){var c,d,e,f,g,h;e=Cgb(b,',|;|\\(|\\)|\\[|\\]|\\{|\\}| |\t|\n');_tb(this);try{d=0;g=0;f=0;h=0;while(d0){g%2==0?(f=Udb(e[d])):(h=Udb(e[d]));g>0&&g%2!=0&&Qtb(this,new Yfd(f,h));++g}++d}}catch(a){a=Hcb(a);if(RD(a,131)){c=a;throw Icb(new hfb('The given string does not match the expected format for vectors.'+c))}else throw Icb(a)}};_.Ib=function pgd(){var a,b,c;a=new khb('(');b=Wtb(this,0);while(b.b!=b.d.c){c=JD(iub(b),8);ehb(a,c.a+','+c.b);b.b!=b.d.c&&(a.a+='; ',a)}return (a.a+=')',a).a};var n2=zeb(sye,'KVectorChain',78);mdb(256,23,{3:1,35:1,23:1,256:1},xgd);var qgd,rgd,sgd,tgd,ugd,vgd;var q2=Aeb(xEe,'Alignment',256,MI,zgd,ygd);var Agd;mdb(975,1,lxe,Qgd);_.tf=function Rgd(a){Pgd(a)};var Cgd,Dgd,Egd,Fgd,Ggd,Hgd,Igd,Jgd,Kgd,Lgd,Mgd,Ngd;var s2=zeb(xEe,'BoxLayouterOptions',975);mdb(976,1,{},Sgd);_.uf=function Tgd(){var a;return a=new wod,a};_.vf=function Ugd(a){};var r2=zeb(xEe,'BoxLayouterOptions/BoxFactory',976);mdb(299,23,{3:1,35:1,23:1,299:1},ahd);var Vgd,Wgd,Xgd,Ygd,Zgd,$gd;var t2=Aeb(xEe,'ContentAlignment',299,MI,chd,bhd);var dhd;mdb(689,1,lxe,hjd);_.tf=function ijd(a){mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,CEe),''),'Layout Algorithm'),'Select a specific layout algorithm.'),(Ued(),Sed)),hJ),Crb((Ged(),Eed)))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,DEe),''),'Resolved Layout Algorithm'),'Meta data associated with the selected algorithm.'),Red),G1),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,tBe),''),'Alignment'),'Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm.'),hhd),Oed),q2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,sxe),''),'Aspect Ratio'),'The desired aspect ratio of the drawing, that is the quotient of width by height.'),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,EEe),''),'Bend Points'),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),Red),n2),Crb(Bed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,FBe),''),'Content Alignment'),'Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option.'),qhd),Ped),t2),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,sBe),''),'Debug Mode'),'Whether additional debug information shall be generated.'),(Ndb(),false)),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,wBe),''),'Direction'),'Overall direction of edges: horizontal (right / left) or vertical (down / up).'),thd),Oed),v2),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,PAe),''),'Edge Routing'),'What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline.'),yhd),Oed),y2),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,AEe),''),'Expand Nodes'),'If active, nodes are expanded to fill the area of their parent.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,KAe),''),'Hierarchy Handling'),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),Dhd),Oed),C2),Drb(Eed,WC(OC(g2,1),kue,160,0,[Ded])))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,vxe),''),'Padding'),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),did),Red),l2),Drb(Eed,WC(OC(g2,1),kue,160,0,[Ded])))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,wxe),''),'Interactive'),'Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,SBe),''),'interactive Layout'),'Whether the graph should be changeable interactively and by setting constraints'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,zxe),''),'Omit Node Micro Layout'),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,xxe),''),'Port Constraints'),'Defines constraints of the position of the ports of a node.'),rid),Oed),H2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,PBe),''),'Position'),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),Red),o2),Drb(Ded,WC(OC(g2,1),kue,160,0,[Fed,Ced])))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,pxe),''),'Priority'),'Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used.'),Qed),UI),Drb(Ded,WC(OC(g2,1),kue,160,0,[Bed])))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,txe),''),'Randomization Seed'),'Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time).'),Qed),UI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,uxe),''),'Separate Connected Components'),'Whether each connected component should be processed separately.'),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,GBe),''),'Junction Points'),'This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order.'),Ohd),Red),n2),Crb(Bed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,KBe),''),'Comment Box'),'Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related.'),false),Med),GI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,LBe),''),'Hypernode'),'Whether the node should be handled as a hypernode.'),false),Med),GI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,FEe),''),'Label Manager'),"Label managers can shorten labels upon a layout algorithm's request."),Red),j2),Drb(Eed,WC(OC(g2,1),kue,160,0,[Ced])))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,GEe),''),'Softwrapping Fuzziness'),'Determines the amount of fuzziness to be used when performing softwrapping on labels. The value expresses the percent of overhang that is permitted for each line. If the next line would take up less space than this threshold, it is appended to the current line instead of being placed in a new line.'),0),Ned),LI),Crb(Ced))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,QBe),''),'Margins'),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),Qhd),Red),k2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,qBe),''),'No Layout'),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),false),Med),GI),Drb(Ded,WC(OC(g2,1),kue,160,0,[Bed,Fed,Ced])))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,HEe),''),'Scale Factor'),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),Ned),LI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,IEe),''),'Child Area Width'),'The width of the area occupied by the laid out children of a node.'),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,JEe),''),'Child Area Height'),'The height of the area occupied by the laid out children of a node.'),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Fxe),''),mEe),"Turns topdown layout on and off. If this option is enabled, hierarchical layout will be computed first for the root node and then for its children recursively. Layouts are then scaled down to fit the area provided by their parents. Graphs must follow a certain structure for topdown layout to work properly. {@link TopdownNodeTypes.PARALLEL_NODE} nodes must have children of type {@link TopdownNodeTypes.HIERARCHICAL_NODE} and must define {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} for their children. Furthermore they need to be laid out using an algorithm that is a {@link TopdownLayoutProvider}. Hierarchical nodes can also be parents of other hierarchical nodes and can optionally use a {@link TopdownSizeApproximator} to dynamically set sizes during topdown layout. In this case {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} should be set on the node itself rather than the parent. The values are then used by the size approximator as base values. Hierarchical nodes require the layout option {@link nodeSize.fixedGraphSize} to be true to prevent the algorithm used there from resizing the hierarchical node. This option is not supported if 'Hierarchy Handling' is set to 'INCLUDE_CHILDREN'"),false),Med),GI),Crb(Eed))));hdd(a,Fxe,Jxe,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,KEe),''),'Animate'),'Whether the shift from the old layout to the new computed layout shall be animated.'),true),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,LEe),''),'Animation Time Factor'),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),zfb(100)),Qed),UI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,MEe),''),'Layout Ancestors'),'Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,NEe),''),'Maximal Animation Time'),'The maximal time for animations, in milliseconds.'),zfb(4000)),Qed),UI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,OEe),''),'Minimal Animation Time'),'The minimal time for animations, in milliseconds.'),zfb(400)),Qed),UI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,PEe),''),'Progress Bar'),'Whether a progress bar shall be displayed during layout computations.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,QEe),''),'Validate Graph'),'Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,REe),''),'Validate Options'),'Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user.'),true),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,SEe),''),'Zoom to Fit'),'Whether the zoom level shall be set to view the whole diagram after layout.'),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,BEe),'box'),'Box Layout Mode'),'Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better.'),lhd),Oed),Z2),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,TEe),'json'),'Shape Coords'),'For layouts transferred into JSON graphs, specify the coordinate system to be used for nodes, ports, and labels of nodes and ports.'),Mhd),Oed),M2),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,UEe),'json'),'Edge Coords'),'For layouts transferred into JSON graphs, specify the coordinate system to be used for edge route points and edge labels.'),Khd),Oed),w2),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,dBe),QAe),'Comment Comment Spacing'),'Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing.'),10),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,eBe),QAe),'Comment Node Spacing'),'Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing.'),10),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,fBe),QAe),'Components Spacing'),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,gBe),QAe),'Edge Spacing'),'Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines.'),10),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,rxe),QAe),'Edge Label Spacing'),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,hBe),QAe),'Edge Node Spacing'),'Spacing to be preserved between nodes and edges.'),10),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,iBe),QAe),'Label Spacing'),'Determines the amount of space to be left between two labels of the same graph element.'),0),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,lBe),QAe),'Label Node Spacing'),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,jBe),QAe),'Horizontal spacing between Label and Port'),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,kBe),QAe),'Vertical spacing between Label and Port'),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,qxe),QAe),'Node Spacing'),'The minimal distance to be preserved between each two nodes.'),20),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,mBe),QAe),'Node Self Loop Spacing'),'Spacing to be preserved between a node and its self loops.'),10),Ned),LI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,nBe),QAe),'Port Spacing'),'Spacing between pairs of ports of the same node.'),10),Ned),LI),Drb(Eed,WC(OC(g2,1),kue,160,0,[Ded])))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,oBe),QAe),'Individual Spacing'),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),Red),t3),Drb(Ded,WC(OC(g2,1),kue,160,0,[Bed,Fed,Ced])))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,RBe),QAe),'Additional Port Space'),'Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border.'),Tid),Red),k2),Crb(Eed))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,OBe),aFe),'Layout Partition'),'Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction).'),Qed),UI),Drb(Eed,WC(OC(g2,1),kue,160,0,[Ded])))));hdd(a,OBe,NBe,hid);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,NBe),aFe),'Layout Partitioning'),'Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle.'),fid),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,xBe),bFe),'Node Label Padding'),'Define padding for node labels that are placed inside of a node.'),Shd),Red),l2),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Dxe),bFe),'Node Label Placement'),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),Uhd),Ped),F2),Drb(Ded,WC(OC(g2,1),kue,160,0,[Ced])))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,ABe),cFe),'Port Alignment'),'Defines the default port distribution for a node. May be overridden for each side individually.'),jid),Oed),G2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,BBe),cFe),'Port Alignment (North)'),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),Oed),G2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,CBe),cFe),'Port Alignment (South)'),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),Oed),G2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,DBe),cFe),'Port Alignment (West)'),"Defines how ports on the western side are placed, overriding the node's general port alignment."),Oed),G2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,EBe),cFe),'Port Alignment (East)'),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),Oed),G2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Cxe),dFe),'Node Size Constraints'),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),Whd),Ped),N2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Bxe),dFe),'Node Size Options'),'Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications.'),_hd),Ped),O2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Vxe),dFe),'Node Size Minimum'),'The minimal size to which a node can be reduced.'),Zhd),Red),o2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Axe),dFe),'Fixed Graph Size'),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),false),Med),GI),Crb(Eed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,IBe),_Ae),'Edge Label Placement'),'Gives a hint on where to put edge labels.'),whd),Oed),x2),Crb(Ced))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,yxe),_Ae),'Inline Edge Labels'),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),false),Med),GI),Crb(Ced))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,VEe),'font'),'Font Name'),'Font name used for a label.'),Sed),hJ),Crb(Ced))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,WEe),'font'),'Font Size'),'Font size used for a label.'),Qed),UI),Crb(Ced))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,MBe),eFe),'Port Anchor Offset'),'The offset to the port position where connections shall be attached.'),Red),o2),Crb(Fed))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,JBe),eFe),'Port Index'),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),Qed),UI),Crb(Fed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,rBe),eFe),'Port Side'),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),yid),Oed),J2),Crb(Fed))));mdd(a,new ied(yed(xed(zed(sed(wed(ted(ued(new Aed,pBe),eFe),'Port Border Offset'),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),Ned),LI),Crb(Fed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Exe),fFe),'Port Label Placement'),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),vid),Ped),I2),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,yBe),fFe),'Port Labels Next to Port'),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),false),Med),GI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,zBe),fFe),'Treat Port Labels as Group'),'If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port.'),true),Med),GI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,XEe),gFe),'Number of size categories'),'Defines the number of categories to use for the FIXED_INTEGER_RATIO_BOXES size approximator.'),zfb(3)),Qed),UI),Crb(Eed))));hdd(a,XEe,ZEe,ejd);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,YEe),gFe),'Weight of a node containing children for determining the graph size'),'When determining the graph size for the size categorisation, this value determines how many times a node containing children is weighted more than a simple node. For example setting this value to four would result in a graph containing a simple node and a hierarchical node to be counted as having a size of five.'),zfb(4)),Qed),UI),Crb(Eed))));hdd(a,YEe,XEe,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Gxe),gFe),'Topdown Scale Factor'),"The scaling factor to be applied to the nodes laid out within the node in recursive topdown layout. The difference to 'Scale Factor' is that the node itself is not scaled. This value has to be set on hierarchical nodes."),1),Ned),LI),Crb(Eed))));hdd(a,Gxe,Jxe,ajd);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,ZEe),gFe),'Topdown Size Approximator'),'The size approximator to be used to set sizes of hierarchical nodes during topdown layout. The default value is null, which results in nodes keeping whatever size is defined for them e.g. through parent parallel node or by manually setting the size.'),null),Red),D2),Crb(Ded))));hdd(a,ZEe,Jxe,cjd);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Hxe),gFe),'Topdown Hierarchical Node Width'),'The fixed size of a hierarchical node when using topdown layout. If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself.'),150),Ned),LI),Drb(Eed,WC(OC(g2,1),kue,160,0,[Ded])))));hdd(a,Hxe,Jxe,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Ixe),gFe),'Topdown Hierarchical Node Aspect Ratio'),'The fixed aspect ratio of a hierarchical node when using topdown layout. Default is 1/sqrt(2). If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself.'),1.414),Ned),LI),Drb(Eed,WC(OC(g2,1),kue,160,0,[Ded])))));hdd(a,Ixe,Jxe,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,Jxe),gFe),'Topdown Node Type'),'The different node types used for topdown layout. If the node type is set to {@link TopdownNodeTypes.PARALLEL_NODE} the algorithm must be set to a {@link TopdownLayoutProvider} such as {@link TopdownPacking}. The {@link nodeSize.fixedGraphSize} option is technically only required for hierarchical nodes.'),null),Oed),P2),Crb(Ded))));hdd(a,Jxe,Axe,null);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,$Ee),gFe),'Topdown Scale Cap'),'Determines the upper limit for the topdown scale factor. The default value is 1.0 which ensures that nested children never end up appearing larger than their parents in terms of unit sizes such as the font size. If the limit is larger, nodes will fully utilize the available space, but it is counteriniuitive for inner nodes to have a larger scale than outer nodes.'),1),Ned),LI),Crb(Eed))));hdd(a,$Ee,Jxe,$id);mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,uBe),hFe),'Activate Inside Self Loops'),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),false),Med),GI),Crb(Ded))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,vBe),hFe),'Inside Self Loop'),'Whether a self loop should be routed inside a node instead of around that node.'),false),Med),GI),Crb(Bed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,HBe),'edge'),'Edge Thickness'),'The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it.'),1),Ned),LI),Crb(Bed))));mdd(a,new ied(yed(xed(zed(red(sed(wed(ted(ued(new Aed,_Ee),'edge'),'Edge Type'),'The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations.'),Ahd),Oed),z2),Crb(Bed))));ldd(a,new Ocd(Vcd(Xcd(Wcd(new Ycd,sve),'Layered'),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.')));ldd(a,new Ocd(Vcd(Xcd(Wcd(new Ycd,'org.eclipse.elk.orthogonal'),'Orthogonal'),'Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia \'86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.')));ldd(a,new Ocd(Vcd(Xcd(Wcd(new Ycd,oxe),'Force'),'Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984.')));ldd(a,new Ocd(Vcd(Xcd(Wcd(new Ycd,'org.eclipse.elk.circle'),'Circle'),'Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph.')));ldd(a,new Ocd(Vcd(Xcd(Wcd(new Ycd,NCe),'Tree'),'Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type.')));ldd(a,new Ocd(Vcd(Xcd(Wcd(new Ycd,'org.eclipse.elk.planar'),'Planar'),'Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable.')));ldd(a,new Ocd(Vcd(Xcd(Wcd(new Ycd,pDe),'Radial'),'Radial layout algorithms usually position the nodes of the graph on concentric circles.')));skd((new tkd,a));Pgd((new Qgd,a));Cmd((new Dmd,a))};var fhd,ghd,hhd,ihd,jhd,khd,lhd,mhd,nhd,ohd,phd,qhd,rhd,shd,thd,uhd,vhd,whd,xhd,yhd,zhd,Ahd,Bhd,Chd,Dhd,Ehd,Fhd,Ghd,Hhd,Ihd,Jhd,Khd,Lhd,Mhd,Nhd,Ohd,Phd,Qhd,Rhd,Shd,Thd,Uhd,Vhd,Whd,Xhd,Yhd,Zhd,$hd,_hd,aid,bid,cid,did,eid,fid,gid,hid,iid,jid,kid,lid,mid,nid,oid,pid,qid,rid,sid,tid,uid,vid,wid,xid,yid,zid,Aid,Bid,Cid,Did,Eid,Fid,Gid,Hid,Iid,Jid,Kid,Lid,Mid,Nid,Oid,Pid,Qid,Rid,Sid,Tid,Uid,Vid,Wid,Xid,Yid,Zid,$id,_id,ajd,bjd,cjd,djd,ejd,fjd;var u2=zeb(xEe,'CoreOptions',689);mdb(86,23,{3:1,35:1,23:1,86:1},sjd);var jjd,kjd,ljd,mjd,njd;var v2=Aeb(xEe,'Direction',86,MI,ujd,tjd);var vjd;mdb(278,23,{3:1,35:1,23:1,278:1},Cjd);var xjd,yjd,zjd,Ajd;var w2=Aeb(xEe,'EdgeCoords',278,MI,Ejd,Djd);var Fjd;mdb(279,23,{3:1,35:1,23:1,279:1},Ljd);var Hjd,Ijd,Jjd;var x2=Aeb(xEe,'EdgeLabelPlacement',279,MI,Njd,Mjd);var Ojd;mdb(222,23,{3:1,35:1,23:1,222:1},Vjd);var Qjd,Rjd,Sjd,Tjd;var y2=Aeb(xEe,'EdgeRouting',222,MI,Xjd,Wjd);var Yjd;mdb(327,23,{3:1,35:1,23:1,327:1},fkd);var $jd,_jd,akd,bkd,ckd,dkd;var z2=Aeb(xEe,'EdgeType',327,MI,hkd,gkd);var ikd;mdb(973,1,lxe,tkd);_.tf=function ukd(a){skd(a)};var kkd,lkd,mkd,nkd,okd,pkd,qkd;var B2=zeb(xEe,'FixedLayouterOptions',973);mdb(974,1,{},vkd);_.uf=function wkd(){var a;return a=new oqd,a};_.vf=function xkd(a){};var A2=zeb(xEe,'FixedLayouterOptions/FixedFactory',974);mdb(347,23,{3:1,35:1,23:1,347:1},Ckd);var ykd,zkd,Akd;var C2=Aeb(xEe,'HierarchyHandling',347,MI,Ekd,Dkd);var Fkd;var D2=Beb(xEe,'ITopdownSizeApproximator');mdb(292,23,{3:1,35:1,23:1,292:1},Nkd);var Hkd,Ikd,Jkd,Kkd;var E2=Aeb(xEe,'LabelSide',292,MI,Pkd,Okd);var Qkd;mdb(96,23,{3:1,35:1,23:1,96:1},ald);var Skd,Tkd,Ukd,Vkd,Wkd,Xkd,Ykd,Zkd,$kd;var F2=Aeb(xEe,'NodeLabelPlacement',96,MI,dld,cld);var eld;mdb(257,23,{3:1,35:1,23:1,257:1},mld);var gld,hld,ild,jld,kld;var G2=Aeb(xEe,'PortAlignment',257,MI,old,nld);var pld;mdb(102,23,{3:1,35:1,23:1,102:1},Ald);var rld,sld,tld,uld,vld,wld;var H2=Aeb(xEe,'PortConstraints',102,MI,Cld,Bld);var Dld;mdb(280,23,{3:1,35:1,23:1,280:1},Mld);var Fld,Gld,Hld,Ild,Jld,Kld;var I2=Aeb(xEe,'PortLabelPlacement',280,MI,Qld,Pld);var Rld;mdb(64,23,{3:1,35:1,23:1,64:1},qmd);var Tld,Uld,Vld,Wld,Xld,Yld,Zld,$ld,_ld,amd,bmd,cmd,dmd,emd,fmd,gmd,hmd,imd,jmd,kmd,lmd;var J2=Aeb(xEe,'PortSide',64,MI,tmd,smd);var umd;mdb(977,1,lxe,Dmd);_.tf=function Emd(a){Cmd(a)};var wmd,xmd,ymd,zmd,Amd;var L2=zeb(xEe,'RandomLayouterOptions',977);mdb(978,1,{},Fmd);_.uf=function Gmd(){var a;return a=new nrd,a};_.vf=function Hmd(a){};var K2=zeb(xEe,'RandomLayouterOptions/RandomFactory',978);mdb(300,23,{3:1,35:1,23:1,300:1},Mmd);var Imd,Jmd,Kmd;var M2=Aeb(xEe,'ShapeCoords',300,MI,Omd,Nmd);var Pmd;mdb(380,23,{3:1,35:1,23:1,380:1},Wmd);var Rmd,Smd,Tmd,Umd;var N2=Aeb(xEe,'SizeConstraint',380,MI,Ymd,Xmd);var Zmd;mdb(266,23,{3:1,35:1,23:1,266:1},jnd);var _md,and,bnd,cnd,dnd,end,fnd,gnd,hnd;var O2=Aeb(xEe,'SizeOptions',266,MI,lnd,knd);var mnd;mdb(281,23,{3:1,35:1,23:1,281:1},snd);var ond,pnd,qnd;var P2=Aeb(xEe,'TopdownNodeTypes',281,MI,und,tnd);var vnd;mdb(288,23,lFe);var xnd,ynd,znd,And;var U2=Aeb(xEe,'TopdownSizeApproximator',288,MI,End,Dnd);mdb(969,288,lFe,Gnd);_.Sg=function Hnd(a){return Fnd(a)};var Q2=Aeb(xEe,'TopdownSizeApproximator/1',969,U2,null,null);mdb(970,288,lFe,Ind);_.Sg=function Jnd(b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;c=JD(Pud(b,(gjd(),Cid)),144);A=(ksd(),o=new Hzd,o);Iud(A,b);B=new Yrb;for(g=new fKd((!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a));g.e!=g.i.gc();){e=JD(dKd(g),26);t=(n=new Hzd,n);Fzd(t,A);Iud(t,e);D=Fnd(e);Ivd(t,$wnd.Math.max(e.g,D.a),$wnd.Math.max(e.f,D.b));wsb(B.f,e,t)}for(f=new fKd((!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a));f.e!=f.i.gc();){e=JD(dKd(f),26);for(l=new fKd((!e.e&&(e.e=new Wge(N3,e,7,4)),e.e));l.e!=l.i.gc();){k=JD(dKd(l),85);v=JD(Wd(vsb(B.f,e)),26);w=JD(bjb(B,SFd((!k.c&&(k.c=new Wge(L3,k,5,8)),k.c),0)),26);u=(m=new ywd,m);YEd((!u.b&&(u.b=new Wge(L3,u,4,7)),u.b),v);YEd((!u.c&&(u.c=new Wge(L3,u,5,8)),u.c),w);wwd(u,Czd(v));Iud(u,k)}}q=JD(yqd(c.f),214);try{q.kf(A,new Mqd);zqd(c.f,q)}catch(a){a=Hcb(a);if(RD(a,101)){p=a;throw Icb(p)}else throw Icb(a)}Qud(A,nhd)||Qud(A,mhd)||Cpd(A);j=Reb(MD(Pud(A,nhd)));i=Reb(MD(Pud(A,mhd)));h=j/i;d=Reb(MD(Pud(A,Wid)))*$wnd.Math.sqrt((!A.a&&(A.a=new A3d(Q3,A,10,11)),A.a).i);C=JD(Pud(A,cid),104);s=C.b+C.c+1;r=C.d+C.a+1;return new Yfd($wnd.Math.max(s,d),$wnd.Math.max(r,d/h))};var R2=Aeb(xEe,'TopdownSizeApproximator/2',970,U2,null,null);mdb(971,288,lFe,Knd);_.Sg=function Lnd(a){var b,c,d,e,f,g;c=Reb(MD(Pud(a,(gjd(),Wid))));b=c/Reb(MD(Pud(a,Vid)));d=Rnd(a);f=JD(Pud(a,cid),104);e=Reb(MD(mEd(Qid)));!!Czd(a)&&(e=Reb(MD(Pud(Czd(a),Qid))));g=Qfd(new Yfd(c,b),d);return Gfd(g,new Yfd(-(f.b+f.c)-e,-(f.d+f.a)-e))};var S2=Aeb(xEe,'TopdownSizeApproximator/3',971,U2,null,null);mdb(972,288,lFe,Mnd);_.Sg=function Nnd(b){var c,d,e,f,g,h,i,j,k,l;for(h=new fKd((!b.a&&(b.a=new A3d(Q3,b,10,11)),b.a));h.e!=h.i.gc();){g=JD(dKd(h),26);if(Pud(g,(gjd(),bjd))!=null&&(!g.a&&(g.a=new A3d(Q3,g,10,11)),!!g.a)&&(!g.a&&(g.a=new A3d(Q3,g,10,11)),g.a).i>0){d=JD(Pud(g,bjd),521);l=d.Sg(g);k=JD(Pud(g,cid),104);Ivd(g,$wnd.Math.max(g.g,l.a+k.b+k.c),$wnd.Math.max(g.f,l.b+k.d+k.a))}else{(!g.a&&(g.a=new A3d(Q3,g,10,11)),g.a).i!=0&&Ivd(g,Reb(MD(Pud(g,Wid))),Reb(MD(Pud(g,Wid)))/Reb(MD(Pud(g,Vid))))}}c=JD(Pud(b,(gjd(),Cid)),144);j=JD(yqd(c.f),214);try{j.kf(b,new Mqd);zqd(c.f,j)}catch(a){a=Hcb(a);if(RD(a,101)){i=a;throw Icb(i)}else throw Icb(a)}Rud(b,fhd,jFe);Lcd(b);Cpd(b);f=Reb(MD(Pud(b,nhd)));e=Reb(MD(Pud(b,mhd)));return new Yfd(f,e)};var T2=Aeb(xEe,'TopdownSizeApproximator/4',972,U2,null,null);var Ond;mdb(345,1,{852:1},_nd);_.Tg=function aod(a,b){return Snd(this,a,b)};_.Ug=function bod(){Und(this)};_.Vg=function cod(){return this.q};_.Wg=function dod(){return !this.f?null:Onb(this.f)};_.Xg=function eod(){return Onb(this.a)};_.Yg=function fod(){return this.p};_.Zg=function god(){return false};_.$g=function hod(){return this.n};_._g=function iod(){return this.p!=null&&!this.b};_.ah=function jod(a){var b;if(this.n){b=a;Ylb(this.f,b)}};_.bh=function kod(a,b){var c,d;this.n&&!!a&&Wnd(this,(c=new Xhe,d=Phe(c,a),Whe(c),d),(Gqd(),Dqd))};_.dh=function lod(a){var b;if(this.b){return null}else{b=Tnd(this,this.g);Qtb(this.a,b);b.i=this;this.d=a;return b}};_.eh=function mod(a){a>0&&!this.b&&Vnd(this,a)};_.b=false;_.c=0;_.d=-1;_.e=null;_.f=null;_.g=-1;_.j=false;_.k=false;_.n=false;_.o=0;_.q=0;_.r=0;var W2=zeb(TBe,'BasicProgressMonitor',345);mdb(706,214,Zwe,wod);_.kf=function Aod(a,b){pod(a,b)};var b3=zeb(TBe,'BoxLayoutProvider',706);mdb(965,1,fwe,Cod);_.Le=function Dod(a,b){return Bod(this,JD(a,26),JD(b,26))};_.Fb=function Eod(a){return this===a};_.Me=function Fod(){return new Kqb(this)};_.a=false;var X2=zeb(TBe,'BoxLayoutProvider/1',965);mdb(167,1,{167:1},Mod,Nod);_.Ib=function Ood(){return this.c?Gzd(this.c):Ee(this.b)};var Y2=zeb(TBe,'BoxLayoutProvider/Group',167);mdb(326,23,{3:1,35:1,23:1,326:1},Uod);var Pod,Qod,Rod,Sod;var Z2=Aeb(TBe,'BoxLayoutProvider/PackingMode',326,MI,Wod,Vod);var Xod;mdb(966,1,fwe,Zod);_.Le=function $od(a,b){return xod(JD(a,167),JD(b,167))};_.Fb=function _od(a){return this===a};_.Me=function apd(){return new Kqb(this)};var $2=zeb(TBe,'BoxLayoutProvider/lambda$0$Type',966);mdb(967,1,fwe,bpd);_.Le=function cpd(a,b){return yod(JD(a,167),JD(b,167))};_.Fb=function dpd(a){return this===a};_.Me=function epd(){return new Kqb(this)};var _2=zeb(TBe,'BoxLayoutProvider/lambda$1$Type',967);mdb(968,1,fwe,fpd);_.Le=function gpd(a,b){return zod(JD(a,167),JD(b,167))};_.Fb=function hpd(a){return this===a};_.Me=function ipd(){return new Kqb(this)};var a3=zeb(TBe,'BoxLayoutProvider/lambda$2$Type',968);mdb(1338,1,{829:1},jpd);_.Lg=function kpd(a,b){return gyc(),!RD(b,174)||Yad((Pad(),Oad,JD(a,174)),b)};var c3=zeb(TBe,'ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type',1338);mdb(1339,1,Rte,lpd);_.Ad=function mpd(a){jyc(this.a,JD(a,147))};var d3=zeb(TBe,'ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type',1339);mdb(1340,1,Rte,npd);_.Ad=function opd(a){JD(a,105);gyc()};var e3=zeb(TBe,'ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type',1340);mdb(1344,1,Rte,ppd);_.Ad=function qpd(a){kyc(this.a,JD(a,105))};var f3=zeb(TBe,'ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type',1344);mdb(1342,1,oue,rpd);_.Mb=function spd(a){return lyc(this.a,this.b,JD(a,147))};var g3=zeb(TBe,'ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type',1342);mdb(1341,1,oue,tpd);_.Mb=function upd(a){return nyc(this.a,this.b,JD(a,829))};var h3=zeb(TBe,'ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type',1341);mdb(1343,1,Rte,vpd);_.Ad=function wpd(a){myc(this.a,this.b,JD(a,147))};var i3=zeb(TBe,'ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type',1343);mdb(930,1,{},Ypd);_.Kb=function Zpd(a){return Xpd(a)};_.Fb=function $pd(a){return this===a};var k3=zeb(TBe,'ElkUtil/lambda$0$Type',930);mdb(931,1,Rte,_pd);_.Ad=function aqd(a){Lpd(this.a,this.b,JD(a,85))};_.a=0;_.b=0;var l3=zeb(TBe,'ElkUtil/lambda$1$Type',931);mdb(932,1,Rte,bqd);_.Ad=function cqd(a){Mpd(this.a,this.b,JD(a,170))};_.a=0;_.b=0;var m3=zeb(TBe,'ElkUtil/lambda$2$Type',932);mdb(933,1,Rte,dqd);_.Ad=function eqd(a){Npd(this.a,this.b,JD(a,157))};_.a=0;_.b=0;var n3=zeb(TBe,'ElkUtil/lambda$3$Type',933);mdb(934,1,Rte,fqd);_.Ad=function gqd(a){Opd(this.a,JD(a,372))};var o3=zeb(TBe,'ElkUtil/lambda$4$Type',934);mdb(331,1,{35:1,331:1},iqd);_.Dd=function jqd(a){return hqd(this,JD(a,242))};_.Fb=function kqd(a){var b;if(RD(a,331)){b=JD(a,331);return this.a==b.a}return false};_.Hb=function lqd(){return YD(this.a)};_.Ib=function mqd(){return this.a+' (exclusive)'};_.a=0;var p3=zeb(TBe,'ExclusiveBounds/ExclusiveLowerBound',331);mdb(1088,214,Zwe,oqd);_.kf=function pqd(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B;b.Tg('Fixed Layout',1);f=JD(Pud(a,(gjd(),xhd)),222);l=0;m=0;for(s=new fKd((!a.a&&(a.a=new A3d(Q3,a,10,11)),a.a));s.e!=s.i.gc();){q=JD(dKd(s),26);B=JD(Pud(q,(rkd(),qkd)),8);if(B){Kvd(q,B.a,B.b);if(JD(Pud(q,lkd),182).Gc((Vmd(),Rmd))){n=JD(Pud(q,nkd),8);n.a>0&&n.b>0&&Rpd(q,n.a,n.b,true,true)}}l=$wnd.Math.max(l,q.i+q.g);m=$wnd.Math.max(m,q.j+q.f);for(j=new fKd((!q.n&&(q.n=new A3d(P3,q,1,7)),q.n));j.e!=j.i.gc();){h=JD(dKd(j),157);B=JD(Pud(h,qkd),8);!!B&&Kvd(h,B.a,B.b);l=$wnd.Math.max(l,q.i+h.i+h.g);m=$wnd.Math.max(m,q.j+h.j+h.f)}for(v=new fKd((!q.c&&(q.c=new A3d(R3,q,9,9)),q.c));v.e!=v.i.gc();){u=JD(dKd(v),125);B=JD(Pud(u,qkd),8);!!B&&Kvd(u,B.a,B.b);w=q.i+u.i;A=q.j+u.j;l=$wnd.Math.max(l,w+u.g);m=$wnd.Math.max(m,A+u.f);for(i=new fKd((!u.n&&(u.n=new A3d(P3,u,1,7)),u.n));i.e!=i.i.gc();){h=JD(dKd(i),157);B=JD(Pud(h,qkd),8);!!B&&Kvd(h,B.a,B.b);l=$wnd.Math.max(l,w+h.i+h.g);m=$wnd.Math.max(m,A+h.j+h.f)}}for(e=new Yr(Dr(DEd(q).a.Jc(),new Dl));Wr(e);){c=JD(Xr(e),85);k=nqd(c);l=$wnd.Math.max(l,k.a);m=$wnd.Math.max(m,k.b)}for(d=new Yr(Dr(CEd(q).a.Jc(),new Dl));Wr(d);){c=JD(Xr(d),85);if(Czd(NEd(c))!=a){k=nqd(c);l=$wnd.Math.max(l,k.a);m=$wnd.Math.max(m,k.b)}}}if(f==(Ujd(),Qjd)){for(r=new fKd((!a.a&&(a.a=new A3d(Q3,a,10,11)),a.a));r.e!=r.i.gc();){q=JD(dKd(r),26);for(d=new Yr(Dr(DEd(q).a.Jc(),new Dl));Wr(d);){c=JD(Xr(d),85);g=Gpd(c);g.b==0?Rud(c,Nhd,null):Rud(c,Nhd,g)}}}if(!Odb(LD(Pud(a,(rkd(),mkd))))){t=JD(Pud(a,okd),104);p=l+t.b+t.c;o=m+t.d+t.a;Rpd(a,p,o,true,true)}b.Ug()};var q3=zeb(TBe,'FixedLayoutProvider',1088);mdb(379,150,{3:1,414:1,379:1,105:1,150:1},qqd,rqd);_.ag=function uqd(b){var c,d,e,f,g,h,i,j,k;if(!b){return}try{j=Cgb(b,';,;');for(g=j,h=0,i=g.length;h>16&Bue|b^d<<16};_.Jc=function erd(){return new grd(this)};_.Ib=function frd(){return this.a==null&&this.b==null?'pair(null,null)':this.a==null?'pair(null,'+qdb(this.b)+')':this.b==null?'pair('+qdb(this.a)+',null)':'pair('+qdb(this.a)+','+qdb(this.b)+')'};var z3=zeb(TBe,'Pair',49);mdb(979,1,Ate,grd);_.Nb=function hrd(a){ctb(this,a)};_.Ob=function ird(){return !this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)};_.Pb=function jrd(){if(!this.c&&!this.b&&this.a.a!=null){this.b=true;return this.a.a}else if(!this.c&&this.a.b!=null){this.c=true;return this.a.b}throw Icb(new Hub)};_.Qb=function krd(){this.c&&this.a.b!=null?(this.a.b=null):this.b&&this.a.a!=null&&(this.a.a=null);throw Icb(new jfb)};_.b=false;_.c=false;var y3=zeb(TBe,'Pair/1',979);mdb(1078,214,Zwe,nrd);_.kf=function ord(a,b){var c,d,e,f,g;b.Tg('Random Layout',1);if((!a.a&&(a.a=new A3d(Q3,a,10,11)),a.a).i==0){b.Ug();return}f=JD(Pud(a,(Bmd(),zmd)),15);!!f&&f.a!=0?(e=new Tvb(f.a)):(e=new Svb);c=Teb(MD(Pud(a,wmd)));g=Teb(MD(Pud(a,Amd)));d=JD(Pud(a,xmd),104);mrd(a,e,c,g,d);b.Ug()};var A3=zeb(TBe,'RandomLayoutProvider',1078);mdb(240,1,{240:1},prd);_.Fb=function qrd(a){return Jub(this.a,JD(a,240).a)&&Jub(this.b,JD(a,240).b)&&Jub(this.c,JD(a,240).c)};_.Hb=function rrd(){return $mb(WC(OC(aJ,1),rte,1,5,[this.a,this.b,this.c]))};_.Ib=function srd(){return '('+this.a+pte+this.b+pte+this.c+')'};var B3=zeb(TBe,'Triple',240);var trd;mdb(550,1,{});_.Jf=function xrd(){return new Yfd(this.f.i,this.f.j)};_.mf=function yrd(a){if(lEd(a,(gjd(),pid))){return Pud(this.f,vrd)}return Pud(this.f,a)};_.Kf=function zrd(){return new Yfd(this.f.g,this.f.f)};_.Lf=function Ard(){return this.g};_.nf=function Brd(a){return Qud(this.f,a)};_.Mf=function Crd(a){Mvd(this.f,a.a);Nvd(this.f,a.b)};_.Nf=function Drd(a){Lvd(this.f,a.a);Jvd(this.f,a.b)};_.Of=function Erd(a){this.g=a};_.g=0;var vrd;var C3=zeb(oFe,'ElkGraphAdapters/AbstractElkGraphElementAdapter',550);mdb(552,1,{837:1},Frd);_.Pf=function Grd(){var a,b;if(!this.b){this.b=Yu(rvd(this.a).i);for(b=new fKd(rvd(this.a));b.e!=b.i.gc();){a=JD(dKd(b),157);Ylb(this.b,new Krd(a))}}return this.b};_.b=null;var D3=zeb(oFe,'ElkGraphAdapters/ElkEdgeAdapter',552);mdb(260,550,{},Ird);_.Qf=function Jrd(){return Hrd(this)};_.a=null;var E3=zeb(oFe,'ElkGraphAdapters/ElkGraphAdapter',260);mdb(630,550,{187:1},Krd);var F3=zeb(oFe,'ElkGraphAdapters/ElkLabelAdapter',630);mdb(551,550,{685:1},Ord);_.Pf=function Rrd(){return Lrd(this)};_.Tf=function Srd(){var a;return a=JD(Pud(this.f,(gjd(),Phd)),140),!a&&(a=new oYb),a};_.Vf=function Urd(){return Mrd(this)};_.Xf=function Wrd(a){var b;b=new rYb(a);Rud(this.f,(gjd(),Phd),b)};_.Yf=function Xrd(a){Rud(this.f,(gjd(),cid),new cZb(a))};_.Rf=function Prd(){return this.d};_.Sf=function Qrd(){var a,b;if(!this.a){this.a=new imb;for(b=new Yr(Dr(CEd(JD(this.f,26)).a.Jc(),new Dl));Wr(b);){a=JD(Xr(b),85);Ylb(this.a,new Frd(a))}}return this.a};_.Uf=function Trd(){var a,b;if(!this.c){this.c=new imb;for(b=new Yr(Dr(DEd(JD(this.f,26)).a.Jc(),new Dl));Wr(b);){a=JD(Xr(b),85);Ylb(this.c,new Frd(a))}}return this.c};_.Wf=function Vrd(){return Azd(JD(this.f,26)).i!=0||Odb(LD(JD(this.f,26).mf((gjd(),Fhd))))};_.Zf=function Yrd(){Nrd(this,(urd(),trd))};_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;var G3=zeb(oFe,'ElkGraphAdapters/ElkNodeAdapter',551);mdb(1249,550,{836:1},$rd);_.Pf=function asd(){return Zrd(this)};_.Sf=function _rd(){var a,b;if(!this.a){this.a=Xu(JD(this.f,125).gh().i);for(b=new fKd(JD(this.f,125).gh());b.e!=b.i.gc();){a=JD(dKd(b),85);Ylb(this.a,new Frd(a))}}return this.a};_.Uf=function bsd(){var a,b;if(!this.c){this.c=Xu(JD(this.f,125).hh().i);for(b=new fKd(JD(this.f,125).hh());b.e!=b.i.gc();){a=JD(dKd(b),85);Ylb(this.c,new Frd(a))}}return this.c};_.$f=function csd(){return JD(JD(this.f,125).mf((gjd(),xid)),64)};_._f=function dsd(){var a,b,c,d,e,f,g,h;d=Tzd(JD(this.f,125));for(c=new fKd(JD(this.f,125).hh());c.e!=c.i.gc();){a=JD(dKd(c),85);for(h=new fKd((!a.c&&(a.c=new Wge(L3,a,5,8)),a.c));h.e!=h.i.gc();){g=JD(dKd(h),84);if(PEd(EEd(g),d)){return true}else if(EEd(g)==d&&Odb(LD(Pud(a,(gjd(),Ghd))))){return true}}}for(b=new fKd(JD(this.f,125).gh());b.e!=b.i.gc();){a=JD(dKd(b),85);for(f=new fKd((!a.b&&(a.b=new Wge(L3,a,4,7)),a.b));f.e!=f.i.gc();){e=JD(dKd(f),84);if(PEd(EEd(e),d)){return true}}}return false};_.a=null;_.b=null;_.c=null;var H3=zeb(oFe,'ElkGraphAdapters/ElkPortAdapter',1249);mdb(1250,1,fwe,fsd);_.Le=function gsd(a,b){return esd(JD(a,125),JD(b,125))};_.Fb=function hsd(a){return this===a};_.Me=function isd(){return new Kqb(this)};var I3=zeb(oFe,'ElkGraphAdapters/PortComparator',1250);var z6=Beb(pFe,'EObject');var J3=Beb(qFe,rFe);var K3=Beb(qFe,sFe);var O3=Beb(qFe,tFe);var S3=Beb(qFe,'ElkShape');var L3=Beb(qFe,uFe);var N3=Beb(qFe,vFe);var M3=Beb(qFe,wFe);var x6=Beb(pFe,xFe);var v6=Beb(pFe,'EFactory');var jsd;var y6=Beb(pFe,yFe);var B6=Beb(pFe,'EPackage');var lsd;var nsd,osd,psd,qsd,rsd,ssd,tsd,usd,vsd,wsd,xsd;var P3=Beb(qFe,zFe);var Q3=Beb(qFe,AFe);var R3=Beb(qFe,BFe);mdb(93,1,CFe);_.qh=function Asd(){this.rh();return null};_.rh=function Bsd(){return null};_.sh=function Csd(){return this.rh(),false};_.th=function Dsd(){return false};_.uh=function Esd(a){zsd(this,a)};var o5=zeb(DFe,'BasicNotifierImpl',93);mdb(100,93,LFe);_.Vh=function Mtd(){return Vsd(this)};_.vh=function ktd(a,b){return a};_.wh=function ltd(){throw Icb(new qhb)};_.xh=function mtd(a){var b;return b=X3d(JD(tWd(this.Ah(),this.Ch()),19)),this.Mh().Qh(this,b.n,b.f,a)};_.yh=function ntd(a,b){throw Icb(new qhb)};_.zh=function otd(a,b,c){return Gsd(this,a,b,c)};_.Ah=function ptd(){var a;if(this.wh()){a=this.wh().Lk();if(a){return a}}return this.fi()};_.Bh=function qtd(){return Hsd(this)};_.Ch=function rtd(){throw Icb(new qhb)};_.Dh=function ttd(){var a,b;b=this.Xh().Mk();!b&&this.wh().Rk(b=(L0d(),a=NYd(pWd(this.Ah())),a==null?K0d:new O0d(this,a)));return b};_.Eh=function vtd(a,b){return a};_.Fh=function wtd(a){var b;b=a.nk();return !b?zWd(this.Ah(),a):a.Jj()};_.Gh=function xtd(){var a;a=this.wh();return !a?null:a.Ok()};_.Hh=function ytd(){return !this.wh()?null:this.wh().Lk()};_.Ih=function ztd(a,b,c){return Msd(this,a,b,c)};_.Jh=function Atd(a){return Nsd(this,a)};_.Kh=function Btd(a,b){return Osd(this,a,b)};_.Lh=function Ctd(){var a;a=this.wh();return !!a&&a.Pk()};_.Mh=function Dtd(){throw Icb(new qhb)};_.Nh=function Etd(){return Qsd(this)};_.Oh=function Ftd(a,b,c,d){return Rsd(this,a,b,d)};_.Ph=function Gtd(a,b,c){var d;return d=JD(tWd(this.Ah(),b),69),d.uk().xk(this,this.ei(),b-this.gi(),a,c)};_.Qh=function Htd(a,b,c,d){return Ssd(this,a,b,d)};_.Rh=function Itd(a,b,c){var d;return d=JD(tWd(this.Ah(),b),69),d.uk().yk(this,this.ei(),b-this.gi(),a,c)};_.Sh=function Jtd(){return !!this.wh()&&!!this.wh().Nk()};_.Th=function Ktd(a){return Tsd(this,a)};_.Uh=function Ltd(a){return Usd(this,a)};_.Wh=function Ntd(a){return Ysd(this,a)};_.Xh=function Otd(){throw Icb(new qhb)};_.Yh=function Ptd(){return !this.wh()?null:this.wh().Nk()};_.Zh=function Qtd(){return Qsd(this)};_.$h=function Rtd(a,b){dtd(this,a,b)};_._h=function Std(a){this.Xh().Qk(a)};_.ai=function Ttd(a){this.Xh().Tk(a)};_.bi=function Utd(a){this.Xh().Sk(a)};_.ci=function Vtd(a,b){var c,d,e,f;f=this.Gh();if(!!f&&!!a){b=tJd(f.Cl(),this,b);f.Gl(this)}d=this.Mh();if(d){if((std(this,this.Mh(),this.Ch()).Bb&tve)!=0){e=d.Nh();!!e&&(!a?e.Fl(this):!f&&e.Gl(this))}else{b=(c=this.Ch(),c>=0?this.xh(b):this.Mh().Qh(this,-1-c,null,b));b=this.zh(null,-1,b)}}this.ai(a);return b};_.di=function Wtd(a){var b,c,d,e,f,g,h,i;c=this.Ah();f=zWd(c,a);b=this.gi();if(f>=b){return JD(a,69).uk().Bk(this,this.ei(),f-b)}else if(f<=-1){g=Cce((jie(),hie),c,a);if(g){lie();JD(g,69).vk()||(g=xde(Oce(hie,g)));e=(d=this.Fh(g),JD(d>=0?this.Ih(d,true,true):Zsd(this,g,true),163));i=g.Gk();if(i>1||i==-1){return JD(JD(e,219).Ql(a,false),77)}}else{throw Icb(new hfb(EFe+a.ve()+HFe))}}else if(a.Hk()){return d=this.Fh(a),JD(d>=0?this.Ih(d,false,true):Zsd(this,a,false),77)}h=new LRd(this,a);return h};_.ei=function Xtd(){return ftd(this)};_.fi=function Ytd(){return (jRd(),iRd).S};_.gi=function Ztd(){return yWd(this.fi())};_.hi=function $td(a){htd(this,a)};_.Ib=function _td(){return jtd(this)};var O6=zeb(MFe,'BasicEObjectImpl',100);var XQd;mdb(117,100,{109:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1});_.ii=function iud(a){var b;b=cud(this);return b[a]};_.ji=function jud(a,b){var c;c=cud(this);VC(c,a,b)};_.ki=function kud(a){var b;b=cud(this);VC(b,a,null)};_.qh=function lud(){return JD(fud(this,4),129)};_.rh=function mud(){throw Icb(new qhb)};_.sh=function nud(){return (this.Db&4)!=0};_.wh=function oud(){throw Icb(new qhb)};_.li=function pud(a){hud(this,2,a)};_.yh=function qud(a,b){this.Db=b<<16|this.Db&255;this.li(a)};_.Ah=function rud(){return bud(this)};_.Ch=function sud(){return this.Db>>16};_.Dh=function tud(){var a,b;return L0d(),b=NYd(pWd((a=JD(fud(this,16),29),!a?this.fi():a))),b==null?(null,K0d):new O0d(this,b)};_.th=function uud(){return (this.Db&1)==0};_.Gh=function vud(){return JD(fud(this,128),1996)};_.Hh=function wud(){return JD(fud(this,16),29)};_.Lh=function xud(){return (this.Db&32)!=0};_.Mh=function yud(){return JD(fud(this,2),52)};_.Sh=function zud(){return (this.Db&64)!=0};_.Xh=function Aud(){throw Icb(new qhb)};_.Yh=function Bud(){return JD(fud(this,64),290)};_._h=function Cud(a){hud(this,16,a)};_.ai=function Dud(a){hud(this,128,a)};_.bi=function Eud(a){hud(this,64,a)};_.ei=function Fud(){return dud(this)};_.Db=0;var F9=zeb(MFe,'MinimalEObjectImpl',117);mdb(118,117,{109:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1});_.li=function Gud(a){this.Cb=a};_.Mh=function Hud(){return this.Cb};var E9=zeb(MFe,'MinimalEObjectImpl/Container',118);mdb(2045,118,{109:1,343:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1});_.Ih=function Sud(a,b,c){return Jud(this,a,b,c)};_.Rh=function Tud(a,b,c){return Kud(this,a,b,c)};_.Th=function Uud(a){return Lud(this,a)};_.$h=function Vud(a,b){Mud(this,a,b)};_.fi=function Wud(){return ysd(),xsd};_.hi=function Xud(a){Nud(this,a)};_.lf=function Yud(){return Oud(this)};_.fh=function Zud(){return !this.o&&(this.o=new BTd((ysd(),vsd),c4,this,0)),this.o};_.mf=function $ud(a){return Pud(this,a)};_.nf=function _ud(a){return Qud(this,a)};_.of=function avd(a,b){return Rud(this,a,b)};var T3=zeb(NFe,'EMapPropertyHolderImpl',2045);mdb(559,118,{109:1,372:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1},evd);_.Ih=function fvd(a,b,c){switch(a){case 0:return this.a;case 1:return this.b;}return Msd(this,a,b,c)};_.Th=function gvd(a){switch(a){case 0:return this.a!=0;case 1:return this.b!=0;}return Tsd(this,a)};_.$h=function hvd(a,b){switch(a){case 0:cvd(this,Reb(MD(b)));return;case 1:dvd(this,Reb(MD(b)));return;}dtd(this,a,b)};_.fi=function ivd(){return ysd(),nsd};_.hi=function jvd(a){switch(a){case 0:cvd(this,0);return;case 1:dvd(this,0);return;}htd(this,a)};_.Ib=function kvd(){var a;if((this.Db&64)!=0)return jtd(this);a=new Zgb(jtd(this));a.a+=' (x: ';Rgb(a,this.a);a.a+=', y: ';Rgb(a,this.b);a.a+=')';return a.a};_.a=0;_.b=0;var U3=zeb(NFe,'ElkBendPointImpl',559);mdb(727,2045,{109:1,343:1,174:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1});_.Ih=function uvd(a,b,c){return lvd(this,a,b,c)};_.Ph=function vvd(a,b,c){return mvd(this,a,b,c)};_.Rh=function wvd(a,b,c){return nvd(this,a,b,c)};_.Th=function xvd(a){return ovd(this,a)};_.$h=function yvd(a,b){pvd(this,a,b)};_.fi=function zvd(){return ysd(),rsd};_.hi=function Avd(a){qvd(this,a)};_.ih=function Bvd(){return this.k};_.jh=function Cvd(){return rvd(this)};_.Ib=function Dvd(){return tvd(this)};_.k=null;var Y3=zeb(NFe,'ElkGraphElementImpl',727);mdb(728,727,{109:1,343:1,174:1,276:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1});_.Ih=function Pvd(a,b,c){return Evd(this,a,b,c)};_.Th=function Qvd(a){return Fvd(this,a)};_.$h=function Rvd(a,b){Gvd(this,a,b)};_.fi=function Svd(){return ysd(),wsd};_.hi=function Tvd(a){Hvd(this,a)};_.kh=function Uvd(){return this.f};_.lh=function Vvd(){return this.g};_.mh=function Wvd(){return this.i};_.nh=function Xvd(){return this.j};_.oh=function Yvd(a,b){Ivd(this,a,b)};_.ph=function Zvd(a,b){Kvd(this,a,b)};_.Ib=function $vd(){return Ovd(this)};_.f=0;_.g=0;_.i=0;_.j=0;var d4=zeb(NFe,'ElkShapeImpl',728);mdb(729,728,{109:1,343:1,84:1,174:1,276:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1});_.Ih=function gwd(a,b,c){return _vd(this,a,b,c)};_.Ph=function hwd(a,b,c){return awd(this,a,b,c)};_.Rh=function iwd(a,b,c){return bwd(this,a,b,c)};_.Th=function jwd(a){return cwd(this,a)};_.$h=function kwd(a,b){dwd(this,a,b)};_.fi=function lwd(){return ysd(),osd};_.hi=function mwd(a){ewd(this,a)};_.gh=function nwd(){return !this.d&&(this.d=new Wge(N3,this,8,5)),this.d};_.hh=function owd(){return !this.e&&(this.e=new Wge(N3,this,7,4)),this.e};var V3=zeb(NFe,'ElkConnectableShapeImpl',729);mdb(271,727,{109:1,343:1,85:1,174:1,271:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1},ywd);_.xh=function zwd(a){return qwd(this,a)};_.Ih=function Awd(a,b,c){switch(a){case 3:return rwd(this);case 4:return !this.b&&(this.b=new Wge(L3,this,4,7)),this.b;case 5:return !this.c&&(this.c=new Wge(L3,this,5,8)),this.c;case 6:return !this.a&&(this.a=new A3d(M3,this,6,6)),this.a;case 7:return Ndb(),!this.b&&(this.b=new Wge(L3,this,4,7)),this.b.i<=1&&(!this.c&&(this.c=new Wge(L3,this,5,8)),this.c.i<=1)?false:true;case 8:return Ndb(),uwd(this)?true:false;case 9:return Ndb(),vwd(this)?true:false;case 10:return Ndb(),!this.b&&(this.b=new Wge(L3,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new Wge(L3,this,5,8)),this.c.i!=0)?true:false;}return lvd(this,a,b,c)};_.Ph=function Bwd(a,b,c){var d;switch(b){case 3:!!this.Cb&&(c=(d=this.Db>>16,d>=0?qwd(this,c):this.Cb.Qh(this,-1-d,null,c)));return pwd(this,JD(a,26),c);case 4:return !this.b&&(this.b=new Wge(L3,this,4,7)),sJd(this.b,a,c);case 5:return !this.c&&(this.c=new Wge(L3,this,5,8)),sJd(this.c,a,c);case 6:return !this.a&&(this.a=new A3d(M3,this,6,6)),sJd(this.a,a,c);}return mvd(this,a,b,c)};_.Rh=function Cwd(a,b,c){switch(b){case 3:return pwd(this,null,c);case 4:return !this.b&&(this.b=new Wge(L3,this,4,7)),tJd(this.b,a,c);case 5:return !this.c&&(this.c=new Wge(L3,this,5,8)),tJd(this.c,a,c);case 6:return !this.a&&(this.a=new A3d(M3,this,6,6)),tJd(this.a,a,c);}return nvd(this,a,b,c)};_.Th=function Dwd(a){switch(a){case 3:return !!rwd(this);case 4:return !!this.b&&this.b.i!=0;case 5:return !!this.c&&this.c.i!=0;case 6:return !!this.a&&this.a.i!=0;case 7:return !this.b&&(this.b=new Wge(L3,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new Wge(L3,this,5,8)),this.c.i<=1));case 8:return uwd(this);case 9:return vwd(this);case 10:return !this.b&&(this.b=new Wge(L3,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new Wge(L3,this,5,8)),this.c.i!=0);}return ovd(this,a)};_.$h=function Ewd(a,b){switch(a){case 3:wwd(this,JD(b,26));return;case 4:!this.b&&(this.b=new Wge(L3,this,4,7));uJd(this.b);!this.b&&(this.b=new Wge(L3,this,4,7));$Ed(this.b,JD(b,18));return;case 5:!this.c&&(this.c=new Wge(L3,this,5,8));uJd(this.c);!this.c&&(this.c=new Wge(L3,this,5,8));$Ed(this.c,JD(b,18));return;case 6:!this.a&&(this.a=new A3d(M3,this,6,6));uJd(this.a);!this.a&&(this.a=new A3d(M3,this,6,6));$Ed(this.a,JD(b,18));return;}pvd(this,a,b)};_.fi=function Fwd(){return ysd(),psd};_.hi=function Gwd(a){switch(a){case 3:wwd(this,null);return;case 4:!this.b&&(this.b=new Wge(L3,this,4,7));uJd(this.b);return;case 5:!this.c&&(this.c=new Wge(L3,this,5,8));uJd(this.c);return;case 6:!this.a&&(this.a=new A3d(M3,this,6,6));uJd(this.a);return;}qvd(this,a)};_.Ib=function Hwd(){return xwd(this)};var W3=zeb(NFe,'ElkEdgeImpl',271);mdb(443,2045,{109:1,343:1,170:1,443:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1},Ywd);_.xh=function Zwd(a){return Jwd(this,a)};_.Ih=function $wd(a,b,c){switch(a){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return !this.a&&(this.a=new VXd(K3,this,5)),this.a;case 6:return Mwd(this);case 7:if(b)return Lwd(this);return this.i;case 8:if(b)return Kwd(this);return this.f;case 9:return !this.g&&(this.g=new Wge(M3,this,9,10)),this.g;case 10:return !this.e&&(this.e=new Wge(M3,this,10,9)),this.e;case 11:return this.d;}return Jud(this,a,b,c)};_.Ph=function _wd(a,b,c){var d,e,f;switch(b){case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?Jwd(this,c):this.Cb.Qh(this,-1-e,null,c)));return Iwd(this,JD(a,85),c);case 9:return !this.g&&(this.g=new Wge(M3,this,9,10)),sJd(this.g,a,c);case 10:return !this.e&&(this.e=new Wge(M3,this,10,9)),sJd(this.e,a,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?(ysd(),qsd):d),b),69),f.uk().xk(this,dud(this),b-yWd((ysd(),qsd)),a,c)};_.Rh=function axd(a,b,c){switch(b){case 5:return !this.a&&(this.a=new VXd(K3,this,5)),tJd(this.a,a,c);case 6:return Iwd(this,null,c);case 9:return !this.g&&(this.g=new Wge(M3,this,9,10)),tJd(this.g,a,c);case 10:return !this.e&&(this.e=new Wge(M3,this,10,9)),tJd(this.e,a,c);}return Kud(this,a,b,c)};_.Th=function bxd(a){switch(a){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return !!this.a&&this.a.i!=0;case 6:return !!Mwd(this);case 7:return !!this.i;case 8:return !!this.f;case 9:return !!this.g&&this.g.i!=0;case 10:return !!this.e&&this.e.i!=0;case 11:return this.d!=null;}return Lud(this,a)};_.$h=function cxd(a,b){switch(a){case 1:Vwd(this,Reb(MD(b)));return;case 2:Wwd(this,Reb(MD(b)));return;case 3:Owd(this,Reb(MD(b)));return;case 4:Pwd(this,Reb(MD(b)));return;case 5:!this.a&&(this.a=new VXd(K3,this,5));uJd(this.a);!this.a&&(this.a=new VXd(K3,this,5));$Ed(this.a,JD(b,18));return;case 6:Twd(this,JD(b,85));return;case 7:Swd(this,JD(b,84));return;case 8:Rwd(this,JD(b,84));return;case 9:!this.g&&(this.g=new Wge(M3,this,9,10));uJd(this.g);!this.g&&(this.g=new Wge(M3,this,9,10));$Ed(this.g,JD(b,18));return;case 10:!this.e&&(this.e=new Wge(M3,this,10,9));uJd(this.e);!this.e&&(this.e=new Wge(M3,this,10,9));$Ed(this.e,JD(b,18));return;case 11:Qwd(this,OD(b));return;}Mud(this,a,b)};_.fi=function dxd(){return ysd(),qsd};_.hi=function exd(a){switch(a){case 1:Vwd(this,0);return;case 2:Wwd(this,0);return;case 3:Owd(this,0);return;case 4:Pwd(this,0);return;case 5:!this.a&&(this.a=new VXd(K3,this,5));uJd(this.a);return;case 6:Twd(this,null);return;case 7:Swd(this,null);return;case 8:Rwd(this,null);return;case 9:!this.g&&(this.g=new Wge(M3,this,9,10));uJd(this.g);return;case 10:!this.e&&(this.e=new Wge(M3,this,10,9));uJd(this.e);return;case 11:Qwd(this,null);return;}Nud(this,a)};_.Ib=function fxd(){return Xwd(this)};_.b=0;_.c=0;_.d=null;_.j=0;_.k=0;var X3=zeb(NFe,'ElkEdgeSectionImpl',443);mdb(161,118,{109:1,94:1,93:1,158:1,57:1,114:1,52:1,100:1,161:1,117:1,118:1});_.Ih=function jxd(a,b,c){var d;if(a==0){return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab}return Isd(this,a-yWd(this.fi()),tWd((d=JD(fud(this,16),29),!d?this.fi():d),a),b,c)};_.Ph=function kxd(a,b,c){var d,e;if(b==0){return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c)}return e=JD(tWd((d=JD(fud(this,16),29),!d?this.fi():d),b),69),e.uk().xk(this,dud(this),b-yWd(this.fi()),a,c)};_.Rh=function lxd(a,b,c){var d,e;if(b==0){return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c)}return e=JD(tWd((d=JD(fud(this,16),29),!d?this.fi():d),b),69),e.uk().yk(this,dud(this),b-yWd(this.fi()),a,c)};_.Th=function mxd(a){var b;if(a==0){return !!this.Ab&&this.Ab.i!=0}return Jsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.Wh=function nxd(a){return gxd(this,a)};_.$h=function oxd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;}Ksd(this,a-yWd(this.fi()),tWd((c=JD(fud(this,16),29),!c?this.fi():c),a),b)};_.ai=function pxd(a){hud(this,128,a)};_.fi=function qxd(){return HRd(),vRd};_.hi=function rxd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;}Lsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.mi=function sxd(){this.Bb|=1};_.ni=function txd(a){return ixd(this,a)};_.Bb=0;var s7=zeb(MFe,'EModelElementImpl',161);mdb(710,161,{109:1,94:1,93:1,469:1,158:1,57:1,114:1,52:1,100:1,161:1,117:1,118:1},Fxd);_.oi=function Gxd(a,b){return Axd(this,a,b)};_.pi=function Hxd(a){var b,c,d,e,f;if(this.a!=zVd(a)||(a.Bb&256)!=0){throw Icb(new hfb(TFe+a.zb+QFe))}for(d=xWd(a);rWd(d.a).i!=0;){c=JD(LZd(d,0,(b=JD(SFd(rWd(d.a),0),87),f=b.c,RD(f,88)?JD(f,29):(HRd(),xRd))),29);if(BVd(c)){e=zVd(c).ti().pi(c);JD(e,52)._h(a);return e}d=xWd(c)}return (a.D!=null?a.D:a.B)=='java.util.Map$Entry'?new JSd(a):new xSd(a)};_.qi=function Ixd(a,b){return Bxd(this,a,b)};_.Ih=function Jxd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.a;}return Isd(this,a-yWd((HRd(),sRd)),tWd((d=JD(fud(this,16),29),!d?sRd:d),a),b,c)};_.Ph=function Kxd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 1:!!this.a&&(c=JD(this.a,52).Qh(this,4,B6,c));return yxd(this,JD(a,241),c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),sRd):d),b),69),e.uk().xk(this,dud(this),b-yWd((HRd(),sRd)),a,c)};_.Rh=function Lxd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 1:return yxd(this,null,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),sRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),sRd)),a,c)};_.Th=function Mxd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return !!this.a;}return Jsd(this,a-yWd((HRd(),sRd)),tWd((b=JD(fud(this,16),29),!b?sRd:b),a))};_.$h=function Nxd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:Dxd(this,JD(b,241));return;}Ksd(this,a-yWd((HRd(),sRd)),tWd((c=JD(fud(this,16),29),!c?sRd:c),a),b)};_.fi=function Oxd(){return HRd(),sRd};_.hi=function Pxd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:Dxd(this,null);return;}Lsd(this,a-yWd((HRd(),sRd)),tWd((b=JD(fud(this,16),29),!b?sRd:b),a))};var uxd,vxd,wxd;var q7=zeb(MFe,'EFactoryImpl',710);mdb(1018,710,{109:1,2075:1,94:1,93:1,469:1,158:1,57:1,114:1,52:1,100:1,161:1,117:1,118:1},Rxd);_.oi=function Sxd(a,b){switch(a.fk()){case 12:return JD(b,147).Og();case 13:return qdb(b);default:throw Icb(new hfb(PFe+a.ve()+QFe));}};_.pi=function Txd(a){var b,c,d,e,f,g,h,i;switch(a.G==-1&&(a.G=(b=zVd(a),b?dXd(b.si(),a):-1)),a.G){case 4:return f=new ozd,f;case 6:return g=new Hzd,g;case 7:return h=new Wzd,h;case 8:return d=new ywd,d;case 9:return c=new evd,c;case 10:return e=new Ywd,e;case 11:return i=new gAd,i;default:throw Icb(new hfb(TFe+a.zb+QFe));}};_.qi=function Uxd(a,b){switch(a.fk()){case 13:case 12:return null;default:throw Icb(new hfb(PFe+a.ve()+QFe));}};var Z3=zeb(NFe,'ElkGraphFactoryImpl',1018);mdb(439,161,{109:1,94:1,93:1,158:1,197:1,57:1,114:1,52:1,100:1,161:1,117:1,118:1});_.Dh=function Yxd(){var a,b;b=(a=JD(fud(this,16),29),NYd(pWd(!a?this.fi():a)));return b==null?(L0d(),L0d(),K0d):new c1d(this,b)};_.Ih=function Zxd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.ve();}return Isd(this,a-yWd(this.fi()),tWd((d=JD(fud(this,16),29),!d?this.fi():d),a),b,c)};_.Th=function $xd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;}return Jsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.$h=function _xd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:this.ri(OD(b));return;}Ksd(this,a-yWd(this.fi()),tWd((c=JD(fud(this,16),29),!c?this.fi():c),a),b)};_.fi=function ayd(){return HRd(),wRd};_.hi=function byd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:this.ri(null);return;}Lsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.ve=function cyd(){return this.zb};_.ri=function dyd(a){Wxd(this,a)};_.Ib=function eyd(){return Xxd(this)};_.zb=null;var w7=zeb(MFe,'ENamedElementImpl',439);mdb(184,439,{109:1,94:1,93:1,158:1,197:1,57:1,241:1,114:1,52:1,100:1,161:1,184:1,117:1,118:1,680:1},Lyd);_.xh=function Nyd(a){return xyd(this,a)};_.Ih=function Oyd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return !this.rb&&(this.rb=new H3d(this,q6,this)),this.rb;case 6:return !this.vb&&(this.vb=new E3d(B6,this,6,7)),this.vb;case 7:if(b)return this.Db>>16==7?JD(this.Cb,241):null;return nyd(this);}return Isd(this,a-yWd((HRd(),ARd)),tWd((d=JD(fud(this,16),29),!d?ARd:d),a),b,c)};_.Ph=function Pyd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 4:!!this.sb&&(c=JD(this.sb,52).Qh(this,1,v6,c));return oyd(this,JD(a,469),c);case 5:return !this.rb&&(this.rb=new H3d(this,q6,this)),sJd(this.rb,a,c);case 6:return !this.vb&&(this.vb=new E3d(B6,this,6,7)),sJd(this.vb,a,c);case 7:!!this.Cb&&(c=(e=this.Db>>16,e>=0?xyd(this,c):this.Cb.Qh(this,-1-e,null,c)));return Gsd(this,a,7,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),ARd):d),b),69),f.uk().xk(this,dud(this),b-yWd((HRd(),ARd)),a,c)};_.Rh=function Qyd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 4:return oyd(this,null,c);case 5:return !this.rb&&(this.rb=new H3d(this,q6,this)),tJd(this.rb,a,c);case 6:return !this.vb&&(this.vb=new E3d(B6,this,6,7)),tJd(this.vb,a,c);case 7:return Gsd(this,null,7,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),ARd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),ARd)),a,c)};_.Th=function Ryd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return !!this.sb;case 5:return !!this.rb&&this.rb.i!=0;case 6:return !!this.vb&&this.vb.i!=0;case 7:return !!nyd(this);}return Jsd(this,a-yWd((HRd(),ARd)),tWd((b=JD(fud(this,16),29),!b?ARd:b),a))};_.Wh=function Syd(a){var b;b=zyd(this,a);return b?b:gxd(this,a)};_.$h=function Tyd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:Wxd(this,OD(b));return;case 2:Kyd(this,OD(b));return;case 3:Jyd(this,OD(b));return;case 4:Iyd(this,JD(b,469));return;case 5:!this.rb&&(this.rb=new H3d(this,q6,this));uJd(this.rb);!this.rb&&(this.rb=new H3d(this,q6,this));$Ed(this.rb,JD(b,18));return;case 6:!this.vb&&(this.vb=new E3d(B6,this,6,7));uJd(this.vb);!this.vb&&(this.vb=new E3d(B6,this,6,7));$Ed(this.vb,JD(b,18));return;}Ksd(this,a-yWd((HRd(),ARd)),tWd((c=JD(fud(this,16),29),!c?ARd:c),a),b)};_.bi=function Uyd(a){var b,c;if(!!a&&!!this.rb){for(c=new fKd(this.rb);c.e!=c.i.gc();){b=dKd(c);RD(b,360)&&(JD(b,360).w=null)}}hud(this,64,a)};_.fi=function Vyd(){return HRd(),ARd};_.hi=function Wyd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:Wxd(this,null);return;case 2:Kyd(this,null);return;case 3:Jyd(this,null);return;case 4:Iyd(this,null);return;case 5:!this.rb&&(this.rb=new H3d(this,q6,this));uJd(this.rb);return;case 6:!this.vb&&(this.vb=new E3d(B6,this,6,7));uJd(this.vb);return;}Lsd(this,a-yWd((HRd(),ARd)),tWd((b=JD(fud(this,16),29),!b?ARd:b),a))};_.mi=function Xyd(){yyd(this)};_.si=function Yyd(){return !this.rb&&(this.rb=new H3d(this,q6,this)),this.rb};_.ti=function Zyd(){return this.sb};_.ui=function $yd(){return this.ub};_.vi=function _yd(){return this.xb};_.wi=function azd(){return this.yb};_.xi=function bzd(a){this.ub=a};_.Ib=function czd(){var a;if((this.Db&64)!=0)return Xxd(this);a=new Zgb(Xxd(this));a.a+=' (nsURI: ';Ugb(a,this.yb);a.a+=', nsPrefix: ';Ugb(a,this.xb);a.a+=')';return a.a};_.xb=null;_.yb=null;var fyd;var G7=zeb(MFe,'EPackageImpl',184);mdb(556,184,{109:1,2077:1,556:1,94:1,93:1,158:1,197:1,57:1,241:1,114:1,52:1,100:1,161:1,184:1,117:1,118:1,680:1},gzd);_.q=false;_.r=false;var dzd=false;var $3=zeb(NFe,'ElkGraphPackageImpl',556);mdb(362,728,{109:1,343:1,174:1,157:1,276:1,362:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1},ozd);_.xh=function pzd(a){return jzd(this,a)};_.Ih=function qzd(a,b,c){switch(a){case 7:return kzd(this);case 8:return this.a;}return Evd(this,a,b,c)};_.Ph=function rzd(a,b,c){var d;switch(b){case 7:!!this.Cb&&(c=(d=this.Db>>16,d>=0?jzd(this,c):this.Cb.Qh(this,-1-d,null,c)));return izd(this,JD(a,174),c);}return mvd(this,a,b,c)};_.Rh=function szd(a,b,c){if(b==7){return izd(this,null,c)}return nvd(this,a,b,c)};_.Th=function tzd(a){switch(a){case 7:return !!kzd(this);case 8:return !sgb('',this.a);}return Fvd(this,a)};_.$h=function uzd(a,b){switch(a){case 7:lzd(this,JD(b,174));return;case 8:mzd(this,OD(b));return;}Gvd(this,a,b)};_.fi=function vzd(){return ysd(),ssd};_.hi=function wzd(a){switch(a){case 7:lzd(this,null);return;case 8:mzd(this,'');return;}Hvd(this,a)};_.Ib=function xzd(){return nzd(this)};_.a='';var _3=zeb(NFe,'ElkLabelImpl',362);mdb(206,729,{109:1,343:1,84:1,174:1,26:1,276:1,206:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1},Hzd);_.xh=function Izd(a){return zzd(this,a)};_.Ih=function Jzd(a,b,c){switch(a){case 9:return !this.c&&(this.c=new A3d(R3,this,9,9)),this.c;case 10:return !this.a&&(this.a=new A3d(Q3,this,10,11)),this.a;case 11:return Czd(this);case 12:return !this.b&&(this.b=new A3d(N3,this,12,3)),this.b;case 13:return Ndb(),!this.a&&(this.a=new A3d(Q3,this,10,11)),this.a.i>0?true:false;}return _vd(this,a,b,c)};_.Ph=function Kzd(a,b,c){var d;switch(b){case 9:return !this.c&&(this.c=new A3d(R3,this,9,9)),sJd(this.c,a,c);case 10:return !this.a&&(this.a=new A3d(Q3,this,10,11)),sJd(this.a,a,c);case 11:!!this.Cb&&(c=(d=this.Db>>16,d>=0?zzd(this,c):this.Cb.Qh(this,-1-d,null,c)));return yzd(this,JD(a,26),c);case 12:return !this.b&&(this.b=new A3d(N3,this,12,3)),sJd(this.b,a,c);}return awd(this,a,b,c)};_.Rh=function Lzd(a,b,c){switch(b){case 9:return !this.c&&(this.c=new A3d(R3,this,9,9)),tJd(this.c,a,c);case 10:return !this.a&&(this.a=new A3d(Q3,this,10,11)),tJd(this.a,a,c);case 11:return yzd(this,null,c);case 12:return !this.b&&(this.b=new A3d(N3,this,12,3)),tJd(this.b,a,c);}return bwd(this,a,b,c)};_.Th=function Mzd(a){switch(a){case 9:return !!this.c&&this.c.i!=0;case 10:return !!this.a&&this.a.i!=0;case 11:return !!Czd(this);case 12:return !!this.b&&this.b.i!=0;case 13:return !this.a&&(this.a=new A3d(Q3,this,10,11)),this.a.i>0;}return cwd(this,a)};_.$h=function Nzd(a,b){switch(a){case 9:!this.c&&(this.c=new A3d(R3,this,9,9));uJd(this.c);!this.c&&(this.c=new A3d(R3,this,9,9));$Ed(this.c,JD(b,18));return;case 10:!this.a&&(this.a=new A3d(Q3,this,10,11));uJd(this.a);!this.a&&(this.a=new A3d(Q3,this,10,11));$Ed(this.a,JD(b,18));return;case 11:Fzd(this,JD(b,26));return;case 12:!this.b&&(this.b=new A3d(N3,this,12,3));uJd(this.b);!this.b&&(this.b=new A3d(N3,this,12,3));$Ed(this.b,JD(b,18));return;}dwd(this,a,b)};_.fi=function Ozd(){return ysd(),tsd};_.hi=function Pzd(a){switch(a){case 9:!this.c&&(this.c=new A3d(R3,this,9,9));uJd(this.c);return;case 10:!this.a&&(this.a=new A3d(Q3,this,10,11));uJd(this.a);return;case 11:Fzd(this,null);return;case 12:!this.b&&(this.b=new A3d(N3,this,12,3));uJd(this.b);return;}ewd(this,a)};_.Ib=function Qzd(){return Gzd(this)};var a4=zeb(NFe,'ElkNodeImpl',206);mdb(193,729,{109:1,343:1,84:1,174:1,125:1,276:1,193:1,105:1,94:1,93:1,57:1,114:1,52:1,100:1,117:1,118:1},Wzd);_.xh=function Xzd(a){return Szd(this,a)};_.Ih=function Yzd(a,b,c){if(a==9){return Tzd(this)}return _vd(this,a,b,c)};_.Ph=function Zzd(a,b,c){var d;switch(b){case 9:!!this.Cb&&(c=(d=this.Db>>16,d>=0?Szd(this,c):this.Cb.Qh(this,-1-d,null,c)));return Rzd(this,JD(a,26),c);}return awd(this,a,b,c)};_.Rh=function $zd(a,b,c){if(b==9){return Rzd(this,null,c)}return bwd(this,a,b,c)};_.Th=function _zd(a){if(a==9){return !!Tzd(this)}return cwd(this,a)};_.$h=function aAd(a,b){switch(a){case 9:Uzd(this,JD(b,26));return;}dwd(this,a,b)};_.fi=function bAd(){return ysd(),usd};_.hi=function cAd(a){switch(a){case 9:Uzd(this,null);return;}ewd(this,a)};_.Ib=function dAd(){return Vzd(this)};var b4=zeb(NFe,'ElkPortImpl',193);var W5=Beb(mGe,'BasicEMap/Entry');mdb(1091,118,{109:1,45:1,94:1,93:1,136:1,57:1,114:1,52:1,100:1,117:1,118:1},gAd);_.Fb=function mAd(a){return this===a};_.jd=function oAd(){return this.b};_.Hb=function qAd(){return ADb(this)};_.Ai=function sAd(a){eAd(this,JD(a,147))};_.Ih=function hAd(a,b,c){switch(a){case 0:return this.b;case 1:return this.c;}return Msd(this,a,b,c)};_.Th=function iAd(a){switch(a){case 0:return !!this.b;case 1:return this.c!=null;}return Tsd(this,a)};_.$h=function jAd(a,b){switch(a){case 0:eAd(this,JD(b,147));return;case 1:fAd(this,b);return;}dtd(this,a,b)};_.fi=function kAd(){return ysd(),vsd};_.hi=function lAd(a){switch(a){case 0:eAd(this,null);return;case 1:fAd(this,null);return;}htd(this,a)};_.yi=function nAd(){var a;if(this.a==-1){a=this.b;this.a=!a?0:tb(a)}return this.a};_.kd=function pAd(){return this.c};_.zi=function rAd(a){this.a=a};_.ld=function tAd(a){var b;b=this.c;fAd(this,a);return b};_.Ib=function uAd(){var a;if((this.Db&64)!=0)return jtd(this);a=new ihb;ehb(ehb(ehb(a,this.b?this.b.Og():vte),jye),Ngb(this.c));return a.a};_.a=-1;_.c=null;var c4=zeb(NFe,'ElkPropertyToValueMapEntryImpl',1091);mdb(980,1,{},IAd);var e4=zeb(pGe,'JsonAdapter',980);mdb(215,63,tue,JAd);var f4=zeb(pGe,'JsonImportException',215);mdb(850,1,{},dCd);var W4=zeb(pGe,'JsonImporter',850);mdb(884,1,{},eCd);_.Bi=function fCd(a){cBd(this.a,this.b,JD(a,139))};var g4=zeb(pGe,'JsonImporter/lambda$0$Type',884);mdb(885,1,{},gCd);_.Bi=function hCd(a){dBd(this.a,this.b,JD(a,139))};var h4=zeb(pGe,'JsonImporter/lambda$1$Type',885);mdb(893,1,{},iCd);_.Bi=function jCd(a){eBd(this.a,JD(a,149))};var i4=zeb(pGe,'JsonImporter/lambda$10$Type',893);mdb(895,1,{},kCd);_.Bi=function lCd(a){fBd(this.a,this.b,JD(a,139))};var j4=zeb(pGe,'JsonImporter/lambda$11$Type',895);mdb(896,1,{},mCd);_.Bi=function nCd(a){gBd(this.a,this.b,JD(a,139))};var k4=zeb(pGe,'JsonImporter/lambda$12$Type',896);mdb(902,1,{},oCd);_.Bi=function pCd(a){hBd(this.a,this.b,this.c,this.d,JD(a,139))};var l4=zeb(pGe,'JsonImporter/lambda$13$Type',902);mdb(901,1,{},qCd);_.Bi=function rCd(a){iBd(this.a,this.b,this.c,this.d,JD(a,149))};var m4=zeb(pGe,'JsonImporter/lambda$14$Type',901);mdb(897,1,{},sCd);_.Bi=function tCd(a){jBd(this.a,this.b,OD(a))};var n4=zeb(pGe,'JsonImporter/lambda$15$Type',897);mdb(898,1,{},uCd);_.Bi=function vCd(a){kBd(this.a,this.b,OD(a))};var o4=zeb(pGe,'JsonImporter/lambda$16$Type',898);mdb(899,1,{},wCd);_.Bi=function xCd(a){lBd(this.b,this.a,JD(a,139))};var p4=zeb(pGe,'JsonImporter/lambda$17$Type',899);mdb(900,1,{},yCd);_.Bi=function zCd(a){mBd(this.b,this.a,JD(a,139))};var q4=zeb(pGe,'JsonImporter/lambda$18$Type',900);mdb(905,1,{},ACd);_.Bi=function BCd(a){nBd(this.a,JD(a,149))};var r4=zeb(pGe,'JsonImporter/lambda$19$Type',905);mdb(886,1,{},CCd);_.Bi=function DCd(a){oBd(this.a,JD(a,139))};var s4=zeb(pGe,'JsonImporter/lambda$2$Type',886);mdb(903,1,{},ECd);_.Bi=function FCd(a){Vwd(this.a,Reb(MD(a)))};var t4=zeb(pGe,'JsonImporter/lambda$20$Type',903);mdb(904,1,{},GCd);_.Bi=function HCd(a){Wwd(this.a,Reb(MD(a)))};var u4=zeb(pGe,'JsonImporter/lambda$21$Type',904);mdb(908,1,{},ICd);_.Bi=function JCd(a){pBd(this.a,JD(a,149))};var v4=zeb(pGe,'JsonImporter/lambda$22$Type',908);mdb(906,1,{},KCd);_.Bi=function LCd(a){Owd(this.a,Reb(MD(a)))};var w4=zeb(pGe,'JsonImporter/lambda$23$Type',906);mdb(907,1,{},MCd);_.Bi=function NCd(a){Pwd(this.a,Reb(MD(a)))};var x4=zeb(pGe,'JsonImporter/lambda$24$Type',907);mdb(910,1,{},OCd);_.Bi=function PCd(a){qBd(this.a,JD(a,139))};var y4=zeb(pGe,'JsonImporter/lambda$25$Type',910);mdb(909,1,{},QCd);_.Bi=function RCd(a){rBd(this.a,JD(a,149))};var z4=zeb(pGe,'JsonImporter/lambda$26$Type',909);mdb(911,1,Rte,SCd);_.Ad=function TCd(a){sBd(this.b,this.a,OD(a))};var A4=zeb(pGe,'JsonImporter/lambda$27$Type',911);mdb(912,1,Rte,UCd);_.Ad=function VCd(a){tBd(this.b,this.a,OD(a))};var B4=zeb(pGe,'JsonImporter/lambda$28$Type',912);mdb(913,1,{},WCd);_.Bi=function XCd(a){uBd(this.a,this.b,JD(a,139))};var C4=zeb(pGe,'JsonImporter/lambda$29$Type',913);mdb(889,1,{},YCd);_.Bi=function ZCd(a){vBd(this.a,JD(a,149))};var D4=zeb(pGe,'JsonImporter/lambda$3$Type',889);mdb(914,1,{},$Cd);_.Bi=function _Cd(a){wBd(this.a,this.b,JD(a,139))};var E4=zeb(pGe,'JsonImporter/lambda$30$Type',914);mdb(915,1,{},aDd);_.Bi=function bDd(a){xBd(this.a,MD(a))};var F4=zeb(pGe,'JsonImporter/lambda$31$Type',915);mdb(916,1,{},cDd);_.Bi=function dDd(a){yBd(this.a,MD(a))};var G4=zeb(pGe,'JsonImporter/lambda$32$Type',916);mdb(917,1,{},eDd);_.Bi=function fDd(a){zBd(this.a,MD(a))};var H4=zeb(pGe,'JsonImporter/lambda$33$Type',917);mdb(918,1,{},gDd);_.Bi=function hDd(a){ABd(this.a,MD(a))};var I4=zeb(pGe,'JsonImporter/lambda$34$Type',918);mdb(919,1,{},iDd);_.Bi=function jDd(a){RBd(this.a,JD(a,57))};var J4=zeb(pGe,'JsonImporter/lambda$35$Type',919);mdb(920,1,{},kDd);_.Bi=function lDd(a){SBd(this.a,JD(a,57))};var K4=zeb(pGe,'JsonImporter/lambda$36$Type',920);mdb(924,1,{},nDd);var L4=zeb(pGe,'JsonImporter/lambda$37$Type',924);mdb(921,1,Rte,oDd);_.Ad=function pDd(a){CBd(this.a,this.c,this.b,JD(a,372))};var M4=zeb(pGe,'JsonImporter/lambda$38$Type',921);mdb(922,1,Rte,qDd);_.Ad=function rDd(a){DBd(this.a,this.b,JD(a,170))};var N4=zeb(pGe,'JsonImporter/lambda$39$Type',922);mdb(887,1,{},sDd);_.Bi=function tDd(a){Vwd(this.a,Reb(MD(a)))};var O4=zeb(pGe,'JsonImporter/lambda$4$Type',887);mdb(923,1,Rte,uDd);_.Ad=function vDd(a){EBd(this.a,this.b,JD(a,170))};var P4=zeb(pGe,'JsonImporter/lambda$40$Type',923);mdb(925,1,Rte,wDd);_.Ad=function xDd(a){FBd(this.a,this.b,this.c,JD(a,8))};var Q4=zeb(pGe,'JsonImporter/lambda$41$Type',925);mdb(888,1,{},yDd);_.Bi=function zDd(a){Wwd(this.a,Reb(MD(a)))};var R4=zeb(pGe,'JsonImporter/lambda$5$Type',888);mdb(892,1,{},ADd);_.Bi=function BDd(a){GBd(this.a,JD(a,149))};var S4=zeb(pGe,'JsonImporter/lambda$6$Type',892);mdb(890,1,{},CDd);_.Bi=function DDd(a){Owd(this.a,Reb(MD(a)))};var T4=zeb(pGe,'JsonImporter/lambda$7$Type',890);mdb(891,1,{},EDd);_.Bi=function FDd(a){Pwd(this.a,Reb(MD(a)))};var U4=zeb(pGe,'JsonImporter/lambda$8$Type',891);mdb(894,1,{},GDd);_.Bi=function HDd(a){HBd(this.a,JD(a,139))};var V4=zeb(pGe,'JsonImporter/lambda$9$Type',894);mdb(944,1,Rte,QDd);_.Ad=function RDd(a){vAd(this.a,new GC(OD(a)))};var X4=zeb(pGe,'JsonMetaDataConverter/lambda$0$Type',944);mdb(945,1,Rte,SDd);_.Ad=function TDd(a){MDd(this.a,JD(a,244))};var Y4=zeb(pGe,'JsonMetaDataConverter/lambda$1$Type',945);mdb(946,1,Rte,UDd);_.Ad=function VDd(a){NDd(this.a,JD(a,144))};var Z4=zeb(pGe,'JsonMetaDataConverter/lambda$2$Type',946);mdb(947,1,Rte,WDd);_.Ad=function XDd(a){ODd(this.a,JD(a,160))};var $4=zeb(pGe,'JsonMetaDataConverter/lambda$3$Type',947);mdb(244,23,{3:1,35:1,23:1,244:1},fEd);var YDd,ZDd,$Dd,_Dd,aEd,bEd,cEd,dEd;var _4=Aeb(_we,'GraphFeature',244,MI,hEd,gEd);var iEd;mdb(11,1,{35:1,147:1},nEd,oEd,pEd,qEd);_.Dd=function rEd(a){return kEd(this,JD(a,147))};_.Fb=function sEd(a){return lEd(this,a)};_.Rg=function tEd(){return mEd(this)};_.Og=function uEd(){return this.b};_.Hb=function vEd(){return vgb(this.b)};_.Ib=function wEd(){return this.b};var e5=zeb(_we,'Property',11);mdb(657,1,fwe,yEd);_.Le=function zEd(a,b){return xEd(this,JD(a,105),JD(b,105))};_.Fb=function AEd(a){return this===a};_.Me=function BEd(){return new Kqb(this)};var d5=zeb(_we,'PropertyHolderComparator',657);mdb(698,1,Ate,SEd);_.Nb=function TEd(a){ctb(this,a)};_.Pb=function VEd(){return REd(this)};_.Qb=function WEd(){dtb()};_.Ob=function UEd(){return !!this.a};var f5=zeb(EGe,'ElkGraphUtil/AncestorIterator',698);var e6=Beb(mGe,'EList');mdb(71,56,{20:1,31:1,56:1,18:1,16:1,71:1,61:1});_._c=function jFd(a,b){XEd(this,a,b)};_.Ec=function kFd(a){return YEd(this,a)};_.ad=function lFd(a,b){return ZEd(this,a,b)};_.Fc=function mFd(a){return $Ed(this,a)};_.Gi=function nFd(){return new AKd(this)};_.Hi=function oFd(){return new DKd(this)};_.Ii=function pFd(a){return _Ed(this,a)};_.Ji=function qFd(){return true};_.Ki=function rFd(a,b){};_.Li=function sFd(){};_.Mi=function tFd(a,b){aFd(this,a,b)};_.Ni=function uFd(a,b,c){};_.Oi=function vFd(a,b){};_.Pi=function wFd(a,b,c){};_.Fb=function xFd(a){return bFd(this,a)};_.Hb=function yFd(){return eFd(this)};_.Qi=function zFd(){return false};_.Jc=function AFd(){return new fKd(this)};_.cd=function BFd(){return new oKd(this)};_.dd=function CFd(a){var b;b=this.gc();if(a<0||a>b)throw Icb(new cKd(a,b));return new pKd(this,a)};_.Si=function DFd(a,b){this.Ri(a,this.bd(b))};_.Kc=function EFd(a){return fFd(this,a)};_.Ui=function FFd(a,b){return b};_.fd=function GFd(a,b){return gFd(this,a,b)};_.Ib=function HFd(){return hFd(this)};_.Wi=function IFd(){return true};_.Xi=function JFd(a,b){return iFd(this,b)};var C5=zeb(mGe,'AbstractEList',71);mdb(67,71,JGe,$Fd,_Fd,aGd);_.Ci=function bGd(a,b){return KFd(this,a,b)};_.Di=function cGd(a){return LFd(this,a)};_.Ei=function dGd(a,b){MFd(this,a,b)};_.Fi=function eGd(a){NFd(this,a)};_.Yi=function fGd(a){return PFd(this,a)};_.$b=function gGd(){QFd(this)};_.Gc=function hGd(a){return RFd(this,a)};_.Xb=function iGd(a){return SFd(this,a)};_.Zi=function jGd(a){var b,c,d;++this.j;c=this.g==null?0:this.g.length;if(a>c){d=this.g;b=c+(c/2|0)+4;b=0){this.ed(b);return true}else{return false}};_.Vi=function NHd(a,b){return this.Bj(a,this.Xi(a,b))};_.gc=function OHd(){return this.Cj()};_.Nc=function PHd(){return this.Dj()};_.Oc=function QHd(a){return this.Ej(a)};_.Ib=function RHd(){return this.Fj()};var Z5=zeb(mGe,'DelegatingEList',2055);mdb(2056,2055,zHe);_.Ci=function ZHd(a,b){return SHd(this,a,b)};_.Di=function $Hd(a){return this.Ci(this.Cj(),a)};_.Ei=function _Hd(a,b){THd(this,a,b)};_.Fi=function aId(a){UHd(this,a)};_.Ji=function bId(){return !this.Kj()};_.$b=function cId(){XHd(this)};_.Gj=function dId(a,b,c,d,e){return new cJd(this,a,b,c,d,e)};_.Hj=function eId(a){zsd(this.hj(),a)};_.Ij=function fId(){return null};_.Jj=function gId(){return -1};_.hj=function hId(){return null};_.Kj=function iId(){return false};_.Lj=function jId(a,b){return b};_.Mj=function kId(a,b){return b};_.Nj=function lId(){return false};_.Oj=function mId(){return !this.yj()};_.Ri=function nId(a,b){var c,d;if(this.Nj()){d=this.Oj();c=dHd(this,a,b);this.Hj(this.Gj(7,zfb(b),c,a,d));return c}else{return dHd(this,a,b)}};_.ed=function oId(a){var b,c,d,e;if(this.Nj()){c=null;d=this.Oj();b=this.Gj(4,e=eHd(this,a),null,a,d);if(this.Kj()&&!!e){c=this.Mj(e,c);if(!c){this.Hj(b)}else{c.lj(b);c.mj()}}else{if(!c){this.Hj(b)}else{c.lj(b);c.mj()}}return e}else{e=eHd(this,a);if(this.Kj()&&!!e){c=this.Mj(e,null);!!c&&c.mj()}return e}};_.Vi=function pId(a,b){return YHd(this,a,b)};var q5=zeb(DFe,'DelegatingNotifyingListImpl',2056);mdb(151,1,AHe);_.lj=function RId(a){return qId(this,a)};_.mj=function SId(){rId(this)};_.ej=function TId(){return this.d};_.Ij=function UId(){return null};_.Pj=function VId(){return null};_.fj=function WId(a){return -1};_.gj=function XId(){return AId(this)};_.hj=function YId(){return null};_.ij=function ZId(){return JId(this)};_.jj=function $Id(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o};_.Qj=function _Id(){return false};_.kj=function aJd(a){var b,c,d,e,f,g,h,i,j,k,l;switch(this.d){case 1:case 2:{e=a.ej();switch(e){case 1:case 2:{f=a.hj();if(XD(f)===XD(this.hj())&&this.fj(null)==a.fj(null)){this.g=a.gj();a.ej()==1&&(this.d=1);return true}}}}case 4:{e=a.ej();switch(e){case 4:{f=a.hj();if(XD(f)===XD(this.hj())&&this.fj(null)==a.fj(null)){j=LId(this);i=this.o<0?this.o<-2?-2-this.o-1:-1:this.o;g=a.jj();this.d=6;l=new _Fd(2);if(i<=g){YEd(l,this.n);YEd(l,a.ij());this.g=WC(OC(cE,1),Pue,30,15,[this.o=i,g+1])}else{YEd(l,a.ij());YEd(l,this.n);this.g=WC(OC(cE,1),Pue,30,15,[this.o=g,i])}this.n=l;j||(this.o=-2-this.o-1);return true}break}}break}case 6:{e=a.ej();switch(e){case 4:{f=a.hj();if(XD(f)===XD(this.hj())&&this.fj(null)==a.fj(null)){j=LId(this);g=a.jj();k=JD(this.g,54);d=SC(cE,Pue,30,k.length+1,15,1);b=0;while(b>>0,b.toString(16)));d.a+=' (eventType: ';switch(this.d){case 1:{d.a+='SET';break}case 2:{d.a+='UNSET';break}case 3:{d.a+='ADD';break}case 5:{d.a+='ADD_MANY';break}case 4:{d.a+='REMOVE';break}case 6:{d.a+='REMOVE_MANY';break}case 7:{d.a+='MOVE';break}case 8:{d.a+='REMOVING_ADAPTER';break}case 9:{d.a+='RESOLVE';break}default:{Sgb(d,this.d);break}}KId(this)&&(d.a+=', touch: true',d);d.a+=', position: ';Sgb(d,this.o<0?this.o<-2?-2-this.o-1:-1:this.o);d.a+=', notifier: ';Tgb(d,this.hj());d.a+=', feature: ';Tgb(d,this.Ij());d.a+=', oldValue: ';Tgb(d,JId(this));d.a+=', newValue: ';if(this.d==6&&RD(this.g,54)){c=JD(this.g,54);d.a+='[';for(a=0;a10){if(!this.b||this.c.j!=this.a){this.b=new gsb(this);this.a=this.j}return csb(this.b,a)}else{return RFd(this,a)}};_.Wi=function bKd(){return true};_.a=0;var w5=zeb(mGe,'AbstractEList/1',949);mdb(305,99,lve,cKd);var x5=zeb(mGe,'AbstractEList/BasicIndexOutOfBoundsException',305);mdb(42,1,Ate,fKd);_.Nb=function iKd(a){ctb(this,a)};_.Vj=function gKd(){if(this.i.j!=this.f){throw Icb(new Oqb)}};_.Wj=function hKd(){return dKd(this)};_.Ob=function jKd(){return this.e!=this.i.gc()};_.Pb=function kKd(){return this.Wj()};_.Qb=function lKd(){eKd(this)};_.e=0;_.f=0;_.g=-1;var y5=zeb(mGe,'AbstractEList/EIterator',42);mdb(286,42,Jte,oKd,pKd);_.Qb=function xKd(){eKd(this)};_.Rb=function qKd(a){mKd(this,a)};_.Xj=function rKd(){var b;try{b=this.d.Xb(--this.e);this.Vj();this.g=this.e;return b}catch(a){a=Hcb(a);if(RD(a,99)){this.Vj();throw Icb(new Hub)}else throw Icb(a)}};_.Yj=function sKd(a){nKd(this,a)};_.Sb=function tKd(){return this.e!=0};_.Tb=function uKd(){return this.e};_.Ub=function vKd(){return this.Xj()};_.Vb=function wKd(){return this.e-1};_.Wb=function yKd(a){this.Yj(a)};var z5=zeb(mGe,'AbstractEList/EListIterator',286);mdb(355,42,Ate,AKd);_.Wj=function BKd(){return zKd(this)};_.Qb=function CKd(){throw Icb(new qhb)};var A5=zeb(mGe,'AbstractEList/NonResolvingEIterator',355);mdb(391,286,Jte,DKd,EKd);_.Rb=function FKd(a){throw Icb(new qhb)};_.Wj=function GKd(){var b;try{b=this.c.Ti(this.e);this.Vj();this.g=this.e++;return b}catch(a){a=Hcb(a);if(RD(a,99)){this.Vj();throw Icb(new Hub)}else throw Icb(a)}};_.Xj=function HKd(){var b;try{b=this.c.Ti(--this.e);this.Vj();this.g=this.e;return b}catch(a){a=Hcb(a);if(RD(a,99)){this.Vj();throw Icb(new Hub)}else throw Icb(a)}};_.Qb=function IKd(){throw Icb(new qhb)};_.Wb=function JKd(a){throw Icb(new qhb)};var B5=zeb(mGe,'AbstractEList/NonResolvingEListIterator',391);mdb(2042,71,DHe);_.Ci=function RKd(a,b){var c,d,e,f,g,h,i,j,k,l,m;e=b.gc();if(e!=0){j=JD(fud(this.a,4),129);k=j==null?0:j.length;m=k+e;d=PKd(this,m);l=k-a;l>0&&ohb(j,a,d,a+e,l);i=b.Jc();for(g=0;gc)throw Icb(new cKd(a,c));return new yLd(this,a)};_.$b=function YKd(){var a,b;++this.j;a=JD(fud(this.a,4),129);b=a==null?0:a.length;zbe(this,null);aFd(this,b,a)};_.Gc=function ZKd(a){var b,c,d,e,f;b=JD(fud(this.a,4),129);if(b!=null){if(a!=null){for(d=b,e=0,f=d.length;e=c)throw Icb(new cKd(a,c));return b[a]};_.bd=function _Kd(a){var b,c,d;b=JD(fud(this.a,4),129);if(b!=null){if(a!=null){for(c=0,d=b.length;cc)throw Icb(new cKd(a,c));return new qLd(this,a)};_.Ri=function eLd(a,b){var c,d,e;c=OKd(this);e=c==null?0:c.length;if(a>=e)throw Icb(new Cdb(GGe+a+HGe+e));if(b>=e)throw Icb(new Cdb(IGe+b+HGe+e));d=c[b];if(a!=b){a0&&ohb(a,0,b,0,c);return b};_.Oc=function kLd(a){var b,c,d;b=JD(fud(this.a,4),129);d=b==null?0:b.length;if(d>0){if(a.lengthd&&VC(a,d,null);return a};var LKd;var I5=zeb(mGe,'ArrayDelegatingEList',2042);mdb(1032,42,Ate,lLd);_.Vj=function mLd(){if(this.b.j!=this.f||XD(JD(fud(this.b.a,4),129))!==XD(this.a)){throw Icb(new Oqb)}};_.Qb=function nLd(){eKd(this);this.a=JD(fud(this.b.a,4),129)};var E5=zeb(mGe,'ArrayDelegatingEList/EIterator',1032);mdb(712,286,Jte,pLd,qLd);_.Vj=function rLd(){if(this.b.j!=this.f||XD(JD(fud(this.b.a,4),129))!==XD(this.a)){throw Icb(new Oqb)}};_.Yj=function sLd(a){nKd(this,a);this.a=JD(fud(this.b.a,4),129)};_.Qb=function tLd(){eKd(this);this.a=JD(fud(this.b.a,4),129)};var F5=zeb(mGe,'ArrayDelegatingEList/EListIterator',712);mdb(1033,355,Ate,uLd);_.Vj=function vLd(){if(this.b.j!=this.f||XD(JD(fud(this.b.a,4),129))!==XD(this.a)){throw Icb(new Oqb)}};var G5=zeb(mGe,'ArrayDelegatingEList/NonResolvingEIterator',1033);mdb(713,391,Jte,xLd,yLd);_.Vj=function zLd(){if(this.b.j!=this.f||XD(JD(fud(this.b.a,4),129))!==XD(this.a)){throw Icb(new Oqb)}};var H5=zeb(mGe,'ArrayDelegatingEList/NonResolvingEListIterator',713);mdb(605,305,lve,ALd);var J5=zeb(mGe,'BasicEList/BasicIndexOutOfBoundsException',605);mdb(699,67,JGe,BLd);_._c=function CLd(a,b){throw Icb(new qhb)};_.Ec=function DLd(a){throw Icb(new qhb)};_.ad=function ELd(a,b){throw Icb(new qhb)};_.Fc=function FLd(a){throw Icb(new qhb)};_.$b=function GLd(){throw Icb(new qhb)};_.Zi=function HLd(a){throw Icb(new qhb)};_.Jc=function ILd(){return this.Gi()};_.cd=function JLd(){return this.Hi()};_.dd=function KLd(a){return this.Ii(a)};_.Ri=function LLd(a,b){throw Icb(new qhb)};_.Si=function MLd(a,b){throw Icb(new qhb)};_.ed=function NLd(a){throw Icb(new qhb)};_.Kc=function OLd(a){throw Icb(new qhb)};_.fd=function PLd(a,b){throw Icb(new qhb)};var K5=zeb(mGe,'BasicEList/UnmodifiableEList',699);mdb(711,1,{3:1,20:1,18:1,16:1,61:1,586:1});_._c=function oMd(a,b){QLd(this,a,JD(b,45))};_.Ec=function pMd(a){return RLd(this,JD(a,45))};_.Ic=function xMd(a){Efb(this,a)};_.Xb=function yMd(a){return JD(SFd(this.c,a),136)};_.Ri=function HMd(a,b){return JD(this.c.Ri(a,b),45)};_.Si=function IMd(a,b){gMd(this,a,JD(b,45))};_.ed=function LMd(a){return JD(this.c.ed(a),45)};_.fd=function NMd(a,b){return mMd(this,a,JD(b,45))};_.gd=function PMd(a){yub(this,a)};_.Lc=function QMd(){return new Wvb(this,16)};_.Mc=function RMd(){return new gCb(null,new Wvb(this,16))};_.ad=function qMd(a,b){return this.c.ad(a,b)};_.Fc=function rMd(a){return this.c.Fc(a)};_.$b=function sMd(){this.c.$b()};_.Gc=function tMd(a){return this.c.Gc(a)};_.Hc=function uMd(a){return Ae(this.c,a)};_.Zj=function vMd(){var a,b,c;if(this.d==null){this.d=SC(L5,EHe,67,2*this.f+1,0,1);c=this.e;this.f=0;for(b=this.c.Jc();b.e!=b.i.gc();){a=JD(b.Wj(),136);WLd(this,a)}this.e=c}};_.Fb=function wMd(a){return _Ld(this,a)};_.Hb=function zMd(){return eFd(this.c)};_.bd=function AMd(a){return this.c.bd(a)};_.$j=function BMd(){this.c=new ZMd(this)};_.dc=function CMd(){return this.f==0};_.Jc=function DMd(){return this.c.Jc()};_.cd=function EMd(){return this.c.cd()};_.dd=function FMd(a){return this.c.dd(a)};_._j=function GMd(){return fMd(this)};_.ak=function JMd(a,b,c){return new ZNd(a,b,c)};_.bk=function KMd(){return new dNd};_.Kc=function MMd(a){return jMd(this,a)};_.gc=function OMd(){return this.f};_.hd=function SMd(a,b){return new Yjb(this.c,a,b)};_.Nc=function TMd(){return this.c.Nc()};_.Oc=function UMd(a){return this.c.Oc(a)};_.Ib=function VMd(){return hFd(this.c)};_.e=0;_.f=0;var Y5=zeb(mGe,'BasicEMap',711);mdb(1027,67,JGe,ZMd);_.Ki=function $Md(a,b){WMd(this,JD(b,136))};_.Ni=function aNd(a,b,c){var d;++(d=this,JD(b,136),d).a.e};_.Oi=function bNd(a,b){XMd(this,JD(b,136))};_.Pi=function cNd(a,b,c){YMd(this,JD(b,136),JD(c,136))};_.Mi=function _Md(a,b){VLd(this.a)};var M5=zeb(mGe,'BasicEMap/1',1027);mdb(1028,67,JGe,dNd);_.$i=function eNd(a){return SC(V5,FHe,611,a,0,1)};var N5=zeb(mGe,'BasicEMap/2',1028);mdb(1029,Ete,Fte,fNd);_.$b=function gNd(){this.a.c.$b()};_.Gc=function hNd(a){return SLd(this.a,a)};_.Jc=function iNd(){return this.a.f==0?(jOd(),iOd.a):new ENd(this.a)};_.Kc=function jNd(a){var b;b=this.a.f;lMd(this.a,a);return this.a.f!=b};_.gc=function kNd(){return this.a.f};var O5=zeb(mGe,'BasicEMap/3',1029);mdb(1030,31,Dte,lNd);_.$b=function mNd(){this.a.c.$b()};_.Gc=function nNd(a){return TLd(this.a,a)};_.Jc=function oNd(){return this.a.f==0?(jOd(),iOd.a):new GNd(this.a)};_.gc=function pNd(){return this.a.f};var P5=zeb(mGe,'BasicEMap/4',1030);mdb(1031,Ete,Fte,rNd);_.$b=function sNd(){this.a.c.$b()};_.Gc=function tNd(a){var b,c,d,e,f,g,h,i,j;if(this.a.f>0&&RD(a,45)){this.a.Zj();i=JD(a,45);h=i.jd();e=h==null?0:tb(h);f=dMd(this.a,e);b=this.a.d[f];if(b){c=JD(b.g,374);j=b.i;for(g=0;g'+this.c};_.a=0;var V5=zeb(mGe,'BasicEMap/EntryImpl',611);mdb(534,1,{},hOd);var X5=zeb(mGe,'BasicEMap/View',534);var iOd;mdb(769,1,{});_.Fb=function xOd(a){return It((Fnb(),Cnb),a)};_.Hb=function yOd(){return Jnb((Fnb(),Cnb))};_.Ib=function zOd(){return Ee((Fnb(),Cnb))};var b6=zeb(mGe,'ECollections/BasicEmptyUnmodifiableEList',769);mdb(1302,1,Jte,AOd);_.Nb=function COd(a){ctb(this,a)};_.Rb=function BOd(a){throw Icb(new qhb)};_.Ob=function DOd(){return false};_.Sb=function EOd(){return false};_.Pb=function FOd(){throw Icb(new Hub)};_.Tb=function GOd(){return 0};_.Ub=function HOd(){throw Icb(new Hub)};_.Vb=function IOd(){return -1};_.Qb=function JOd(){throw Icb(new qhb)};_.Wb=function KOd(a){throw Icb(new qhb)};var a6=zeb(mGe,'ECollections/BasicEmptyUnmodifiableEList/1',1302);mdb(1300,769,{20:1,18:1,16:1,61:1},LOd);_._c=function MOd(a,b){mOd()};_.Ec=function NOd(a){return nOd()};_.ad=function OOd(a,b){return oOd()};_.Fc=function POd(a){return pOd()};_.$b=function QOd(){qOd()};_.Gc=function ROd(a){return false};_.Hc=function SOd(a){return false};_.Ic=function TOd(a){Efb(this,a)};_.Xb=function UOd(a){return Pnb((Fnb(),Cnb,a)),null};_.bd=function VOd(a){return -1};_.dc=function WOd(){return true};_.Jc=function XOd(){return this.a};_.cd=function YOd(){return this.a};_.dd=function ZOd(a){return this.a};_.Ri=function $Od(a,b){return rOd()};_.Si=function _Od(a,b){sOd()};_.ed=function aPd(a){return tOd()};_.Kc=function bPd(a){return uOd()};_.fd=function cPd(a,b){return vOd()};_.gc=function dPd(){return 0};_.gd=function ePd(a){yub(this,a)};_.Lc=function fPd(){return new Wvb(this,16)};_.Mc=function gPd(){return new gCb(null,new Wvb(this,16))};_.hd=function hPd(a,b){return Fnb(),new Yjb(Cnb,a,b)};_.Nc=function iPd(){return Ce((Fnb(),Cnb))};_.Oc=function jPd(a){return Fnb(),De(Cnb,a)};var c6=zeb(mGe,'ECollections/EmptyUnmodifiableEList',1300);mdb(1301,769,{20:1,18:1,16:1,61:1,586:1},kPd);_._c=function lPd(a,b){mOd()};_.Ec=function mPd(a){return nOd()};_.ad=function nPd(a,b){return oOd()};_.Fc=function oPd(a){return pOd()};_.$b=function pPd(){qOd()};_.Gc=function qPd(a){return false};_.Hc=function rPd(a){return false};_.Ic=function sPd(a){Efb(this,a)};_.Xb=function tPd(a){return Pnb((Fnb(),Cnb,a)),null};_.bd=function uPd(a){return -1};_.dc=function vPd(){return true};_.Jc=function wPd(){return this.a};_.cd=function xPd(){return this.a};_.dd=function yPd(a){return this.a};_.Ri=function APd(a,b){return rOd()};_.Si=function BPd(a,b){sOd()};_.ed=function CPd(a){return tOd()};_.Kc=function DPd(a){return uOd()};_.fd=function EPd(a,b){return vOd()};_.gc=function FPd(){return 0};_.gd=function GPd(a){yub(this,a)};_.Lc=function HPd(){return new Wvb(this,16)};_.Mc=function IPd(){return new gCb(null,new Wvb(this,16))};_.hd=function JPd(a,b){return Fnb(),new Yjb(Cnb,a,b)};_.Nc=function KPd(){return Ce((Fnb(),Cnb))};_.Oc=function LPd(a){return Fnb(),De(Cnb,a)};_._j=function zPd(){return Fnb(),Fnb(),Dnb};var d6=zeb(mGe,'ECollections/EmptyUnmodifiableEMap',1301);var f6=Beb(mGe,'Enumerator');var MPd;mdb(290,1,{290:1},jQd);_.Fb=function nQd(a){var b;if(this===a)return true;if(!RD(a,290))return false;b=JD(a,290);return this.f==b.f&&pQd(this.i,b.i)&&oQd(this.a,(this.f&256)!=0?(b.f&256)!=0?b.a:null:(b.f&256)!=0?null:b.a)&&oQd(this.d,b.d)&&oQd(this.g,b.g)&&oQd(this.e,b.e)&&gQd(this,b)};_.Hb=function sQd(){return this.f};_.Ib=function AQd(){return hQd(this)};_.f=0;var QPd=0,RPd=0,SPd=0,TPd=0,UPd=0,VPd=0,WPd=0,XPd=0,YPd=0,ZPd,$Pd=0,_Pd=0,aQd=0,bQd=0,cQd,dQd;var k6=zeb(mGe,'URI',290);mdb(1090,44,Hve,KQd);_.yc=function LQd(a,b){return JD(fjb(this,OD(a),JD(b,290)),290)};var j6=zeb(mGe,'URI/URICache',1090);mdb(492,67,JGe,MQd,NQd);_.Qi=function OQd(){return true};var l6=zeb(mGe,'UniqueEList',492);mdb(578,63,tue,PQd);var m6=zeb(mGe,'WrappedException',578);var n6=Beb(pFe,JHe);var I6=Beb(pFe,KHe);var G6=Beb(pFe,LHe);var o6=Beb(pFe,MHe);var q6=Beb(pFe,NHe);var p6=Beb(pFe,'EClass');var s6=Beb(pFe,'EDataType');var QQd;mdb(1198,44,Hve,TQd);_.xc=function UQd(a){return VD(a)?cjb(this,a):Wd(vsb(this.f,a))};var r6=zeb(pFe,'EDataType/Internal/ConversionDelegate/Factory/Registry/Impl',1198);var u6=Beb(pFe,'EEnum');var t6=Beb(pFe,OHe);var w6=Beb(pFe,PHe);var A6=Beb(pFe,QHe);var VQd;var C6=Beb(pFe,RHe);var D6=Beb(pFe,SHe);mdb(1023,1,{},ZQd);_.Ib=function $Qd(){return 'NIL'};var E6=zeb(pFe,'EStructuralFeature/Internal/DynamicValueHolder/1',1023);var _Qd;mdb(1022,44,Hve,cRd);_.xc=function dRd(a){return VD(a)?cjb(this,a):Wd(vsb(this.f,a))};var F6=zeb(pFe,'EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl',1022);var H6=Beb(pFe,THe);var J6=Beb(pFe,'EValidator/PatternMatcher');var eRd;var gRd;var iRd;var kRd,lRd,mRd,nRd,oRd,pRd,qRd,rRd,sRd,tRd,uRd,vRd,wRd,xRd,yRd,zRd,ARd,BRd,CRd,DRd,ERd,FRd,GRd;var Rab=Beb(UHe,'FeatureMap/Entry');mdb(533,1,{75:1},IRd);_.Jk=function JRd(){return this.a};_.kd=function KRd(){return this.b};var K6=zeb(MFe,'BasicEObjectImpl/1',533);mdb(1021,1,VHe,LRd);_.Dk=function MRd(a){return Osd(this.a,this.b,a)};_.Oj=function NRd(){return Usd(this.a,this.b)};_.Wb=function ORd(a){etd(this.a,this.b,a)};_.Ek=function PRd(){itd(this.a,this.b)};var L6=zeb(MFe,'BasicEObjectImpl/4',1021);mdb(2043,1,{114:1});_.Kk=function SRd(a){this.e=a==0?QRd:SC(aJ,rte,1,a,5,1)};_.ii=function TRd(a){return this.e[a]};_.ji=function URd(a,b){this.e[a]=b};_.ki=function VRd(a){this.e[a]=null};_.Lk=function WRd(){return this.c};_.Mk=function XRd(){throw Icb(new qhb)};_.Nk=function YRd(){throw Icb(new qhb)};_.Ok=function ZRd(){return this.d};_.Pk=function $Rd(){return this.e!=null};_.Qk=function _Rd(a){this.c=a};_.Rk=function aSd(a){throw Icb(new qhb)};_.Sk=function bSd(a){throw Icb(new qhb)};_.Tk=function cSd(a){this.d=a};var QRd;var M6=zeb(MFe,'BasicEObjectImpl/EPropertiesHolderBaseImpl',2043);mdb(192,2043,{114:1},dSd);_.Mk=function eSd(){return this.a};_.Nk=function fSd(){return this.b};_.Rk=function gSd(a){this.a=a};_.Sk=function hSd(a){this.b=a};var N6=zeb(MFe,'BasicEObjectImpl/EPropertiesHolderImpl',192);mdb(501,100,LFe,iSd);_.rh=function jSd(){return this.f};_.wh=function kSd(){return this.k};_.yh=function lSd(a,b){this.g=a;this.i=b};_.Ah=function mSd(){return (this.j&2)==0?this.fi():this.Xh().Lk()};_.Ch=function nSd(){return this.i};_.th=function oSd(){return (this.j&1)!=0};_.Mh=function pSd(){return this.g};_.Sh=function qSd(){return (this.j&4)!=0};_.Xh=function rSd(){return !this.k&&(this.k=new dSd),this.k};_._h=function sSd(a){this.Xh().Qk(a);a?(this.j|=2):(this.j&=-3)};_.bi=function tSd(a){this.Xh().Sk(a);a?(this.j|=4):(this.j&=-5)};_.fi=function uSd(){return (jRd(),iRd).S};_.i=0;_.j=1;var y7=zeb(MFe,'EObjectImpl',501);mdb(785,501,{109:1,94:1,93:1,57:1,114:1,52:1,100:1},xSd);_.ii=function ySd(a){return this.e[a]};_.ji=function zSd(a,b){this.e[a]=b};_.ki=function ASd(a){this.e[a]=null};_.Ah=function BSd(){return this.d};_.Fh=function CSd(a){return zWd(this.d,a)};_.Hh=function DSd(){return this.d};_.Lh=function ESd(){return this.e!=null};_.Xh=function FSd(){!this.k&&(this.k=new TSd);return this.k};_._h=function GSd(a){this.d=a};_.ei=function HSd(){var a;if(this.e==null){a=yWd(this.d);this.e=a==0?vSd:SC(aJ,rte,1,a,5,1)}return this};_.gi=function ISd(){return 0};var vSd;var R6=zeb(MFe,'DynamicEObjectImpl',785);mdb(1483,785,{109:1,45:1,94:1,93:1,136:1,57:1,114:1,52:1,100:1},JSd);_.Fb=function LSd(a){return this===a};_.Hb=function PSd(){return ADb(this)};_._h=function KSd(a){this.d=a;this.b=uWd(a,'key');this.c=uWd(a,WFe)};_.yi=function MSd(){var a;if(this.a==-1){a=Psd(this,this.b);this.a=a==null?0:tb(a)}return this.a};_.jd=function NSd(){return Psd(this,this.b)};_.kd=function OSd(){return Psd(this,this.c)};_.zi=function QSd(a){this.a=a};_.Ai=function RSd(a){etd(this,this.b,a)};_.ld=function SSd(a){var b;b=Psd(this,this.c);etd(this,this.c,a);return b};_.a=0;var P6=zeb(MFe,'DynamicEObjectImpl/BasicEMapEntry',1483);mdb(1484,1,{114:1},TSd);_.Kk=function USd(a){throw Icb(new qhb)};_.ii=function VSd(a){throw Icb(new qhb)};_.ji=function WSd(a,b){throw Icb(new qhb)};_.ki=function XSd(a){throw Icb(new qhb)};_.Lk=function YSd(){throw Icb(new qhb)};_.Mk=function ZSd(){return this.a};_.Nk=function $Sd(){return this.b};_.Ok=function _Sd(){return this.c};_.Pk=function aTd(){throw Icb(new qhb)};_.Qk=function bTd(a){throw Icb(new qhb)};_.Rk=function cTd(a){this.a=a};_.Sk=function dTd(a){this.b=a};_.Tk=function eTd(a){this.c=a};var Q6=zeb(MFe,'DynamicEObjectImpl/DynamicEPropertiesHolderImpl',1484);mdb(504,161,{109:1,94:1,93:1,587:1,158:1,57:1,114:1,52:1,100:1,504:1,161:1,117:1,118:1},nTd);_.xh=function oTd(a){return gTd(this,a)};_.Ih=function pTd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.d;case 2:return c?(!this.b&&(this.b=new QTd((HRd(),DRd),K7,this)),this.b):(!this.b&&(this.b=new QTd((HRd(),DRd),K7,this)),fMd(this.b));case 3:return iTd(this);case 4:return !this.a&&(this.a=new VXd(z6,this,4)),this.a;case 5:return !this.c&&(this.c=new xge(z6,this,5)),this.c;}return Isd(this,a-yWd((HRd(),kRd)),tWd((d=JD(fud(this,16),29),!d?kRd:d),a),b,c)};_.Ph=function qTd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 3:!!this.Cb&&(c=(e=this.Db>>16,e>=0?gTd(this,c):this.Cb.Qh(this,-1-e,null,c)));return fTd(this,JD(a,158),c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),kRd):d),b),69),f.uk().xk(this,dud(this),b-yWd((HRd(),kRd)),a,c)};_.Rh=function rTd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 2:return !this.b&&(this.b=new QTd((HRd(),DRd),K7,this)),zTd(this.b,a,c);case 3:return fTd(this,null,c);case 4:return !this.a&&(this.a=new VXd(z6,this,4)),tJd(this.a,a,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),kRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),kRd)),a,c)};_.Th=function sTd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return !!this.b&&this.b.f!=0;case 3:return !!iTd(this);case 4:return !!this.a&&this.a.i!=0;case 5:return !!this.c&&this.c.i!=0;}return Jsd(this,a-yWd((HRd(),kRd)),tWd((b=JD(fud(this,16),29),!b?kRd:b),a))};_.$h=function tTd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:kTd(this,OD(b));return;case 2:!this.b&&(this.b=new QTd((HRd(),DRd),K7,this));ATd(this.b,b);return;case 3:jTd(this,JD(b,158));return;case 4:!this.a&&(this.a=new VXd(z6,this,4));uJd(this.a);!this.a&&(this.a=new VXd(z6,this,4));$Ed(this.a,JD(b,18));return;case 5:!this.c&&(this.c=new xge(z6,this,5));uJd(this.c);!this.c&&(this.c=new xge(z6,this,5));$Ed(this.c,JD(b,18));return;}Ksd(this,a-yWd((HRd(),kRd)),tWd((c=JD(fud(this,16),29),!c?kRd:c),a),b)};_.fi=function uTd(){return HRd(),kRd};_.hi=function vTd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:lTd(this,null);return;case 2:!this.b&&(this.b=new QTd((HRd(),DRd),K7,this));this.b.c.$b();return;case 3:jTd(this,null);return;case 4:!this.a&&(this.a=new VXd(z6,this,4));uJd(this.a);return;case 5:!this.c&&(this.c=new xge(z6,this,5));uJd(this.c);return;}Lsd(this,a-yWd((HRd(),kRd)),tWd((b=JD(fud(this,16),29),!b?kRd:b),a))};_.Ib=function wTd(){return mTd(this)};_.d=null;var T6=zeb(MFe,'EAnnotationImpl',504);mdb(142,711,WHe,BTd);_.Ei=function CTd(a,b){xTd(this,a,JD(b,45))};_.Uk=function DTd(a,b){return yTd(this,JD(a,45),b)};_.Yi=function ETd(a){return JD(JD(this.c,72).Yi(a),136)};_.Gi=function FTd(){return JD(this.c,72).Gi()};_.Hi=function GTd(){return JD(this.c,72).Hi()};_.Ii=function HTd(a){return JD(this.c,72).Ii(a)};_.Vk=function ITd(a,b){return zTd(this,a,b)};_.Dk=function JTd(a){return JD(this.c,77).Dk(a)};_.$j=function KTd(){};_.Oj=function LTd(){return JD(this.c,77).Oj()};_.ak=function MTd(a,b,c){var d;d=JD(zVd(this.b).ti().pi(this.b),136);d.zi(a);d.Ai(b);d.ld(c);return d};_.bk=function NTd(){return new she(this)};_.Wb=function OTd(a){ATd(this,a)};_.Ek=function PTd(){JD(this.c,77).Ek()};var Lab=zeb(UHe,'EcoreEMap',142);mdb(169,142,WHe,QTd);_.Zj=function RTd(){var a,b,c,d,e,f;if(this.d==null){f=SC(L5,EHe,67,2*this.f+1,0,1);for(c=this.c.Jc();c.e!=c.i.gc();){b=JD(c.Wj(),136);d=b.yi();e=(d<e)%f.length;a=f[e];!a&&(a=f[e]=new she(this));a.Ec(b)}this.d=f}};var S6=zeb(MFe,'EAnnotationImpl/1',169);mdb(293,439,{109:1,94:1,93:1,158:1,197:1,57:1,114:1,470:1,52:1,100:1,161:1,293:1,117:1,118:1});_.Ih=function cUd(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Ndb(),(this.Bb&256)!=0?true:false;case 3:return Ndb(),(this.Bb&512)!=0?true:false;case 4:return zfb(this.s);case 5:return zfb(this.t);case 6:return Ndb(),this.Hk()?true:false;case 7:return Ndb(),e=this.s,e>=1?true:false;case 8:if(b)return UTd(this);return this.r;case 9:return this.q;}return Isd(this,a-yWd(this.fi()),tWd((d=JD(fud(this,16),29),!d?this.fi():d),a),b,c)};_.Rh=function dUd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 9:return TTd(this,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?this.fi():d),b),69),e.uk().yk(this,dud(this),b-yWd(this.fi()),a,c)};_.Th=function eUd(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.Hk();case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&h0d(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&h0d(this.q).i==0);}return Jsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.$h=function fUd(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:this.ri(OD(b));return;case 2:ZTd(this,Odb(LD(b)));return;case 3:$Td(this,Odb(LD(b)));return;case 4:YTd(this,JD(b,15).a);return;case 5:this.Xk(JD(b,15).a);return;case 8:WTd(this,JD(b,143));return;case 9:d=VTd(this,JD(b,87),null);!!d&&d.mj();return;}Ksd(this,a-yWd(this.fi()),tWd((c=JD(fud(this,16),29),!c?this.fi():c),a),b)};_.fi=function gUd(){return HRd(),FRd};_.hi=function hUd(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:this.ri(null);return;case 2:ZTd(this,true);return;case 3:$Td(this,true);return;case 4:YTd(this,0);return;case 5:this.Xk(1);return;case 8:WTd(this,null);return;case 9:c=VTd(this,null,null);!!c&&c.mj();return;}Lsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.mi=function iUd(){UTd(this);this.Bb|=1};_.Fk=function jUd(){return UTd(this)};_.Gk=function kUd(){return this.t};_.Hk=function lUd(){var a;return a=this.t,a>1||a==-1};_.Qi=function mUd(){return (this.Bb&512)!=0};_.Wk=function nUd(a,b){return XTd(this,a,b)};_.Xk=function oUd(a){_Td(this,a)};_.Ib=function pUd(){return aUd(this)};_.s=0;_.t=1;var I8=zeb(MFe,'ETypedElementImpl',293);mdb(451,293,{109:1,94:1,93:1,158:1,197:1,57:1,179:1,69:1,114:1,470:1,52:1,100:1,161:1,451:1,293:1,117:1,118:1,682:1});_.xh=function GUd(a){return qUd(this,a)};_.Ih=function HUd(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Ndb(),(this.Bb&256)!=0?true:false;case 3:return Ndb(),(this.Bb&512)!=0?true:false;case 4:return zfb(this.s);case 5:return zfb(this.t);case 6:return Ndb(),this.Hk()?true:false;case 7:return Ndb(),e=this.s,e>=1?true:false;case 8:if(b)return UTd(this);return this.r;case 9:return this.q;case 10:return Ndb(),(this.Bb&GHe)!=0?true:false;case 11:return Ndb(),(this.Bb&Mte)!=0?true:false;case 12:return Ndb(),(this.Bb&qve)!=0?true:false;case 13:return this.j;case 14:return rUd(this);case 15:return Ndb(),(this.Bb&YHe)!=0?true:false;case 16:return Ndb(),(this.Bb&Pte)!=0?true:false;case 17:return sUd(this);}return Isd(this,a-yWd(this.fi()),tWd((d=JD(fud(this,16),29),!d?this.fi():d),a),b,c)};_.Ph=function IUd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 17:!!this.Cb&&(c=(e=this.Db>>16,e>=0?qUd(this,c):this.Cb.Qh(this,-1-e,null,c)));return Gsd(this,a,17,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?this.fi():d),b),69),f.uk().xk(this,dud(this),b-yWd(this.fi()),a,c)};_.Rh=function JUd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 9:return TTd(this,c);case 17:return Gsd(this,null,17,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?this.fi():d),b),69),e.uk().yk(this,dud(this),b-yWd(this.fi()),a,c)};_.Th=function KUd(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.Hk();case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&h0d(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&h0d(this.q).i==0);case 10:return (this.Bb&GHe)==0;case 11:return (this.Bb&Mte)!=0;case 12:return (this.Bb&qve)!=0;case 13:return this.j!=null;case 14:return rUd(this)!=null;case 15:return (this.Bb&YHe)!=0;case 16:return (this.Bb&Pte)!=0;case 17:return !!sUd(this);}return Jsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.$h=function LUd(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:AUd(this,OD(b));return;case 2:ZTd(this,Odb(LD(b)));return;case 3:$Td(this,Odb(LD(b)));return;case 4:YTd(this,JD(b,15).a);return;case 5:this.Xk(JD(b,15).a);return;case 8:WTd(this,JD(b,143));return;case 9:d=VTd(this,JD(b,87),null);!!d&&d.mj();return;case 10:vUd(this,Odb(LD(b)));return;case 11:DUd(this,Odb(LD(b)));return;case 12:BUd(this,Odb(LD(b)));return;case 13:wUd(this,OD(b));return;case 15:CUd(this,Odb(LD(b)));return;case 16:yUd(this,Odb(LD(b)));return;}Ksd(this,a-yWd(this.fi()),tWd((c=JD(fud(this,16),29),!c?this.fi():c),a),b)};_.fi=function MUd(){return HRd(),ERd};_.hi=function NUd(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:RD(this.Cb,88)&&tYd(wWd(JD(this.Cb,88)),4);Wxd(this,null);return;case 2:ZTd(this,true);return;case 3:$Td(this,true);return;case 4:YTd(this,0);return;case 5:this.Xk(1);return;case 8:WTd(this,null);return;case 9:c=VTd(this,null,null);!!c&&c.mj();return;case 10:vUd(this,true);return;case 11:DUd(this,false);return;case 12:BUd(this,false);return;case 13:this.i=null;xUd(this,null);return;case 15:CUd(this,false);return;case 16:yUd(this,false);return;}Lsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.mi=function OUd(){yde(Oce((jie(),hie),this));UTd(this);this.Bb|=1};_.nk=function PUd(){return this.f};_.gk=function QUd(){return rUd(this)};_.ok=function RUd(){return sUd(this)};_.sk=function SUd(){return null};_.Yk=function TUd(){return this.k};_.Jj=function UUd(){return this.n};_.tk=function VUd(){return tUd(this)};_.uk=function WUd(){var a,b,c,d,e,f,g,h,i;if(!this.p){c=sUd(this);(c.i==null&&pWd(c),c.i).length;d=this.sk();!!d&&yWd(sUd(d));e=UTd(this);g=e.ik();a=!g?null:(g.i&1)!=0?g==Fcb?GI:g==cE?UI:g==bE?QI:g==aE?LI:g==dE?XI:g==Ecb?cJ:g==$D?HI:II:g;b=rUd(this);h=e.gk();Khe(this);(this.Bb&Pte)!=0&&(!!(f=Rce((jie(),hie),c))&&f!=this||!!(f=xde(Oce(hie,this))))?(this.p=new X4d(this,f)):this.Hk()?this.$k()?!d?(this.Bb&YHe)!=0?!a?this._k()?(this.p=new g5d(42,this)):(this.p=new g5d(0,this)):a==LK?(this.p=new e5d(50,W5,this)):this._k()?(this.p=new e5d(43,a,this)):(this.p=new e5d(1,a,this)):!a?this._k()?(this.p=new g5d(44,this)):(this.p=new g5d(2,this)):a==LK?(this.p=new e5d(41,W5,this)):this._k()?(this.p=new e5d(45,a,this)):(this.p=new e5d(3,a,this)):(this.Bb&YHe)!=0?!a?this._k()?(this.p=new h5d(46,this,d)):(this.p=new h5d(4,this,d)):this._k()?(this.p=new f5d(47,a,this,d)):(this.p=new f5d(5,a,this,d)):!a?this._k()?(this.p=new h5d(48,this,d)):(this.p=new h5d(6,this,d)):this._k()?(this.p=new f5d(49,a,this,d)):(this.p=new f5d(7,a,this,d)):RD(e,159)?a==Rab?(this.p=new g5d(40,this)):(this.Bb&512)!=0?(this.Bb&YHe)!=0?!a?(this.p=new g5d(8,this)):(this.p=new e5d(9,a,this)):!a?(this.p=new g5d(10,this)):(this.p=new e5d(11,a,this)):(this.Bb&YHe)!=0?!a?(this.p=new g5d(12,this)):(this.p=new e5d(13,a,this)):!a?(this.p=new g5d(14,this)):(this.p=new e5d(15,a,this)):!d?this._k()?(this.Bb&YHe)!=0?!a?(this.p=new g5d(16,this)):(this.p=new e5d(17,a,this)):!a?(this.p=new g5d(18,this)):(this.p=new e5d(19,a,this)):(this.Bb&YHe)!=0?!a?(this.p=new g5d(20,this)):(this.p=new e5d(21,a,this)):!a?(this.p=new g5d(22,this)):(this.p=new e5d(23,a,this)):(i=d.t,i>1||i==-1?this._k()?(this.Bb&YHe)!=0?!a?(this.p=new h5d(24,this,d)):(this.p=new f5d(25,a,this,d)):!a?(this.p=new h5d(26,this,d)):(this.p=new f5d(27,a,this,d)):(this.Bb&YHe)!=0?!a?(this.p=new h5d(28,this,d)):(this.p=new f5d(29,a,this,d)):!a?(this.p=new h5d(30,this,d)):(this.p=new f5d(31,a,this,d)):this._k()?(this.Bb&YHe)!=0?!a?(this.p=new h5d(32,this,d)):(this.p=new f5d(33,a,this,d)):!a?(this.p=new h5d(34,this,d)):(this.p=new f5d(35,a,this,d)):(this.Bb&YHe)!=0?!a?(this.p=new h5d(36,this,d)):(this.p=new f5d(37,a,this,d)):!a?(this.p=new h5d(38,this,d)):(this.p=new f5d(39,a,this,d))):this.Zk()?this._k()?(this.p=new I5d(JD(e,29),this,d)):(this.p=new A5d(JD(e,29),this,d)):RD(e,159)?a==Rab?(this.p=new g5d(40,this)):(this.Bb&YHe)!=0?!a?(this.p=new H6d(JD(e,159),b,h,this)):(this.p=new J6d(b,h,this,($5d(),g==cE?W5d:g==Fcb?R5d:g==dE?X5d:g==bE?V5d:g==aE?U5d:g==Ecb?Z5d:g==$D?S5d:g==_D?T5d:Y5d))):!a?(this.p=new A6d(JD(e,159),b,h,this)):(this.p=new C6d(b,h,this,($5d(),g==cE?W5d:g==Fcb?R5d:g==dE?X5d:g==bE?V5d:g==aE?U5d:g==Ecb?Z5d:g==$D?S5d:g==_D?T5d:Y5d))):this.$k()?!d?(this.Bb&YHe)!=0?this._k()?(this.p=new b7d(JD(e,29),this)):(this.p=new _6d(JD(e,29),this)):this._k()?(this.p=new Z6d(JD(e,29),this)):(this.p=new X6d(JD(e,29),this)):(this.Bb&YHe)!=0?this._k()?(this.p=new j7d(JD(e,29),this,d)):(this.p=new h7d(JD(e,29),this,d)):this._k()?(this.p=new f7d(JD(e,29),this,d)):(this.p=new d7d(JD(e,29),this,d)):this._k()?!d?(this.Bb&YHe)!=0?(this.p=new n7d(JD(e,29),this)):(this.p=new l7d(JD(e,29),this)):(this.Bb&YHe)!=0?(this.p=new r7d(JD(e,29),this,d)):(this.p=new p7d(JD(e,29),this,d)):!d?(this.Bb&YHe)!=0?(this.p=new t7d(JD(e,29),this)):(this.p=new L6d(JD(e,29),this)):(this.Bb&YHe)!=0?(this.p=new x7d(JD(e,29),this,d)):(this.p=new v7d(JD(e,29),this,d))}return this.p};_.pk=function XUd(){return (this.Bb&GHe)!=0};_.Zk=function YUd(){return false};_.$k=function ZUd(){return false};_.qk=function $Ud(){return (this.Bb&Pte)!=0};_.vk=function _Ud(){return uUd(this)};_._k=function aVd(){return false};_.rk=function bVd(){return (this.Bb&YHe)!=0};_.al=function cVd(a){this.k=a};_.ri=function dVd(a){AUd(this,a)};_.Ib=function eVd(){return EUd(this)};_.e=false;_.n=0;var A8=zeb(MFe,'EStructuralFeatureImpl',451);mdb(335,451,{109:1,94:1,93:1,38:1,158:1,197:1,57:1,179:1,69:1,114:1,470:1,52:1,100:1,335:1,161:1,451:1,293:1,117:1,118:1,682:1},kVd);_.Ih=function lVd(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Ndb(),(this.Bb&256)!=0?true:false;case 3:return Ndb(),(this.Bb&512)!=0?true:false;case 4:return zfb(this.s);case 5:return zfb(this.t);case 6:return Ndb(),hVd(this)?true:false;case 7:return Ndb(),e=this.s,e>=1?true:false;case 8:if(b)return UTd(this);return this.r;case 9:return this.q;case 10:return Ndb(),(this.Bb&GHe)!=0?true:false;case 11:return Ndb(),(this.Bb&Mte)!=0?true:false;case 12:return Ndb(),(this.Bb&qve)!=0?true:false;case 13:return this.j;case 14:return rUd(this);case 15:return Ndb(),(this.Bb&YHe)!=0?true:false;case 16:return Ndb(),(this.Bb&Pte)!=0?true:false;case 17:return sUd(this);case 18:return Ndb(),(this.Bb&KFe)!=0?true:false;case 19:if(b)return gVd(this);return fVd(this);}return Isd(this,a-yWd((HRd(),lRd)),tWd((d=JD(fud(this,16),29),!d?lRd:d),a),b,c)};_.Th=function mVd(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return hVd(this);case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&h0d(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&h0d(this.q).i==0);case 10:return (this.Bb&GHe)==0;case 11:return (this.Bb&Mte)!=0;case 12:return (this.Bb&qve)!=0;case 13:return this.j!=null;case 14:return rUd(this)!=null;case 15:return (this.Bb&YHe)!=0;case 16:return (this.Bb&Pte)!=0;case 17:return !!sUd(this);case 18:return (this.Bb&KFe)!=0;case 19:return !!fVd(this);}return Jsd(this,a-yWd((HRd(),lRd)),tWd((b=JD(fud(this,16),29),!b?lRd:b),a))};_.$h=function nVd(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:AUd(this,OD(b));return;case 2:ZTd(this,Odb(LD(b)));return;case 3:$Td(this,Odb(LD(b)));return;case 4:YTd(this,JD(b,15).a);return;case 5:jVd(this,JD(b,15).a);return;case 8:WTd(this,JD(b,143));return;case 9:d=VTd(this,JD(b,87),null);!!d&&d.mj();return;case 10:vUd(this,Odb(LD(b)));return;case 11:DUd(this,Odb(LD(b)));return;case 12:BUd(this,Odb(LD(b)));return;case 13:wUd(this,OD(b));return;case 15:CUd(this,Odb(LD(b)));return;case 16:yUd(this,Odb(LD(b)));return;case 18:iVd(this,Odb(LD(b)));return;}Ksd(this,a-yWd((HRd(),lRd)),tWd((c=JD(fud(this,16),29),!c?lRd:c),a),b)};_.fi=function oVd(){return HRd(),lRd};_.hi=function pVd(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:RD(this.Cb,88)&&tYd(wWd(JD(this.Cb,88)),4);Wxd(this,null);return;case 2:ZTd(this,true);return;case 3:$Td(this,true);return;case 4:YTd(this,0);return;case 5:this.b=0;_Td(this,1);return;case 8:WTd(this,null);return;case 9:c=VTd(this,null,null);!!c&&c.mj();return;case 10:vUd(this,true);return;case 11:DUd(this,false);return;case 12:BUd(this,false);return;case 13:this.i=null;xUd(this,null);return;case 15:CUd(this,false);return;case 16:yUd(this,false);return;case 18:iVd(this,false);return;}Lsd(this,a-yWd((HRd(),lRd)),tWd((b=JD(fud(this,16),29),!b?lRd:b),a))};_.mi=function qVd(){gVd(this);yde(Oce((jie(),hie),this));UTd(this);this.Bb|=1};_.Hk=function rVd(){return hVd(this)};_.Wk=function sVd(a,b){this.b=0;this.a=null;return XTd(this,a,b)};_.Xk=function tVd(a){jVd(this,a)};_.Ib=function uVd(){var a;if((this.Db&64)!=0)return EUd(this);a=new Zgb(EUd(this));a.a+=' (iD: ';Vgb(a,(this.Bb&KFe)!=0);a.a+=')';return a.a};_.b=0;var U6=zeb(MFe,'EAttributeImpl',335);mdb(360,439,{109:1,94:1,93:1,143:1,158:1,197:1,57:1,114:1,52:1,100:1,360:1,161:1,117:1,118:1,681:1});_.bl=function LVd(a){return a.Ah()==this};_.xh=function MVd(a){return yVd(this,a)};_.yh=function NVd(a,b){this.w=null;this.Db=b<<16|this.Db&255;this.Cb=a};_.Ih=function OVd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return BVd(this);case 4:return this.gk();case 5:return this.F;case 6:if(b)return zVd(this);return vVd(this);case 7:return !this.A&&(this.A=new gge(H6,this,7)),this.A;}return Isd(this,a-yWd(this.fi()),tWd((d=JD(fud(this,16),29),!d?this.fi():d),a),b,c)};_.Ph=function PVd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?yVd(this,c):this.Cb.Qh(this,-1-e,null,c)));return Gsd(this,a,6,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?this.fi():d),b),69),f.uk().xk(this,dud(this),b-yWd(this.fi()),a,c)};_.Rh=function QVd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 6:return Gsd(this,null,6,c);case 7:return !this.A&&(this.A=new gge(H6,this,7)),tJd(this.A,a,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?this.fi():d),b),69),e.uk().yk(this,dud(this),b-yWd(this.fi()),a,c)};_.Th=function RVd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!BVd(this);case 4:return this.gk()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!vVd(this);case 7:return !!this.A&&this.A.i!=0;}return Jsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.$h=function SVd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:JVd(this,OD(b));return;case 2:GVd(this,OD(b));return;case 5:IVd(this,OD(b));return;case 7:!this.A&&(this.A=new gge(H6,this,7));uJd(this.A);!this.A&&(this.A=new gge(H6,this,7));$Ed(this.A,JD(b,18));return;}Ksd(this,a-yWd(this.fi()),tWd((c=JD(fud(this,16),29),!c?this.fi():c),a),b)};_.fi=function TVd(){return HRd(),nRd};_.hi=function UVd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:RD(this.Cb,184)&&(JD(this.Cb,184).tb=null);Wxd(this,null);return;case 2:wVd(this,null);xVd(this,this.D);return;case 5:IVd(this,null);return;case 7:!this.A&&(this.A=new gge(H6,this,7));uJd(this.A);return;}Lsd(this,a-yWd(this.fi()),tWd((b=JD(fud(this,16),29),!b?this.fi():b),a))};_.fk=function VVd(){var a;return this.G==-1&&(this.G=(a=zVd(this),a?dXd(a.si(),this):-1)),this.G};_.gk=function WVd(){return null};_.hk=function XVd(){return zVd(this)};_.cl=function YVd(){return this.v};_.ik=function ZVd(){return BVd(this)};_.jk=function $Vd(){return this.D!=null?this.D:this.B};_.kk=function _Vd(){return this.F};_.dk=function aWd(a){return DVd(this,a)};_.dl=function bWd(a){this.v=a};_.el=function cWd(a){EVd(this,a)};_.fl=function dWd(a){this.C=a};_.ri=function eWd(a){JVd(this,a)};_.Ib=function fWd(){return KVd(this)};_.C=null;_.D=null;_.G=-1;var k7=zeb(MFe,'EClassifierImpl',360);mdb(88,360,{109:1,94:1,93:1,29:1,143:1,158:1,197:1,57:1,114:1,52:1,100:1,88:1,360:1,161:1,471:1,117:1,118:1,681:1},FWd);_.bl=function GWd(a){return BWd(this,a.Ah())};_.Ih=function HWd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return BVd(this);case 4:return null;case 5:return this.F;case 6:if(b)return zVd(this);return vVd(this);case 7:return !this.A&&(this.A=new gge(H6,this,7)),this.A;case 8:return Ndb(),(this.Bb&256)!=0?true:false;case 9:return Ndb(),(this.Bb&512)!=0?true:false;case 10:return xWd(this);case 11:return !this.q&&(this.q=new A3d(A6,this,11,10)),this.q;case 12:return kWd(this);case 13:return oWd(this);case 14:return oWd(this),this.r;case 15:return kWd(this),this.k;case 16:return lWd(this);case 17:return nWd(this);case 18:return pWd(this);case 19:return qWd(this);case 20:return kWd(this),this.o;case 21:return !this.s&&(this.s=new A3d(G6,this,21,17)),this.s;case 22:return rWd(this);case 23:return mWd(this);}return Isd(this,a-yWd((HRd(),mRd)),tWd((d=JD(fud(this,16),29),!d?mRd:d),a),b,c)};_.Ph=function IWd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?yVd(this,c):this.Cb.Qh(this,-1-e,null,c)));return Gsd(this,a,6,c);case 11:return !this.q&&(this.q=new A3d(A6,this,11,10)),sJd(this.q,a,c);case 21:return !this.s&&(this.s=new A3d(G6,this,21,17)),sJd(this.s,a,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),mRd):d),b),69),f.uk().xk(this,dud(this),b-yWd((HRd(),mRd)),a,c)};_.Rh=function JWd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 6:return Gsd(this,null,6,c);case 7:return !this.A&&(this.A=new gge(H6,this,7)),tJd(this.A,a,c);case 11:return !this.q&&(this.q=new A3d(A6,this,11,10)),tJd(this.q,a,c);case 21:return !this.s&&(this.s=new A3d(G6,this,21,17)),tJd(this.s,a,c);case 22:return tJd(rWd(this),a,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),mRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),mRd)),a,c)};_.Th=function KWd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!BVd(this);case 4:return false;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!vVd(this);case 7:return !!this.A&&this.A.i!=0;case 8:return (this.Bb&256)!=0;case 9:return (this.Bb&512)!=0;case 10:return !!this.u&&rWd(this.u.a).i!=0&&!(!!this.n&&bYd(this.n));case 11:return !!this.q&&this.q.i!=0;case 12:return kWd(this).i!=0;case 13:return oWd(this).i!=0;case 14:return oWd(this),this.r.i!=0;case 15:return kWd(this),this.k.i!=0;case 16:return lWd(this).i!=0;case 17:return nWd(this).i!=0;case 18:return pWd(this).i!=0;case 19:return qWd(this).i!=0;case 20:return kWd(this),!!this.o;case 21:return !!this.s&&this.s.i!=0;case 22:return !!this.n&&bYd(this.n);case 23:return mWd(this).i!=0;}return Jsd(this,a-yWd((HRd(),mRd)),tWd((b=JD(fud(this,16),29),!b?mRd:b),a))};_.Wh=function LWd(a){var b;b=this.i==null||!!this.q&&this.q.i!=0?null:uWd(this,a);return b?b:gxd(this,a)};_.$h=function MWd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:JVd(this,OD(b));return;case 2:GVd(this,OD(b));return;case 5:IVd(this,OD(b));return;case 7:!this.A&&(this.A=new gge(H6,this,7));uJd(this.A);!this.A&&(this.A=new gge(H6,this,7));$Ed(this.A,JD(b,18));return;case 8:CWd(this,Odb(LD(b)));return;case 9:DWd(this,Odb(LD(b)));return;case 10:XHd(xWd(this));$Ed(xWd(this),JD(b,18));return;case 11:!this.q&&(this.q=new A3d(A6,this,11,10));uJd(this.q);!this.q&&(this.q=new A3d(A6,this,11,10));$Ed(this.q,JD(b,18));return;case 21:!this.s&&(this.s=new A3d(G6,this,21,17));uJd(this.s);!this.s&&(this.s=new A3d(G6,this,21,17));$Ed(this.s,JD(b,18));return;case 22:uJd(rWd(this));$Ed(rWd(this),JD(b,18));return;}Ksd(this,a-yWd((HRd(),mRd)),tWd((c=JD(fud(this,16),29),!c?mRd:c),a),b)};_.fi=function NWd(){return HRd(),mRd};_.hi=function OWd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:RD(this.Cb,184)&&(JD(this.Cb,184).tb=null);Wxd(this,null);return;case 2:wVd(this,null);xVd(this,this.D);return;case 5:IVd(this,null);return;case 7:!this.A&&(this.A=new gge(H6,this,7));uJd(this.A);return;case 8:CWd(this,false);return;case 9:DWd(this,false);return;case 10:!!this.u&&XHd(this.u);return;case 11:!this.q&&(this.q=new A3d(A6,this,11,10));uJd(this.q);return;case 21:!this.s&&(this.s=new A3d(G6,this,21,17));uJd(this.s);return;case 22:!!this.n&&uJd(this.n);return;}Lsd(this,a-yWd((HRd(),mRd)),tWd((b=JD(fud(this,16),29),!b?mRd:b),a))};_.mi=function PWd(){var a,b;kWd(this);oWd(this);lWd(this);nWd(this);pWd(this);qWd(this);mWd(this);QFd(oYd(wWd(this)));if(this.s){for(a=0,b=this.s.i;a=0;--b){SFd(this,b)}}return ZFd(this,a)};_.Ek=function LXd(){uJd(this)};_.Xi=function MXd(a,b){return hXd(this,a,b)};var Gab=zeb(UHe,'EcoreEList',623);mdb(491,623,iIe,NXd);_.Ji=function OXd(){return false};_.Jj=function PXd(){return this.c};_.Kj=function QXd(){return false};_.ml=function RXd(){return true};_.Qi=function SXd(){return true};_.Ui=function TXd(a,b){return b};_.Wi=function UXd(){return false};_.c=0;var qab=zeb(UHe,'EObjectEList',491);mdb(81,491,iIe,VXd);_.Kj=function WXd(){return true};_.kl=function XXd(){return false};_.$k=function YXd(){return true};var kab=zeb(UHe,'EObjectContainmentEList',81);mdb(543,81,iIe,ZXd);_.Li=function $Xd(){this.b=true};_.Oj=function _Xd(){return this.b};_.Ek=function aYd(){var a;uJd(this);if(Vsd(this.e)){a=this.b;this.b=false;zsd(this.e,new O1d(this.e,2,this.c,a,false))}else{this.b=false}};_.b=false;var jab=zeb(UHe,'EObjectContainmentEList/Unsettable',543);mdb(1130,543,iIe,fYd);_.Ri=function jYd(a,b){var c,d;return c=JD(wJd(this,a,b),87),Vsd(this.e)&&cXd(this,new a2d(this.a,7,(HRd(),oRd),zfb(b),(d=c.c,RD(d,88)?JD(d,29):xRd),a)),c};_.Sj=function kYd(a,b){return cYd(this,JD(a,87),b)};_.Tj=function lYd(a,b){return dYd(this,JD(a,87),b)};_.Uj=function mYd(a,b,c){return eYd(this,JD(a,87),JD(b,87),c)};_.Gj=function gYd(a,b,c,d,e){switch(a){case 3:{return bXd(this,a,b,c,d,this.i>1)}case 5:{return bXd(this,a,b,c,d,this.i-JD(c,16).gc()>0)}default:{return new N1d(this.e,a,this.c,b,c,d,true)}}};_.Rj=function hYd(){return true};_.Oj=function iYd(){return bYd(this)};_.Ek=function nYd(){uJd(this)};var $6=zeb(MFe,'EClassImpl/1',1130);mdb(1144,1143,yHe);_.bj=function rYd(a){var b,c,d,e,f,g,h;c=a.ej();if(c!=8){d=qYd(a);if(d==0){switch(c){case 1:case 9:{h=a.ij();if(h!=null){b=wWd(JD(h,471));!b.c&&(b.c=new V7d);fFd(b.c,a.hj())}g=a.gj();if(g!=null){e=JD(g,471);if((e.Bb&1)==0){b=wWd(e);!b.c&&(b.c=new V7d);YEd(b.c,JD(a.hj(),29))}}break}case 3:{g=a.gj();if(g!=null){e=JD(g,471);if((e.Bb&1)==0){b=wWd(e);!b.c&&(b.c=new V7d);YEd(b.c,JD(a.hj(),29))}}break}case 5:{g=a.gj();if(g!=null){for(f=JD(g,18).Jc();f.Ob();){e=JD(f.Pb(),471);if((e.Bb&1)==0){b=wWd(e);!b.c&&(b.c=new V7d);YEd(b.c,JD(a.hj(),29))}}}break}case 4:{h=a.ij();if(h!=null){e=JD(h,471);if((e.Bb&1)==0){b=wWd(e);!b.c&&(b.c=new V7d);fFd(b.c,a.hj())}}break}case 6:{h=a.ij();if(h!=null){for(f=JD(h,18).Jc();f.Ob();){e=JD(f.Pb(),471);if((e.Bb&1)==0){b=wWd(e);!b.c&&(b.c=new V7d);fFd(b.c,a.hj())}}}break}}}this.ol(d)}};_.ol=function sYd(a){pYd(this,a)};_.b=63;var C8=zeb(MFe,'ESuperAdapter',1144);mdb(1145,1144,yHe,uYd);_.ol=function vYd(a){tYd(this,a)};var V6=zeb(MFe,'EClassImpl/10',1145);mdb(1134,699,iIe);_.Ci=function wYd(a,b){return KFd(this,a,b)};_.Di=function xYd(a){return LFd(this,a)};_.Ei=function yYd(a,b){MFd(this,a,b)};_.Fi=function zYd(a){NFd(this,a)};_.Yi=function BYd(a){return PFd(this,a)};_.Vi=function JYd(a,b){return WFd(this,a,b)};_.Uk=function AYd(a,b){throw Icb(new qhb)};_.Gi=function CYd(){return new AKd(this)};_.Hi=function DYd(){return new DKd(this)};_.Ii=function EYd(a){return _Ed(this,a)};_.Vk=function FYd(a,b){throw Icb(new qhb)};_.Dk=function GYd(a){return this};_.Oj=function HYd(){return this.i!=0};_.Wb=function IYd(a){throw Icb(new qhb)};_.Ek=function KYd(){throw Icb(new qhb)};var Fab=zeb(UHe,'EcoreEList/UnmodifiableEList',1134);mdb(333,1134,iIe,LYd);_.Wi=function MYd(){return false};var Eab=zeb(UHe,'EcoreEList/UnmodifiableEList/FastCompare',333);mdb(1137,333,iIe,PYd);_.bd=function QYd(a){var b,c,d;if(RD(a,179)){b=JD(a,179);c=b.Jj();if(c!=-1){for(d=this.i;c4){if(this.dk(a)){if(this.$k()){d=JD(a,52);c=d.Bh();h=c==this.b&&(this.kl()?d.vh(d.Ch(),JD(tWd(bud(this.b),this.Jj()).Fk(),29).ik())==X3d(JD(tWd(bud(this.b),this.Jj()),19)).n:-1-d.Ch()==this.Jj());if(this.ll()&&!h&&!c&&!!d.Gh()){for(e=0;e1||d==-1)}else{return false}};_.kl=function $Zd(){var a,b,c;b=tWd(bud(this.b),this.Jj());if(RD(b,103)){a=JD(b,19);c=X3d(a);return !!c}else{return false}};_.ll=function _Zd(){var a,b;b=tWd(bud(this.b),this.Jj());if(RD(b,103)){a=JD(b,19);return (a.Bb&tve)!=0}else{return false}};_.bd=function a$d(a){var b,c,d,e;d=this.xj(a);if(d>=0)return d;if(this.ml()){for(c=0,e=this.Cj();c=0;--a){LZd(this,a,this.vj(a))}}return this.Dj()};_.Oc=function m$d(a){var b;if(this.ll()){for(b=this.Cj()-1;b>=0;--b){LZd(this,b,this.vj(b))}}return this.Ej(a)};_.Ek=function n$d(){XHd(this)};_.Xi=function o$d(a,b){return NZd(this,a,b)};var X9=zeb(UHe,'DelegatingEcoreEList',744);mdb(1140,744,nIe,u$d);_.oj=function x$d(a,b){p$d(this,a,JD(b,29))};_.pj=function y$d(a){q$d(this,JD(a,29))};_.vj=function E$d(a){var b,c;return b=JD(SFd(rWd(this.a),a),87),c=b.c,RD(c,88)?JD(c,29):(HRd(),xRd)};_.Aj=function J$d(a){var b,c;return b=JD(xJd(rWd(this.a),a),87),c=b.c,RD(c,88)?JD(c,29):(HRd(),xRd)};_.Bj=function K$d(a,b){return s$d(this,a,JD(b,29))};_.Ji=function v$d(){return false};_.Gj=function w$d(a,b,c,d,e){return null};_.qj=function z$d(){return new a_d(this)};_.rj=function A$d(){uJd(rWd(this.a))};_.sj=function B$d(a){return r$d(this,a)};_.tj=function C$d(a){var b,c;for(c=a.Jc();c.Ob();){b=c.Pb();if(!r$d(this,b)){return false}}return true};_.uj=function D$d(a){var b,c,d;if(RD(a,16)){d=JD(a,16);if(d.gc()==rWd(this.a).i){for(b=d.Jc(),c=new fKd(this);b.Ob();){if(XD(b.Pb())!==XD(dKd(c))){return false}}return true}}return false};_.wj=function F$d(){var a,b,c,d,e;c=1;for(b=new fKd(rWd(this.a));b.e!=b.i.gc();){a=JD(dKd(b),87);d=(e=a.c,RD(e,88)?JD(e,29):(HRd(),xRd));c=31*c+(!d?0:ADb(d))}return c};_.xj=function G$d(a){var b,c,d,e;d=0;for(c=new fKd(rWd(this.a));c.e!=c.i.gc();){b=JD(dKd(c),87);if(XD(a)===XD((e=b.c,RD(e,88)?JD(e,29):(HRd(),xRd)))){return d}++d}return -1};_.yj=function H$d(){return rWd(this.a).i==0};_.zj=function I$d(){return null};_.Cj=function L$d(){return rWd(this.a).i};_.Dj=function M$d(){var a,b,c,d,e,f;f=rWd(this.a).i;e=SC(aJ,rte,1,f,5,1);c=0;for(b=new fKd(rWd(this.a));b.e!=b.i.gc();){a=JD(dKd(b),87);e[c++]=(d=a.c,RD(d,88)?JD(d,29):(HRd(),xRd))}return e};_.Ej=function N$d(a){var b,c,d,e,f,g,h;h=rWd(this.a).i;if(a.lengthh&&VC(a,h,null);d=0;for(c=new fKd(rWd(this.a));c.e!=c.i.gc();){b=JD(dKd(c),87);f=(g=b.c,RD(g,88)?JD(g,29):(HRd(),xRd));VC(a,d++,f)}return a};_.Fj=function O$d(){var a,b,c,d,e;e=new Xgb;e.a+='[';a=rWd(this.a);for(b=0,d=rWd(this.a).i;b>16,e>=0?yVd(this,c):this.Cb.Qh(this,-1-e,null,c)));return Gsd(this,a,6,c);case 9:return !this.a&&(this.a=new A3d(t6,this,9,5)),sJd(this.a,a,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),qRd):d),b),69),f.uk().xk(this,dud(this),b-yWd((HRd(),qRd)),a,c)};_.Rh=function B_d(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 6:return Gsd(this,null,6,c);case 7:return !this.A&&(this.A=new gge(H6,this,7)),tJd(this.A,a,c);case 9:return !this.a&&(this.a=new A3d(t6,this,9,5)),tJd(this.a,a,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),qRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),qRd)),a,c)};_.Th=function C_d(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!BVd(this);case 4:return !!w_d(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!vVd(this);case 7:return !!this.A&&this.A.i!=0;case 8:return (this.Bb&256)==0;case 9:return !!this.a&&this.a.i!=0;}return Jsd(this,a-yWd((HRd(),qRd)),tWd((b=JD(fud(this,16),29),!b?qRd:b),a))};_.$h=function D_d(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:JVd(this,OD(b));return;case 2:GVd(this,OD(b));return;case 5:IVd(this,OD(b));return;case 7:!this.A&&(this.A=new gge(H6,this,7));uJd(this.A);!this.A&&(this.A=new gge(H6,this,7));$Ed(this.A,JD(b,18));return;case 8:h_d(this,Odb(LD(b)));return;case 9:!this.a&&(this.a=new A3d(t6,this,9,5));uJd(this.a);!this.a&&(this.a=new A3d(t6,this,9,5));$Ed(this.a,JD(b,18));return;}Ksd(this,a-yWd((HRd(),qRd)),tWd((c=JD(fud(this,16),29),!c?qRd:c),a),b)};_.fi=function E_d(){return HRd(),qRd};_.hi=function F_d(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:RD(this.Cb,184)&&(JD(this.Cb,184).tb=null);Wxd(this,null);return;case 2:wVd(this,null);xVd(this,this.D);return;case 5:IVd(this,null);return;case 7:!this.A&&(this.A=new gge(H6,this,7));uJd(this.A);return;case 8:h_d(this,true);return;case 9:!this.a&&(this.a=new A3d(t6,this,9,5));uJd(this.a);return;}Lsd(this,a-yWd((HRd(),qRd)),tWd((b=JD(fud(this,16),29),!b?qRd:b),a))};_.mi=function G_d(){var a,b;if(this.a){for(a=0,b=this.a.i;a>16==5?JD(this.Cb,675):null;}return Isd(this,a-yWd((HRd(),rRd)),tWd((d=JD(fud(this,16),29),!d?rRd:d),a),b,c)};_.Ph=function S_d(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 5:!!this.Cb&&(c=(e=this.Db>>16,e>=0?K_d(this,c):this.Cb.Qh(this,-1-e,null,c)));return Gsd(this,a,5,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),rRd):d),b),69),f.uk().xk(this,dud(this),b-yWd((HRd(),rRd)),a,c)};_.Rh=function T_d(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 5:return Gsd(this,null,5,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),rRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),rRd)),a,c)};_.Th=function U_d(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return !!this.b;case 4:return this.c!=null;case 5:return !!(this.Db>>16==5?JD(this.Cb,675):null);}return Jsd(this,a-yWd((HRd(),rRd)),tWd((b=JD(fud(this,16),29),!b?rRd:b),a))};_.$h=function V_d(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:Wxd(this,OD(b));return;case 2:O_d(this,JD(b,15).a);return;case 3:M_d(this,JD(b,2001));return;case 4:N_d(this,OD(b));return;}Ksd(this,a-yWd((HRd(),rRd)),tWd((c=JD(fud(this,16),29),!c?rRd:c),a),b)};_.fi=function W_d(){return HRd(),rRd};_.hi=function X_d(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:Wxd(this,null);return;case 2:O_d(this,0);return;case 3:M_d(this,null);return;case 4:N_d(this,null);return;}Lsd(this,a-yWd((HRd(),rRd)),tWd((b=JD(fud(this,16),29),!b?rRd:b),a))};_.Ib=function Z_d(){var a;return a=this.c,a==null?this.zb:a};_.b=null;_.c=null;_.d=0;var n7=zeb(MFe,'EEnumLiteralImpl',568);var p7=Beb(MFe,'EFactoryImpl/InternalEDateTimeFormat');mdb(485,1,{2076:1},a0d);var o7=zeb(MFe,'EFactoryImpl/1ClientInternalEDateTimeFormat',485);mdb(248,118,{109:1,94:1,93:1,87:1,57:1,114:1,52:1,100:1,248:1,117:1,118:1},q0d);_.zh=function r0d(a,b,c){var d;c=Gsd(this,a,b,c);if(!!this.e&&RD(a,179)){d=i0d(this,this.e);d!=this.c&&(c=m0d(this,d,c))}return c};_.Ih=function s0d(a,b,c){var d;switch(a){case 0:return this.f;case 1:return !this.d&&(this.d=new VXd(w6,this,1)),this.d;case 2:if(b)return g0d(this);return this.c;case 3:return this.b;case 4:return this.e;case 5:if(b)return f0d(this);return this.a;}return Isd(this,a-yWd((HRd(),tRd)),tWd((d=JD(fud(this,16),29),!d?tRd:d),a),b,c)};_.Rh=function t0d(a,b,c){var d,e;switch(b){case 0:return e0d(this,null,c);case 1:return !this.d&&(this.d=new VXd(w6,this,1)),tJd(this.d,a,c);case 3:return c0d(this,null,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),tRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),tRd)),a,c)};_.Th=function u0d(a){var b;switch(a){case 0:return !!this.f;case 1:return !!this.d&&this.d.i!=0;case 2:return !!this.c;case 3:return !!this.b;case 4:return !!this.e;case 5:return !!this.a;}return Jsd(this,a-yWd((HRd(),tRd)),tWd((b=JD(fud(this,16),29),!b?tRd:b),a))};_.$h=function v0d(a,b){var c;switch(a){case 0:o0d(this,JD(b,87));return;case 1:!this.d&&(this.d=new VXd(w6,this,1));uJd(this.d);!this.d&&(this.d=new VXd(w6,this,1));$Ed(this.d,JD(b,18));return;case 3:l0d(this,JD(b,87));return;case 4:n0d(this,JD(b,834));return;case 5:j0d(this,JD(b,143));return;}Ksd(this,a-yWd((HRd(),tRd)),tWd((c=JD(fud(this,16),29),!c?tRd:c),a),b)};_.fi=function w0d(){return HRd(),tRd};_.hi=function x0d(a){var b;switch(a){case 0:o0d(this,null);return;case 1:!this.d&&(this.d=new VXd(w6,this,1));uJd(this.d);return;case 3:l0d(this,null);return;case 4:n0d(this,null);return;case 5:j0d(this,null);return;}Lsd(this,a-yWd((HRd(),tRd)),tWd((b=JD(fud(this,16),29),!b?tRd:b),a))};_.Ib=function y0d(){var a;a=new khb(jtd(this));a.a+=' (expression: ';p0d(this,a);a.a+=')';return a.a};var b0d;var r7=zeb(MFe,'EGenericTypeImpl',248);mdb(2029,2024,oIe);_.Ei=function A0d(a,b){z0d(this,a,b)};_.Uk=function B0d(a,b){z0d(this,this.gc(),a);return b};_.Yi=function C0d(a){return au(this.nj(),a)};_.Gi=function D0d(){return this.Hi()};_.nj=function E0d(){return new kce(this)};_.Hi=function F0d(){return this.Ii(0)};_.Ii=function G0d(a){return this.nj().dd(a)};_.Vk=function H0d(a,b){ye(this,a,true);return b};_.Ri=function I0d(a,b){var c,d;d=bu(this,b);c=this.dd(a);c.Rb(d);return d};_.Si=function J0d(a,b){var c;ye(this,b,true);c=this.dd(a);c.Rb(b)};var O9=zeb(UHe,'AbstractSequentialInternalEList',2029);mdb(482,2029,oIe,O0d);_.Yi=function P0d(a){return au(this.nj(),a)};_.Gi=function Q0d(){if(this.b==null){return h1d(),h1d(),g1d}return this.ql()};_.nj=function R0d(){return new Ufe(this.a,this.b)};_.Hi=function S0d(){if(this.b==null){return h1d(),h1d(),g1d}return this.ql()};_.Ii=function T0d(a){var b,c;if(this.b==null){if(a<0||a>1){throw Icb(new Cdb(BHe+a+', size=0'))}return h1d(),h1d(),g1d}c=this.ql();for(b=0;b0){b=this.c[--this.d];if((!this.e||b.nk()!=J3||b.Jj()!=0)&&(!this.tl()||this.b.Uh(b))){f=this.b.Kh(b,this.sl());this.f=(lie(),JD(b,69).vk());if(this.f||b.Hk()){if(this.sl()){d=JD(f,16);this.k=d}else{d=JD(f,72);this.k=this.j=d}if(RD(this.k,59)){this.o=this.k.gc();this.n=this.o}else{this.p=!this.j?this.k.dd(this.k.gc()):this.j.Ii(this.k.gc())}if(!this.p?l1d(this):m1d(this,this.p)){e=!this.p?!this.j?this.k.Xb(--this.n):this.j.Yi(--this.n):this.p.Ub();if(this.f){a=JD(e,75);a.Jk();c=a.kd();this.i=c}else{c=e;this.i=c}this.g=-3;return true}}else if(f!=null){this.k=null;this.p=null;c=f;this.i=c;this.g=-2;return true}}}this.k=null;this.p=null;this.g=-1;return false}else{e=!this.p?!this.j?this.k.Xb(--this.n):this.j.Yi(--this.n):this.p.Ub();if(this.f){a=JD(e,75);a.Jk();c=a.kd();this.i=c}else{c=e;this.i=c}this.g=-3;return true}}}};_.Pb=function t1d(){return i1d(this)};_.Tb=function u1d(){return this.a};_.Ub=function v1d(){var a;if(this.g<-1||this.Sb()){--this.a;this.g=0;a=this.i;this.Sb();return a}else{throw Icb(new Hub)}};_.Vb=function w1d(){return this.a-1};_.Qb=function x1d(){throw Icb(new qhb)};_.sl=function y1d(){return false};_.Wb=function z1d(a){throw Icb(new qhb)};_.tl=function A1d(){return true};_.a=0;_.d=0;_.f=false;_.g=0;_.n=0;_.o=0;var g1d;var aab=zeb(UHe,'EContentsEList/FeatureIteratorImpl',287);mdb(700,287,pIe,B1d);_.sl=function C1d(){return true};var bab=zeb(UHe,'EContentsEList/ResolvingFeatureIteratorImpl',700);mdb(1147,700,pIe,D1d);_.tl=function E1d(){return false};var t7=zeb(MFe,'ENamedElementImpl/1/1',1147);mdb(1148,287,pIe,F1d);_.tl=function G1d(){return false};var u7=zeb(MFe,'ENamedElementImpl/1/2',1148);mdb(39,151,AHe,J1d,K1d,L1d,M1d,N1d,O1d,P1d,Q1d,R1d,S1d,T1d,U1d,V1d,W1d,X1d,Y1d,Z1d,$1d,_1d,a2d,b2d,c2d,d2d,e2d,f2d);_.Ij=function g2d(){return I1d(this)};_.Pj=function h2d(){var a;a=I1d(this);if(a){return a.gk()}return null};_.fj=function i2d(a){this.b==-1&&!!this.a&&(this.b=this.c.Eh(this.a.Jj(),this.a.nk()));return this.c.vh(this.b,a)};_.hj=function j2d(){return this.c};_.Qj=function k2d(){var a;a=I1d(this);if(a){return a.rk()}return false};_.b=-1;var x7=zeb(MFe,'ENotificationImpl',39);mdb(403,293,{109:1,94:1,93:1,158:1,197:1,57:1,62:1,114:1,470:1,52:1,100:1,161:1,403:1,293:1,117:1,118:1},o2d);_.xh=function p2d(a){return l2d(this,a)};_.Ih=function q2d(a,b,c){var d,e,f;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Ndb(),(this.Bb&256)!=0?true:false;case 3:return Ndb(),(this.Bb&512)!=0?true:false;case 4:return zfb(this.s);case 5:return zfb(this.t);case 6:return Ndb(),f=this.t,f>1||f==-1?true:false;case 7:return Ndb(),e=this.s,e>=1?true:false;case 8:if(b)return UTd(this);return this.r;case 9:return this.q;case 10:return this.Db>>16==10?JD(this.Cb,29):null;case 11:return !this.d&&(this.d=new gge(H6,this,11)),this.d;case 12:return !this.c&&(this.c=new A3d(C6,this,12,10)),this.c;case 13:return !this.a&&(this.a=new D2d(this,this)),this.a;case 14:return m2d(this);}return Isd(this,a-yWd((HRd(),yRd)),tWd((d=JD(fud(this,16),29),!d?yRd:d),a),b,c)};_.Ph=function r2d(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 10:!!this.Cb&&(c=(e=this.Db>>16,e>=0?l2d(this,c):this.Cb.Qh(this,-1-e,null,c)));return Gsd(this,a,10,c);case 12:return !this.c&&(this.c=new A3d(C6,this,12,10)),sJd(this.c,a,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),yRd):d),b),69),f.uk().xk(this,dud(this),b-yWd((HRd(),yRd)),a,c)};_.Rh=function s2d(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 9:return TTd(this,c);case 10:return Gsd(this,null,10,c);case 11:return !this.d&&(this.d=new gge(H6,this,11)),tJd(this.d,a,c);case 12:return !this.c&&(this.c=new A3d(C6,this,12,10)),tJd(this.c,a,c);case 14:return tJd(m2d(this),a,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),yRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),yRd)),a,c)};_.Th=function t2d(a){var b,c,d;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return d=this.t,d>1||d==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&h0d(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&h0d(this.q).i==0);case 10:return !!(this.Db>>16==10?JD(this.Cb,29):null);case 11:return !!this.d&&this.d.i!=0;case 12:return !!this.c&&this.c.i!=0;case 13:return !!this.a&&m2d(this.a.a).i!=0&&!(!!this.b&&m3d(this.b));case 14:return !!this.b&&m3d(this.b);}return Jsd(this,a-yWd((HRd(),yRd)),tWd((b=JD(fud(this,16),29),!b?yRd:b),a))};_.$h=function u2d(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:Wxd(this,OD(b));return;case 2:ZTd(this,Odb(LD(b)));return;case 3:$Td(this,Odb(LD(b)));return;case 4:YTd(this,JD(b,15).a);return;case 5:_Td(this,JD(b,15).a);return;case 8:WTd(this,JD(b,143));return;case 9:d=VTd(this,JD(b,87),null);!!d&&d.mj();return;case 11:!this.d&&(this.d=new gge(H6,this,11));uJd(this.d);!this.d&&(this.d=new gge(H6,this,11));$Ed(this.d,JD(b,18));return;case 12:!this.c&&(this.c=new A3d(C6,this,12,10));uJd(this.c);!this.c&&(this.c=new A3d(C6,this,12,10));$Ed(this.c,JD(b,18));return;case 13:!this.a&&(this.a=new D2d(this,this));XHd(this.a);!this.a&&(this.a=new D2d(this,this));$Ed(this.a,JD(b,18));return;case 14:uJd(m2d(this));$Ed(m2d(this),JD(b,18));return;}Ksd(this,a-yWd((HRd(),yRd)),tWd((c=JD(fud(this,16),29),!c?yRd:c),a),b)};_.fi=function v2d(){return HRd(),yRd};_.hi=function w2d(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:Wxd(this,null);return;case 2:ZTd(this,true);return;case 3:$Td(this,true);return;case 4:YTd(this,0);return;case 5:_Td(this,1);return;case 8:WTd(this,null);return;case 9:c=VTd(this,null,null);!!c&&c.mj();return;case 11:!this.d&&(this.d=new gge(H6,this,11));uJd(this.d);return;case 12:!this.c&&(this.c=new A3d(C6,this,12,10));uJd(this.c);return;case 13:!!this.a&&XHd(this.a);return;case 14:!!this.b&&uJd(this.b);return;}Lsd(this,a-yWd((HRd(),yRd)),tWd((b=JD(fud(this,16),29),!b?yRd:b),a))};_.mi=function x2d(){var a,b;if(this.c){for(a=0,b=this.c.i;ah&&VC(a,h,null);d=0;for(c=new fKd(m2d(this.a));c.e!=c.i.gc();){b=JD(dKd(c),87);f=(g=b.c,g?g:(HRd(),uRd));VC(a,d++,f)}return a};_.Fj=function X2d(){var a,b,c,d,e;e=new Xgb;e.a+='[';a=m2d(this.a);for(b=0,d=m2d(this.a).i;b1)}case 5:{return bXd(this,a,b,c,d,this.i-JD(c,16).gc()>0)}default:{return new N1d(this.e,a,this.c,b,c,d,true)}}};_.Rj=function s3d(){return true};_.Oj=function t3d(){return m3d(this)};_.Ek=function y3d(){uJd(this)};var B7=zeb(MFe,'EOperationImpl/2',1331);mdb(493,1,{1999:1,493:1},z3d);var D7=zeb(MFe,'EPackageImpl/1',493);mdb(14,81,iIe,A3d);_.gl=function B3d(){return this.d};_.hl=function C3d(){return this.b};_.kl=function D3d(){return true};_.b=0;var oab=zeb(UHe,'EObjectContainmentWithInverseEList',14);mdb(361,14,iIe,E3d);_.ll=function F3d(){return true};_.Ui=function G3d(a,b){return eXd(this,a,JD(b,57))};var lab=zeb(UHe,'EObjectContainmentWithInverseEList/Resolving',361);mdb(312,361,iIe,H3d);_.Li=function I3d(){this.a.tb=null};var E7=zeb(MFe,'EPackageImpl/2',312);mdb(1243,1,{},J3d);var F7=zeb(MFe,'EPackageImpl/3',1243);mdb(721,44,Hve,M3d);_._b=function N3d(a){return VD(a)?djb(this,a):!!vsb(this.f,a)};var H7=zeb(MFe,'EPackageRegistryImpl',721);mdb(503,293,{109:1,94:1,93:1,158:1,197:1,57:1,2078:1,114:1,470:1,52:1,100:1,161:1,503:1,293:1,117:1,118:1},P3d);_.xh=function Q3d(a){return O3d(this,a)};_.Ih=function R3d(a,b,c){var d,e,f;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Ndb(),(this.Bb&256)!=0?true:false;case 3:return Ndb(),(this.Bb&512)!=0?true:false;case 4:return zfb(this.s);case 5:return zfb(this.t);case 6:return Ndb(),f=this.t,f>1||f==-1?true:false;case 7:return Ndb(),e=this.s,e>=1?true:false;case 8:if(b)return UTd(this);return this.r;case 9:return this.q;case 10:return this.Db>>16==10?JD(this.Cb,62):null;}return Isd(this,a-yWd((HRd(),BRd)),tWd((d=JD(fud(this,16),29),!d?BRd:d),a),b,c)};_.Ph=function S3d(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),sJd(this.Ab,a,c);case 10:!!this.Cb&&(c=(e=this.Db>>16,e>=0?O3d(this,c):this.Cb.Qh(this,-1-e,null,c)));return Gsd(this,a,10,c);}return f=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),BRd):d),b),69),f.uk().xk(this,dud(this),b-yWd((HRd(),BRd)),a,c)};_.Rh=function T3d(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 9:return TTd(this,c);case 10:return Gsd(this,null,10,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),BRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),BRd)),a,c)};_.Th=function U3d(a){var b,c,d;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return d=this.t,d>1||d==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&h0d(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&h0d(this.q).i==0);case 10:return !!(this.Db>>16==10?JD(this.Cb,62):null);}return Jsd(this,a-yWd((HRd(),BRd)),tWd((b=JD(fud(this,16),29),!b?BRd:b),a))};_.fi=function V3d(){return HRd(),BRd};var I7=zeb(MFe,'EParameterImpl',503);mdb(103,451,{109:1,94:1,93:1,158:1,197:1,57:1,19:1,179:1,69:1,114:1,470:1,52:1,100:1,161:1,103:1,451:1,293:1,117:1,118:1,682:1},b4d);_.Ih=function c4d(a,b,c){var d,e,f,g;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Ndb(),(this.Bb&256)!=0?true:false;case 3:return Ndb(),(this.Bb&512)!=0?true:false;case 4:return zfb(this.s);case 5:return zfb(this.t);case 6:return Ndb(),g=this.t,g>1||g==-1?true:false;case 7:return Ndb(),e=this.s,e>=1?true:false;case 8:if(b)return UTd(this);return this.r;case 9:return this.q;case 10:return Ndb(),(this.Bb&GHe)!=0?true:false;case 11:return Ndb(),(this.Bb&Mte)!=0?true:false;case 12:return Ndb(),(this.Bb&qve)!=0?true:false;case 13:return this.j;case 14:return rUd(this);case 15:return Ndb(),(this.Bb&YHe)!=0?true:false;case 16:return Ndb(),(this.Bb&Pte)!=0?true:false;case 17:return sUd(this);case 18:return Ndb(),(this.Bb&KFe)!=0?true:false;case 19:return Ndb(),f=X3d(this),!!f&&(f.Bb&KFe)!=0?true:false;case 20:return Ndb(),(this.Bb&tve)!=0?true:false;case 21:if(b)return X3d(this);return this.b;case 22:if(b)return Y3d(this);return W3d(this);case 23:return !this.a&&(this.a=new xge(o6,this,23)),this.a;}return Isd(this,a-yWd((HRd(),CRd)),tWd((d=JD(fud(this,16),29),!d?CRd:d),a),b,c)};_.Th=function d4d(a){var b,c,d,e;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return e=this.t,e>1||e==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&h0d(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&h0d(this.q).i==0);case 10:return (this.Bb&GHe)==0;case 11:return (this.Bb&Mte)!=0;case 12:return (this.Bb&qve)!=0;case 13:return this.j!=null;case 14:return rUd(this)!=null;case 15:return (this.Bb&YHe)!=0;case 16:return (this.Bb&Pte)!=0;case 17:return !!sUd(this);case 18:return (this.Bb&KFe)!=0;case 19:return d=X3d(this),!!d&&(d.Bb&KFe)!=0;case 20:return (this.Bb&tve)==0;case 21:return !!this.b;case 22:return !!W3d(this);case 23:return !!this.a&&this.a.i!=0;}return Jsd(this,a-yWd((HRd(),CRd)),tWd((b=JD(fud(this,16),29),!b?CRd:b),a))};_.$h=function e4d(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:AUd(this,OD(b));return;case 2:ZTd(this,Odb(LD(b)));return;case 3:$Td(this,Odb(LD(b)));return;case 4:YTd(this,JD(b,15).a);return;case 5:_Td(this,JD(b,15).a);return;case 8:WTd(this,JD(b,143));return;case 9:d=VTd(this,JD(b,87),null);!!d&&d.mj();return;case 10:vUd(this,Odb(LD(b)));return;case 11:DUd(this,Odb(LD(b)));return;case 12:BUd(this,Odb(LD(b)));return;case 13:wUd(this,OD(b));return;case 15:CUd(this,Odb(LD(b)));return;case 16:yUd(this,Odb(LD(b)));return;case 18:Z3d(this,Odb(LD(b)));return;case 20:a4d(this,Odb(LD(b)));return;case 21:_3d(this,JD(b,19));return;case 23:!this.a&&(this.a=new xge(o6,this,23));uJd(this.a);!this.a&&(this.a=new xge(o6,this,23));$Ed(this.a,JD(b,18));return;}Ksd(this,a-yWd((HRd(),CRd)),tWd((c=JD(fud(this,16),29),!c?CRd:c),a),b)};_.fi=function f4d(){return HRd(),CRd};_.hi=function g4d(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:RD(this.Cb,88)&&tYd(wWd(JD(this.Cb,88)),4);Wxd(this,null);return;case 2:ZTd(this,true);return;case 3:$Td(this,true);return;case 4:YTd(this,0);return;case 5:_Td(this,1);return;case 8:WTd(this,null);return;case 9:c=VTd(this,null,null);!!c&&c.mj();return;case 10:vUd(this,true);return;case 11:DUd(this,false);return;case 12:BUd(this,false);return;case 13:this.i=null;xUd(this,null);return;case 15:CUd(this,false);return;case 16:yUd(this,false);return;case 18:$3d(this,false);RD(this.Cb,88)&&tYd(wWd(JD(this.Cb,88)),2);return;case 20:a4d(this,true);return;case 21:_3d(this,null);return;case 23:!this.a&&(this.a=new xge(o6,this,23));uJd(this.a);return;}Lsd(this,a-yWd((HRd(),CRd)),tWd((b=JD(fud(this,16),29),!b?CRd:b),a))};_.mi=function h4d(){Y3d(this);yde(Oce((jie(),hie),this));UTd(this);this.Bb|=1};_.sk=function i4d(){return X3d(this)};_.Zk=function j4d(){var a;return a=X3d(this),!!a&&(a.Bb&KFe)!=0};_.$k=function k4d(){return (this.Bb&KFe)!=0};_._k=function l4d(){return (this.Bb&tve)!=0};_.Wk=function m4d(a,b){this.c=null;return XTd(this,a,b)};_.Ib=function n4d(){var a;if((this.Db&64)!=0)return EUd(this);a=new Zgb(EUd(this));a.a+=' (containment: ';Vgb(a,(this.Bb&KFe)!=0);a.a+=', resolveProxies: ';Vgb(a,(this.Bb&tve)!=0);a.a+=')';return a.a};var J7=zeb(MFe,'EReferenceImpl',103);mdb(549,118,{109:1,45:1,94:1,93:1,136:1,57:1,114:1,52:1,100:1,549:1,117:1,118:1},t4d);_.Fb=function z4d(a){return this===a};_.jd=function B4d(){return this.b};_.kd=function C4d(){return this.c};_.Hb=function D4d(){return ADb(this)};_.Ai=function F4d(a){o4d(this,OD(a))};_.ld=function G4d(a){return s4d(this,OD(a))};_.Ih=function u4d(a,b,c){var d;switch(a){case 0:return this.b;case 1:return this.c;}return Isd(this,a-yWd((HRd(),DRd)),tWd((d=JD(fud(this,16),29),!d?DRd:d),a),b,c)};_.Th=function v4d(a){var b;switch(a){case 0:return this.b!=null;case 1:return this.c!=null;}return Jsd(this,a-yWd((HRd(),DRd)),tWd((b=JD(fud(this,16),29),!b?DRd:b),a))};_.$h=function w4d(a,b){var c;switch(a){case 0:p4d(this,OD(b));return;case 1:r4d(this,OD(b));return;}Ksd(this,a-yWd((HRd(),DRd)),tWd((c=JD(fud(this,16),29),!c?DRd:c),a),b)};_.fi=function x4d(){return HRd(),DRd};_.hi=function y4d(a){var b;switch(a){case 0:q4d(this,null);return;case 1:r4d(this,null);return;}Lsd(this,a-yWd((HRd(),DRd)),tWd((b=JD(fud(this,16),29),!b?DRd:b),a))};_.yi=function A4d(){var a;if(this.a==-1){a=this.b;this.a=a==null?0:vgb(a)}return this.a};_.zi=function E4d(a){this.a=a};_.Ib=function H4d(){var a;if((this.Db&64)!=0)return jtd(this);a=new Zgb(jtd(this));a.a+=' (key: ';Ugb(a,this.b);a.a+=', value: ';Ugb(a,this.c);a.a+=')';return a.a};_.a=-1;_.b=null;_.c=null;var K7=zeb(MFe,'EStringToStringMapEntryImpl',549);var Qab=Beb(UHe,'FeatureMap/Entry/Internal');mdb(562,1,qIe);_.vl=function K4d(a){return this.wl(JD(a,52))};_.wl=function L4d(a){return this.vl(a)};_.Fb=function M4d(a){var b,c;if(this===a){return true}else if(RD(a,75)){b=JD(a,75);if(b.Jk()==this.c){c=this.kd();return c==null?b.kd()==null:pb(c,b.kd())}else{return false}}else{return false}};_.Jk=function N4d(){return this.c};_.Hb=function O4d(){var a;a=this.kd();return tb(this.c)^(a==null?0:tb(a))};_.Ib=function P4d(){var a,b;a=this.c;b=zVd(a.ok()).vi();a.ve();return (b!=null&&b.length!=0?b+':'+a.ve():a.ve())+'='+this.kd()};var L7=zeb(MFe,'EStructuralFeatureImpl/BasicFeatureMapEntry',562);mdb(777,562,qIe,S4d);_.wl=function T4d(a){return new S4d(this.c,a)};_.kd=function U4d(){return this.a};_.xl=function V4d(a,b,c){return Q4d(this,a,this.a,b,c)};_.yl=function W4d(a,b,c){return R4d(this,a,this.a,b,c)};var M7=zeb(MFe,'EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry',777);mdb(1304,1,{},X4d);_.wk=function Y4d(a,b,c,d,e){var f;f=JD(Nsd(a,this.b),219);return f.Wl(this.a).Dk(d)};_.xk=function Z4d(a,b,c,d,e){var f;f=JD(Nsd(a,this.b),219);return f.Nl(this.a,d,e)};_.yk=function $4d(a,b,c,d,e){var f;f=JD(Nsd(a,this.b),219);return f.Ol(this.a,d,e)};_.zk=function _4d(a,b,c){var d;d=JD(Nsd(a,this.b),219);return d.Wl(this.a).Oj()};_.Ak=function a5d(a,b,c,d){var e;e=JD(Nsd(a,this.b),219);e.Wl(this.a).Wb(d)};_.Bk=function b5d(a,b,c){return JD(Nsd(a,this.b),219).Wl(this.a)};_.Ck=function c5d(a,b,c){var d;d=JD(Nsd(a,this.b),219);d.Wl(this.a).Ek()};var N7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator',1304);mdb(89,1,{},e5d,f5d,g5d,h5d);_.wk=function i5d(a,b,c,d,e){var f;f=b.ii(c);f==null&&b.ji(c,f=d5d(this,a));if(!e){switch(this.e){case 50:case 41:return JD(f,586)._j();case 40:return JD(f,219).Tl();}}return f};_.xk=function j5d(a,b,c,d,e){var f,g;g=b.ii(c);g==null&&b.ji(c,g=d5d(this,a));f=JD(g,72).Uk(d,e);return f};_.yk=function k5d(a,b,c,d,e){var f;f=b.ii(c);f!=null&&(e=JD(f,72).Vk(d,e));return e};_.zk=function l5d(a,b,c){var d;d=b.ii(c);return d!=null&&JD(d,77).Oj()};_.Ak=function m5d(a,b,c,d){var e;e=JD(b.ii(c),77);!e&&b.ji(c,e=d5d(this,a));e.Wb(d)};_.Bk=function n5d(a,b,c){var d,e;e=b.ii(c);e==null&&b.ji(c,e=d5d(this,a));if(RD(e,77)){return JD(e,77)}else{d=JD(b.ii(c),16);return new G7d(d)}};_.Ck=function o5d(a,b,c){var d;d=JD(b.ii(c),77);!d&&b.ji(c,d=d5d(this,a));d.Ek()};_.b=0;_.e=0;var O7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateMany',89);mdb(498,1,{});_.xk=function s5d(a,b,c,d,e){throw Icb(new qhb)};_.yk=function t5d(a,b,c,d,e){throw Icb(new qhb)};_.Bk=function u5d(a,b,c){return new v5d(this,a,b,c)};var p5d;var v8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingle',498);mdb(1321,1,VHe,v5d);_.Dk=function w5d(a){return this.a.wk(this.c,this.d,this.b,a,true)};_.Oj=function x5d(){return this.a.zk(this.c,this.d,this.b)};_.Wb=function y5d(a){this.a.Ak(this.c,this.d,this.b,a)};_.Ek=function z5d(){this.a.Ck(this.c,this.d,this.b)};_.b=0;var P7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingle/1',1321);mdb(770,498,{},A5d);_.wk=function B5d(a,b,c,d,e){return std(a,a.Mh(),a.Ch())==this.b?this._k()&&d?Hsd(a):a.Mh():null};_.xk=function C5d(a,b,c,d,e){var f,g;!!a.Mh()&&(e=(f=a.Ch(),f>=0?a.xh(e):a.Mh().Qh(a,-1-f,null,e)));g=zWd(a.Ah(),this.e);return a.zh(d,g,e)};_.yk=function D5d(a,b,c,d,e){var f;f=zWd(a.Ah(),this.e);return a.zh(null,f,e)};_.zk=function E5d(a,b,c){var d;d=zWd(a.Ah(),this.e);return !!a.Mh()&&a.Ch()==d};_.Ak=function F5d(a,b,c,d){var e,f,g,h,i;if(d!=null&&!DVd(this.a,d)){throw Icb(new Peb(rIe+(RD(d,57)?EWd(JD(d,57).Ah()):veb(rb(d)))+sIe+this.a+"'"))}e=a.Mh();g=zWd(a.Ah(),this.e);if(XD(d)!==XD(e)||a.Ch()!=g&&d!=null){if(Mhe(a,JD(d,57)))throw Icb(new hfb(OFe+a.Ib()));i=null;!!e&&(i=(f=a.Ch(),f>=0?a.xh(i):a.Mh().Qh(a,-1-f,null,i)));h=JD(d,52);!!h&&(i=h.Oh(a,zWd(h.Ah(),this.b),null,i));i=a.zh(h,g,i);!!i&&i.mj()}else{a.sh()&&a.th()&&zsd(a,new L1d(a,1,g,d,d))}};_.Ck=function G5d(a,b,c){var d,e,f,g;d=a.Mh();if(d){g=(e=a.Ch(),e>=0?a.xh(null):a.Mh().Qh(a,-1-e,null,null));f=zWd(a.Ah(),this.e);g=a.zh(null,f,g);!!g&&g.mj()}else{a.sh()&&a.th()&&zsd(a,new _1d(a,1,this.e,null,null))}};_._k=function H5d(){return false};var R7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleContainer',770);mdb(1305,770,{},I5d);_._k=function J5d(){return true};var Q7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving',1305);mdb(560,498,{});_.wk=function M5d(a,b,c,d,e){var f;return f=b.ii(c),f==null?this.b:XD(f)===XD(p5d)?null:f};_.zk=function N5d(a,b,c){var d;d=b.ii(c);return d!=null&&(XD(d)===XD(p5d)||!pb(d,this.b))};_.Ak=function O5d(a,b,c,d){var e,f;if(a.sh()&&a.th()){e=(f=b.ii(c),f==null?this.b:XD(f)===XD(p5d)?null:f);if(d==null){if(this.c!=null){b.ji(c,null);d=this.b}else this.b!=null?b.ji(c,p5d):b.ji(c,null)}else{this.zl(d);b.ji(c,d)}zsd(a,this.d.Al(a,1,this.e,e,d))}else{if(d==null){this.c!=null?b.ji(c,null):this.b!=null?b.ji(c,p5d):b.ji(c,null)}else{this.zl(d);b.ji(c,d)}}};_.Ck=function P5d(a,b,c){var d,e;if(a.sh()&&a.th()){d=(e=b.ii(c),e==null?this.b:XD(e)===XD(p5d)?null:e);b.ki(c);zsd(a,this.d.Al(a,1,this.e,d,this.b))}else{b.ki(c)}};_.zl=function Q5d(a){throw Icb(new Oeb)};var e8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData',560);mdb(tIe,1,{},_5d);_.Al=function a6d(a,b,c,d,e){return new _1d(a,b,c,d,e)};_.Bl=function b6d(a,b,c,d,e,f){return new b2d(a,b,c,d,e,f)};var R5d,S5d,T5d,U5d,V5d,W5d,X5d,Y5d,Z5d;var $7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator',tIe);mdb(1322,tIe,{},c6d);_.Al=function d6d(a,b,c,d,e){return new e2d(a,b,c,Odb(LD(d)),Odb(LD(e)))};_.Bl=function e6d(a,b,c,d,e,f){return new f2d(a,b,c,Odb(LD(d)),Odb(LD(e)),f)};var S7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1',1322);mdb(1323,tIe,{},f6d);_.Al=function g6d(a,b,c,d,e){return new P1d(a,b,c,JD(d,221).a,JD(e,221).a)};_.Bl=function h6d(a,b,c,d,e,f){return new Q1d(a,b,c,JD(d,221).a,JD(e,221).a,f)};var T7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2',1323);mdb(1324,tIe,{},i6d);_.Al=function j6d(a,b,c,d,e){return new R1d(a,b,c,JD(d,180).a,JD(e,180).a)};_.Bl=function k6d(a,b,c,d,e,f){return new S1d(a,b,c,JD(d,180).a,JD(e,180).a,f)};var U7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3',1324);mdb(1325,tIe,{},l6d);_.Al=function m6d(a,b,c,d,e){return new T1d(a,b,c,Reb(MD(d)),Reb(MD(e)))};_.Bl=function n6d(a,b,c,d,e,f){return new U1d(a,b,c,Reb(MD(d)),Reb(MD(e)),f)};var V7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4',1325);mdb(1326,tIe,{},o6d);_.Al=function p6d(a,b,c,d,e){return new V1d(a,b,c,JD(d,164).a,JD(e,164).a)};_.Bl=function q6d(a,b,c,d,e,f){return new W1d(a,b,c,JD(d,164).a,JD(e,164).a,f)};var W7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5',1326);mdb(1327,tIe,{},r6d);_.Al=function s6d(a,b,c,d,e){return new X1d(a,b,c,JD(d,15).a,JD(e,15).a)};_.Bl=function t6d(a,b,c,d,e,f){return new Y1d(a,b,c,JD(d,15).a,JD(e,15).a,f)};var X7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6',1327);mdb(1328,tIe,{},u6d);_.Al=function v6d(a,b,c,d,e){return new Z1d(a,b,c,JD(d,190).a,JD(e,190).a)};_.Bl=function w6d(a,b,c,d,e,f){return new $1d(a,b,c,JD(d,190).a,JD(e,190).a,f)};var Y7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7',1328);mdb(1329,tIe,{},x6d);_.Al=function y6d(a,b,c,d,e){return new c2d(a,b,c,JD(d,191).a,JD(e,191).a)};_.Bl=function z6d(a,b,c,d,e,f){return new d2d(a,b,c,JD(d,191).a,JD(e,191).a,f)};var Z7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8',1329);mdb(1307,560,{},A6d);_.zl=function B6d(a){if(!this.a.dk(a)){throw Icb(new Peb(rIe+rb(a)+sIe+this.a+"'"))}};var _7=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic',1307);mdb(1308,560,{},C6d);_.zl=function D6d(a){};var a8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic',1308);mdb(771,560,{});_.zk=function E6d(a,b,c){var d;d=b.ii(c);return d!=null};_.Ak=function F6d(a,b,c,d){var e,f;if(a.sh()&&a.th()){e=true;f=b.ii(c);if(f==null){e=false;f=this.b}else XD(f)===XD(p5d)&&(f=null);if(d==null){if(this.c!=null){b.ji(c,null);d=this.b}else{b.ji(c,p5d)}}else{this.zl(d);b.ji(c,d)}zsd(a,this.d.Bl(a,1,this.e,f,d,!e))}else{if(d==null){this.c!=null?b.ji(c,null):b.ji(c,p5d)}else{this.zl(d);b.ji(c,d)}}};_.Ck=function G6d(a,b,c){var d,e;if(a.sh()&&a.th()){d=true;e=b.ii(c);if(e==null){d=false;e=this.b}else XD(e)===XD(p5d)&&(e=null);b.ki(c);zsd(a,this.d.Bl(a,2,this.e,e,this.b,d))}else{b.ki(c)}};var d8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable',771);mdb(1309,771,{},H6d);_.zl=function I6d(a){if(!this.a.dk(a)){throw Icb(new Peb(rIe+rb(a)+sIe+this.a+"'"))}};var b8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic',1309);mdb(1310,771,{},J6d);_.zl=function K6d(a){};var c8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic',1310);mdb(402,498,{},L6d);_.wk=function N6d(a,b,c,d,e){var f,g,h,i,j;j=b.ii(c);if(this.rk()&&XD(j)===XD(p5d)){return null}else if(this._k()&&d&&j!=null){h=JD(j,52);if(h.Sh()){i=ctd(a,h);if(h!=i){if(!DVd(this.a,i)){throw Icb(new Peb(rIe+rb(i)+sIe+this.a+"'"))}b.ji(c,j=i);if(this.$k()){f=JD(i,52);g=h.Qh(a,!this.b?-1-zWd(a.Ah(),this.e):zWd(h.Ah(),this.b),null,null);!f.Mh()&&(g=f.Oh(a,!this.b?-1-zWd(a.Ah(),this.e):zWd(f.Ah(),this.b),null,g));!!g&&g.mj()}a.sh()&&a.th()&&zsd(a,new _1d(a,9,this.e,h,i))}}return j}else{return j}};_.xk=function O6d(a,b,c,d,e){var f,g;g=b.ii(c);XD(g)===XD(p5d)&&(g=null);b.ji(c,d);if(this.Kj()){if(XD(g)!==XD(d)&&g!=null){f=JD(g,52);e=f.Qh(a,zWd(f.Ah(),this.b),null,e)}}else this.$k()&&g!=null&&(e=JD(g,52).Qh(a,-1-zWd(a.Ah(),this.e),null,e));if(a.sh()&&a.th()){!e&&(e=new iJd(4));e.lj(new _1d(a,1,this.e,g,d))}return e};_.yk=function P6d(a,b,c,d,e){var f;f=b.ii(c);XD(f)===XD(p5d)&&(f=null);b.ki(c);if(a.sh()&&a.th()){!e&&(e=new iJd(4));this.rk()?e.lj(new _1d(a,2,this.e,f,null)):e.lj(new _1d(a,1,this.e,f,null))}return e};_.zk=function Q6d(a,b,c){var d;d=b.ii(c);return d!=null};_.Ak=function R6d(a,b,c,d){var e,f,g,h,i;if(d!=null&&!DVd(this.a,d)){throw Icb(new Peb(rIe+(RD(d,57)?EWd(JD(d,57).Ah()):veb(rb(d)))+sIe+this.a+"'"))}i=b.ii(c);h=i!=null;this.rk()&&XD(i)===XD(p5d)&&(i=null);g=null;if(this.Kj()){if(XD(i)!==XD(d)){if(i!=null){e=JD(i,52);g=e.Qh(a,zWd(e.Ah(),this.b),null,g)}if(d!=null){e=JD(d,52);g=e.Oh(a,zWd(e.Ah(),this.b),null,g)}}}else if(this.$k()){if(XD(i)!==XD(d)){i!=null&&(g=JD(i,52).Qh(a,-1-zWd(a.Ah(),this.e),null,g));d!=null&&(g=JD(d,52).Oh(a,-1-zWd(a.Ah(),this.e),null,g))}}d==null&&this.rk()?b.ji(c,p5d):b.ji(c,d);if(a.sh()&&a.th()){f=new b2d(a,1,this.e,i,d,this.rk()&&!h);if(!g){zsd(a,f)}else{g.lj(f);g.mj()}}else !!g&&g.mj()};_.Ck=function S6d(a,b,c){var d,e,f,g,h;h=b.ii(c);g=h!=null;this.rk()&&XD(h)===XD(p5d)&&(h=null);f=null;if(h!=null){if(this.Kj()){d=JD(h,52);f=d.Qh(a,zWd(d.Ah(),this.b),null,f)}else this.$k()&&(f=JD(h,52).Qh(a,-1-zWd(a.Ah(),this.e),null,f))}b.ki(c);if(a.sh()&&a.th()){e=new b2d(a,this.rk()?2:1,this.e,h,null,g);if(!f){zsd(a,e)}else{f.lj(e);f.mj()}}else !!f&&f.mj()};_.Kj=function T6d(){return false};_.$k=function U6d(){return false};_._k=function V6d(){return false};_.rk=function W6d(){return false};var u8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObject',402);mdb(561,402,{},X6d);_.$k=function Y6d(){return true};var m8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment',561);mdb(1313,561,{},Z6d);_._k=function $6d(){return true};var f8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving',1313);mdb(773,561,{},_6d);_.rk=function a7d(){return true};var h8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable',773);mdb(1315,773,{},b7d);_._k=function c7d(){return true};var g8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving',1315);mdb(638,561,{},d7d);_.Kj=function e7d(){return true};var l8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse',638);mdb(1314,638,{},f7d);_._k=function g7d(){return true};var i8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving',1314);mdb(774,638,{},h7d);_.rk=function i7d(){return true};var k8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable',774);mdb(1316,774,{},j7d);_._k=function k7d(){return true};var j8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving',1316);mdb(639,402,{},l7d);_._k=function m7d(){return true};var q8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving',639);mdb(1317,639,{},n7d);_.rk=function o7d(){return true};var n8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable',1317);mdb(775,639,{},p7d);_.Kj=function q7d(){return true};var p8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse',775);mdb(1318,775,{},r7d);_.rk=function s7d(){return true};var o8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable',1318);mdb(1311,402,{},t7d);_.rk=function u7d(){return true};var r8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable',1311);mdb(772,402,{},v7d);_.Kj=function w7d(){return true};var t8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse',772);mdb(1312,772,{},x7d);_.rk=function y7d(){return true};var s8=zeb(MFe,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable',1312);mdb(776,562,qIe,B7d);_.wl=function C7d(a){return new B7d(this.a,this.c,a)};_.kd=function D7d(){return this.b};_.xl=function E7d(a,b,c){return z7d(this,a,this.b,c)};_.yl=function F7d(a,b,c){return A7d(this,a,this.b,c)};var w8=zeb(MFe,'EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry',776);mdb(1319,1,VHe,G7d);_.Dk=function H7d(a){return this.a};_.Oj=function I7d(){return RD(this.a,98)?JD(this.a,98).Oj():!this.a.dc()};_.Wb=function J7d(a){this.a.$b();this.a.Fc(JD(a,16))};_.Ek=function K7d(){RD(this.a,98)?JD(this.a,98).Ek():this.a.$b()};var x8=zeb(MFe,'EStructuralFeatureImpl/SettingMany',1319);mdb(1320,562,qIe,L7d);_.vl=function M7d(a){return new Q7d((lke(),kke),this.b.oi(this.a,a))};_.kd=function N7d(){return null};_.xl=function O7d(a,b,c){return c};_.yl=function P7d(a,b,c){return c};var y8=zeb(MFe,'EStructuralFeatureImpl/SimpleContentFeatureMapEntry',1320);mdb(640,562,qIe,Q7d);_.vl=function R7d(a){return new Q7d(this.c,a)};_.kd=function S7d(){return this.a};_.xl=function T7d(a,b,c){return c};_.yl=function U7d(a,b,c){return c};var z8=zeb(MFe,'EStructuralFeatureImpl/SimpleFeatureMapEntry',640);mdb(396,492,JGe,V7d);_.$i=function W7d(a){return SC(p6,rte,29,a,0,1)};_.Wi=function X7d(){return false};var B8=zeb(MFe,'ESuperAdapter/1',396);mdb(446,439,{109:1,94:1,93:1,158:1,197:1,57:1,114:1,834:1,52:1,100:1,161:1,446:1,117:1,118:1},Z7d);_.Ih=function $7d(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),this.Ab;case 1:return this.zb;case 2:return !this.a&&(this.a=new g8d(this,w6,this)),this.a;}return Isd(this,a-yWd((HRd(),GRd)),tWd((d=JD(fud(this,16),29),!d?GRd:d),a),b,c)};_.Rh=function _7d(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new A3d(n6,this,0,3)),tJd(this.Ab,a,c);case 2:return !this.a&&(this.a=new g8d(this,w6,this)),tJd(this.a,a,c);}return e=JD(tWd((d=JD(fud(this,16),29),!d?(HRd(),GRd):d),b),69),e.uk().yk(this,dud(this),b-yWd((HRd(),GRd)),a,c)};_.Th=function a8d(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return !!this.a&&this.a.i!=0;}return Jsd(this,a-yWd((HRd(),GRd)),tWd((b=JD(fud(this,16),29),!b?GRd:b),a))};_.$h=function b8d(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);!this.Ab&&(this.Ab=new A3d(n6,this,0,3));$Ed(this.Ab,JD(b,18));return;case 1:Wxd(this,OD(b));return;case 2:!this.a&&(this.a=new g8d(this,w6,this));uJd(this.a);!this.a&&(this.a=new g8d(this,w6,this));$Ed(this.a,JD(b,18));return;}Ksd(this,a-yWd((HRd(),GRd)),tWd((c=JD(fud(this,16),29),!c?GRd:c),a),b)};_.fi=function c8d(){return HRd(),GRd};_.hi=function d8d(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new A3d(n6,this,0,3));uJd(this.Ab);return;case 1:Wxd(this,null);return;case 2:!this.a&&(this.a=new g8d(this,w6,this));uJd(this.a);return;}Lsd(this,a-yWd((HRd(),GRd)),tWd((b=JD(fud(this,16),29),!b?GRd:b),a))};var H8=zeb(MFe,'ETypeParameterImpl',446);mdb(447,81,iIe,g8d);_.Lj=function h8d(a,b){return e8d(this,JD(a,87),b)};_.Mj=function i8d(a,b){return f8d(this,JD(a,87),b)};var D8=zeb(MFe,'ETypeParameterImpl/1',447);mdb(637,44,Hve,j8d);_.ec=function k8d(){return new n8d(this)};var G8=zeb(MFe,'ETypeParameterImpl/2',637);mdb(557,Ete,Fte,n8d);_.Ec=function o8d(a){return l8d(this,JD(a,87))};_.Fc=function p8d(a){var b,c,d;d=false;for(c=a.Jc();c.Ob();){b=JD(c.Pb(),87);ejb(this.a,b,'')==null&&(d=true)}return d};_.$b=function q8d(){hjb(this.a)};_.Gc=function r8d(a){return _ib(this.a,a)};_.Jc=function s8d(){var a;return a=new Cjb((new tjb(this.a)).a),new v8d(a)};_.Kc=function t8d(a){return m8d(this,a)};_.gc=function u8d(){return ijb(this.a)};var F8=zeb(MFe,'ETypeParameterImpl/2/1',557);mdb(558,1,Ate,v8d);_.Nb=function w8d(a){ctb(this,a)};_.Pb=function y8d(){return JD(Ajb(this.a).jd(),87)};_.Ob=function x8d(){return this.a.b};_.Qb=function z8d(){Bjb(this.a)};var E8=zeb(MFe,'ETypeParameterImpl/2/1/1',558);mdb(1281,44,Hve,A8d);_._b=function B8d(a){return VD(a)?djb(this,a):!!vsb(this.f,a)};_.xc=function C8d(a){var b,c;b=VD(a)?cjb(this,a):Wd(vsb(this.f,a));if(RD(b,835)){c=JD(b,835);b=c.Ik();ejb(this,JD(a,241),b);return b}else return b!=null?b:a==null?(Ege(),Dge):null};var J8=zeb(MFe,'EValidatorRegistryImpl',1281);mdb(1303,710,{109:1,94:1,93:1,469:1,158:1,57:1,114:1,2002:1,52:1,100:1,161:1,117:1,118:1},K8d);_.oi=function L8d(a,b){switch(a.fk()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return b==null?null:qdb(b);case 25:return E8d(b);case 27:return F8d(b);case 28:return G8d(b);case 29:return b==null?null:$_d(uxd[0],JD(b,205));case 41:return b==null?'':ueb(JD(b,298));case 42:return qdb(b);case 50:return OD(b);default:throw Icb(new hfb(PFe+a.ve()+QFe));}};_.pi=function M8d(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;switch(a.G==-1&&(a.G=(m=zVd(a),m?dXd(m.si(),a):-1)),a.G){case 0:return c=new kVd,c;case 1:return b=new nTd,b;case 2:return d=new FWd,d;case 4:return e=new i_d,e;case 5:return f=new y_d,f;case 6:return g=new P_d,g;case 7:return h=new Fxd,h;case 10:return j=new iSd,j;case 11:return k=new o2d,k;case 12:return l=new Lyd,l;case 13:return n=new P3d,n;case 14:return o=new b4d,o;case 17:return p=new t4d,p;case 18:return i=new q0d,i;case 19:return q=new Z7d,q;default:throw Icb(new hfb(TFe+a.zb+QFe));}};_.qi=function N8d(a,b){switch(a.fk()){case 20:return b==null?null:new Ihb(b);case 21:return b==null?null:new lib(b);case 23:case 22:return b==null?null:D8d(b);case 26:case 24:return b==null?null:feb(Vdb(b,-128,127)<<24>>24);case 25:return Cxd(b);case 27:return H8d(b);case 28:return I8d(b);case 29:return J8d(b);case 32:case 31:return b==null?null:Udb(b);case 38:case 37:return b==null?null:new _eb(b);case 40:case 39:return b==null?null:zfb(Vdb(b,rue,lte));case 41:return null;case 42:return b==null?null:null;case 44:case 43:return b==null?null:Ofb(Wdb(b));case 49:case 48:return b==null?null:igb(Vdb(b,vIe,32767)<<16>>16);case 50:return b;default:throw Icb(new hfb(PFe+a.ve()+QFe));}};var K8=zeb(MFe,'EcoreFactoryImpl',1303);mdb(548,184,{109:1,94:1,93:1,158:1,197:1,57:1,241:1,114:1,2000:1,52:1,100:1,161:1,184:1,548:1,117:1,118:1,680:1},Y8d);_.gb=false;_.hb=false;var P8d,Q8d=false;var B9=zeb(MFe,'EcorePackageImpl',548);mdb(1199,1,{835:1},a9d);_.Ik=function b9d(){return die(),cie};var V8=zeb(MFe,'EcorePackageImpl/1',1199);mdb(1208,1,IIe,c9d);_.dk=function d9d(a){return RD(a,158)};_.ek=function e9d(a){return SC(x6,rte,158,a,0,1)};var L8=zeb(MFe,'EcorePackageImpl/10',1208);mdb(1209,1,IIe,f9d);_.dk=function g9d(a){return RD(a,197)};_.ek=function h9d(a){return SC(y6,rte,197,a,0,1)};var M8=zeb(MFe,'EcorePackageImpl/11',1209);mdb(1210,1,IIe,i9d);_.dk=function j9d(a){return RD(a,57)};_.ek=function k9d(a){return SC(z6,rte,57,a,0,1)};var N8=zeb(MFe,'EcorePackageImpl/12',1210);mdb(1211,1,IIe,l9d);_.dk=function m9d(a){return RD(a,403)};_.ek=function n9d(a){return SC(A6,gIe,62,a,0,1)};var O8=zeb(MFe,'EcorePackageImpl/13',1211);mdb(1212,1,IIe,o9d);_.dk=function p9d(a){return RD(a,241)};_.ek=function q9d(a){return SC(B6,rte,241,a,0,1)};var P8=zeb(MFe,'EcorePackageImpl/14',1212);mdb(1213,1,IIe,r9d);_.dk=function s9d(a){return RD(a,503)};_.ek=function t9d(a){return SC(C6,rte,2078,a,0,1)};var Q8=zeb(MFe,'EcorePackageImpl/15',1213);mdb(1214,1,IIe,u9d);_.dk=function v9d(a){return RD(a,103)};_.ek=function w9d(a){return SC(D6,fIe,19,a,0,1)};var R8=zeb(MFe,'EcorePackageImpl/16',1214);mdb(1215,1,IIe,x9d);_.dk=function y9d(a){return RD(a,179)};_.ek=function z9d(a){return SC(G6,fIe,179,a,0,1)};var S8=zeb(MFe,'EcorePackageImpl/17',1215);mdb(1216,1,IIe,A9d);_.dk=function B9d(a){return RD(a,470)};_.ek=function C9d(a){return SC(I6,rte,470,a,0,1)};var T8=zeb(MFe,'EcorePackageImpl/18',1216);mdb(1217,1,IIe,D9d);_.dk=function E9d(a){return RD(a,549)};_.ek=function F9d(a){return SC(K7,FHe,549,a,0,1)};var U8=zeb(MFe,'EcorePackageImpl/19',1217);mdb(1200,1,IIe,G9d);_.dk=function H9d(a){return RD(a,335)};_.ek=function I9d(a){return SC(o6,fIe,38,a,0,1)};var e9=zeb(MFe,'EcorePackageImpl/2',1200);mdb(1218,1,IIe,J9d);_.dk=function K9d(a){return RD(a,248)};_.ek=function L9d(a){return SC(w6,mIe,87,a,0,1)};var W8=zeb(MFe,'EcorePackageImpl/20',1218);mdb(1219,1,IIe,M9d);_.dk=function N9d(a){return RD(a,446)};_.ek=function O9d(a){return SC(H6,rte,834,a,0,1)};var X8=zeb(MFe,'EcorePackageImpl/21',1219);mdb(1220,1,IIe,P9d);_.dk=function Q9d(a){return SD(a)};_.ek=function R9d(a){return SC(GI,Ote,473,a,8,1)};var Y8=zeb(MFe,'EcorePackageImpl/22',1220);mdb(1221,1,IIe,S9d);_.dk=function T9d(a){return RD(a,195)};_.ek=function U9d(a){return SC($D,Ote,195,a,0,2)};var Z8=zeb(MFe,'EcorePackageImpl/23',1221);mdb(1222,1,IIe,V9d);_.dk=function W9d(a){return RD(a,221)};_.ek=function X9d(a){return SC(HI,Ote,221,a,0,1)};var $8=zeb(MFe,'EcorePackageImpl/24',1222);mdb(1223,1,IIe,Y9d);_.dk=function Z9d(a){return RD(a,180)};_.ek=function $9d(a){return SC(II,Ote,180,a,0,1)};var _8=zeb(MFe,'EcorePackageImpl/25',1223);mdb(1224,1,IIe,_9d);_.dk=function aae(a){return RD(a,205)};_.ek=function bae(a){return SC(hK,Ote,205,a,0,1)};var a9=zeb(MFe,'EcorePackageImpl/26',1224);mdb(1225,1,IIe,cae);_.dk=function dae(a){return false};_.ek=function eae(a){return SC(_5,rte,2174,a,0,1)};var b9=zeb(MFe,'EcorePackageImpl/27',1225);mdb(1226,1,IIe,fae);_.dk=function gae(a){return TD(a)};_.ek=function hae(a){return SC(LI,Ote,346,a,7,1)};var c9=zeb(MFe,'EcorePackageImpl/28',1226);mdb(1227,1,IIe,iae);_.dk=function jae(a){return RD(a,61)};_.ek=function kae(a){return SC(e6,Twe,61,a,0,1)};var d9=zeb(MFe,'EcorePackageImpl/29',1227);mdb(1201,1,IIe,lae);_.dk=function mae(a){return RD(a,504)};_.ek=function nae(a){return SC(n6,{3:1,4:1,5:1,1995:1},587,a,0,1)};var p9=zeb(MFe,'EcorePackageImpl/3',1201);mdb(1228,1,IIe,oae);_.dk=function pae(a){return RD(a,568)};_.ek=function qae(a){return SC(f6,rte,2001,a,0,1)};var f9=zeb(MFe,'EcorePackageImpl/30',1228);mdb(1229,1,IIe,rae);_.dk=function sae(a){return RD(a,163)};_.ek=function tae(a){return SC(_ab,Twe,163,a,0,1)};var g9=zeb(MFe,'EcorePackageImpl/31',1229);mdb(1230,1,IIe,uae);_.dk=function vae(a){return RD(a,75)};_.ek=function wae(a){return SC(Rab,JIe,75,a,0,1)};var h9=zeb(MFe,'EcorePackageImpl/32',1230);mdb(1231,1,IIe,xae);_.dk=function yae(a){return RD(a,164)};_.ek=function zae(a){return SC(QI,Ote,164,a,0,1)};var i9=zeb(MFe,'EcorePackageImpl/33',1231);mdb(1232,1,IIe,Aae);_.dk=function Bae(a){return RD(a,15)};_.ek=function Cae(a){return SC(UI,Ote,15,a,0,1)};var j9=zeb(MFe,'EcorePackageImpl/34',1232);mdb(1233,1,IIe,Dae);_.dk=function Eae(a){return RD(a,298)};_.ek=function Fae(a){return SC(KI,rte,298,a,0,1)};var k9=zeb(MFe,'EcorePackageImpl/35',1233);mdb(1234,1,IIe,Gae);_.dk=function Hae(a){return RD(a,190)};_.ek=function Iae(a){return SC(XI,Ote,190,a,0,1)};var l9=zeb(MFe,'EcorePackageImpl/36',1234);mdb(1235,1,IIe,Jae);_.dk=function Kae(a){return RD(a,92)};_.ek=function Lae(a){return SC(MK,rte,92,a,0,1)};var m9=zeb(MFe,'EcorePackageImpl/37',1235);mdb(1236,1,IIe,Mae);_.dk=function Nae(a){return RD(a,588)};_.ek=function Oae(a){return SC(I9,rte,588,a,0,1)};var n9=zeb(MFe,'EcorePackageImpl/38',1236);mdb(1237,1,IIe,Pae);_.dk=function Qae(a){return false};_.ek=function Rae(a){return SC(H9,rte,2175,a,0,1)};var o9=zeb(MFe,'EcorePackageImpl/39',1237);mdb(1202,1,IIe,Sae);_.dk=function Tae(a){return RD(a,88)};_.ek=function Uae(a){return SC(p6,rte,29,a,0,1)};var v9=zeb(MFe,'EcorePackageImpl/4',1202);mdb(1238,1,IIe,Vae);_.dk=function Wae(a){return RD(a,191)};_.ek=function Xae(a){return SC(cJ,Ote,191,a,0,1)};var q9=zeb(MFe,'EcorePackageImpl/40',1238);mdb(1239,1,IIe,Yae);_.dk=function Zae(a){return VD(a)};_.ek=function $ae(a){return SC(hJ,Ote,2,a,6,1)};var r9=zeb(MFe,'EcorePackageImpl/41',1239);mdb(1240,1,IIe,_ae);_.dk=function abe(a){return RD(a,585)};_.ek=function bbe(a){return SC(i6,rte,585,a,0,1)};var s9=zeb(MFe,'EcorePackageImpl/42',1240);mdb(1241,1,IIe,cbe);_.dk=function dbe(a){return false};_.ek=function ebe(a){return SC(g6,Ote,2176,a,0,1)};var t9=zeb(MFe,'EcorePackageImpl/43',1241);mdb(1242,1,IIe,fbe);_.dk=function gbe(a){return RD(a,45)};_.ek=function hbe(a){return SC(LK,$te,45,a,0,1)};var u9=zeb(MFe,'EcorePackageImpl/44',1242);mdb(1203,1,IIe,ibe);_.dk=function jbe(a){return RD(a,143)};_.ek=function kbe(a){return SC(q6,rte,143,a,0,1)};var w9=zeb(MFe,'EcorePackageImpl/5',1203);mdb(1204,1,IIe,lbe);_.dk=function mbe(a){return RD(a,159)};_.ek=function nbe(a){return SC(s6,rte,159,a,0,1)};var x9=zeb(MFe,'EcorePackageImpl/6',1204);mdb(1205,1,IIe,obe);_.dk=function pbe(a){return RD(a,459)};_.ek=function qbe(a){return SC(u6,rte,675,a,0,1)};var y9=zeb(MFe,'EcorePackageImpl/7',1205);mdb(1206,1,IIe,rbe);_.dk=function sbe(a){return RD(a,568)};_.ek=function tbe(a){return SC(t6,rte,684,a,0,1)};var z9=zeb(MFe,'EcorePackageImpl/8',1206);mdb(1207,1,IIe,ube);_.dk=function vbe(a){return RD(a,469)};_.ek=function wbe(a){return SC(v6,rte,469,a,0,1)};var A9=zeb(MFe,'EcorePackageImpl/9',1207);mdb(1019,2042,DHe,Abe);_.Ki=function Bbe(a,b){xbe(this,JD(b,415))};_.Oi=function Cbe(a,b){ybe(this,a,JD(b,415))};var D9=zeb(MFe,'MinimalEObjectImpl/1ArrayDelegatingAdapterList',1019);mdb(1020,151,AHe,Dbe);_.hj=function Ebe(){return this.a.a};var C9=zeb(MFe,'MinimalEObjectImpl/1ArrayDelegatingAdapterList/1',1020);mdb(1047,1046,{},Gbe);var G9=zeb('org.eclipse.emf.ecore.plugin','EcorePlugin',1047);var I9=Beb(KIe,'Resource');mdb(786,1485,LIe);_.Fl=function Kbe(a){};_.Gl=function Lbe(a){};_.Cl=function Mbe(){return !this.a&&(this.a=new Xbe(this)),this.a};_.Dl=function Nbe(a){var b,c,d,e,f;d=a.length;if(d>0){RDb(0,a.length);if(a.charCodeAt(0)==47){f=new jmb(4);e=1;for(b=1;b0&&(a=(QDb(0,c,a.length),a.substr(0,c)))}}}return Ibe(this,a)};_.El=function Obe(){return this.c};_.Ib=function Pbe(){var a;return ueb(this.Pm)+'@'+(a=tb(this)>>>0,a.toString(16))+" uri='"+this.d+"'"};_.b=false;var M9=zeb(MIe,'ResourceImpl',786);mdb(1486,786,LIe,Qbe);var J9=zeb(MIe,'BinaryResourceImpl',1486);mdb(1159,697,KGe);_._i=function Tbe(a){return RD(a,57)?Rbe(this,JD(a,57)):RD(a,588)?new fKd(JD(a,588).Cl()):XD(a)===XD(this.f)?JD(a,18).Jc():(jOd(),iOd.a)};_.Ob=function Ube(){return Sbe(this)};_.a=false;var Mab=zeb(UHe,'EcoreUtil/ContentTreeIterator',1159);mdb(1487,1159,KGe,Vbe);_._i=function Wbe(a){return XD(a)===XD(this.f)?JD(a,16).Jc():new Zhe(JD(a,57))};var K9=zeb(MIe,'ResourceImpl/5',1487);mdb(647,2054,hIe,Xbe);_.Gc=function Ybe(a){return this.i<=4?RFd(this,a):RD(a,52)&&JD(a,52).Gh()==this.a};_.Ki=function Zbe(a,b){a==this.i-1&&(this.a.b||(this.a.b=true,null))};_.Mi=function $be(a,b){a==0?this.a.b||(this.a.b=true,null):aFd(this,a,b)};_.Oi=function _be(a,b){};_.Pi=function ace(a,b,c){};_.Jj=function bce(){return 2};_.hj=function cce(){return this.a};_.Kj=function dce(){return true};_.Lj=function ece(a,b){var c;c=JD(a,52);b=c.ci(this.a,b);return b};_.Mj=function fce(a,b){var c;c=JD(a,52);return c.ci(null,b)};_.Nj=function gce(){return false};_.Qi=function hce(){return true};_.$i=function ice(a){return SC(z6,rte,57,a,0,1)};_.Wi=function jce(){return false};var L9=zeb(MIe,'ResourceImpl/ContentsEList',647);mdb(953,2024,lue,kce);_.dd=function lce(a){return this.a.Ii(a)};_.gc=function mce(){return this.a.gc()};var N9=zeb(UHe,'AbstractSequentialInternalEList/1',953);var fie,gie,hie,iie;mdb(625,1,{},Wce);var nce,oce;var T9=zeb(UHe,'BasicExtendedMetaData',625);mdb(1150,1,{},$ce);_.Hl=function _ce(){return null};_.Il=function ade(){this.a==-2&&Yce(this,sce(this.d,this.b));return this.a};_.Jl=function bde(){return null};_.Kl=function cde(){return Fnb(),Fnb(),Cnb};_.ve=function dde(){this.c==_Ie&&Zce(this,xce(this.d,this.b));return this.c};_.Ll=function ede(){return 0};_.a=-2;_.c=_Ie;var P9=zeb(UHe,'BasicExtendedMetaData/EClassExtendedMetaDataImpl',1150);mdb(1151,1,{},kde);_.Hl=function lde(){this.a==(pce(),nce)&&fde(this,rce(this.f,this.b));return this.a};_.Il=function mde(){return 0};_.Jl=function nde(){this.c==(pce(),nce)&&gde(this,vce(this.f,this.b));return this.c};_.Kl=function ode(){!this.d&&hde(this,wce(this.f,this.b));return this.d};_.ve=function pde(){this.e==_Ie&&ide(this,xce(this.f,this.b));return this.e};_.Ll=function qde(){this.g==-2&&jde(this,Ace(this.f,this.b));return this.g};_.e=_Ie;_.g=-2;var Q9=zeb(UHe,'BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl',1151);mdb(1149,1,{},ude);_.b=false;_.c=false;var R9=zeb(UHe,'BasicExtendedMetaData/EPackageExtendedMetaDataImpl',1149);mdb(1152,1,{},Hde);_.c=-2;_.e=_Ie;_.f=_Ie;var S9=zeb(UHe,'BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl',1152);mdb(581,623,iIe,Ide);_.Jj=function Jde(){return this.c};_.ml=function Kde(){return false};_.Ui=function Lde(a,b){return b};_.c=0;var eab=zeb(UHe,'EDataTypeEList',581);var _ab=Beb(UHe,'FeatureMap');mdb(76,581,{3:1,4:1,20:1,31:1,56:1,18:1,16:1,59:1,71:1,67:1,61:1,77:1,163:1,219:1,1998:1,72:1,98:1},See);_._c=function Tee(a,b){Mde(this,a,JD(b,75))};_.Ec=function Uee(a){return Pde(this,JD(a,75))};_.Fi=function Zee(a){Ude(this,JD(a,75))};_.Lj=function ife(a,b){return kee(this,JD(a,75),b)};_.Mj=function jfe(a,b){return mee(this,JD(a,75),b)};_.Ri=function lfe(a,b){return see(this,a,b)};_.Ui=function nfe(a,b){return xee(this,a,JD(b,75))};_.fd=function pfe(a,b){return Aee(this,a,JD(b,75))};_.Sj=function tfe(a,b){return Gee(this,JD(a,75),b)};_.Tj=function ufe(a,b){return Iee(this,JD(a,75),b)};_.Uj=function vfe(a,b,c){return Jee(this,JD(a,75),JD(b,75),c)};_.Xi=function xfe(a,b){return Ree(this,a,JD(b,75))};_.Ml=function Vee(a,b){return Ode(this,a,b)};_.ad=function Wee(a,b){var c,d,e,f,g,h,i,j,k;j=new _Fd(b.gc());for(e=b.Jc();e.Ob();){d=JD(e.Pb(),75);f=d.Jk();if(oie(this.e,f)){(!f.Qi()||!aee(this,f,d.kd())&&!RFd(j,d))&&YEd(j,d)}else{k=nie(this.e.Ah(),f);c=JD(this.g,122);g=true;for(h=0;h=0){b=a[this.c];if(this.k.$l(b.Jk())){this.j=this.f?b:b.kd();this.i=-2;return true}}this.i=-1;this.g=-1;return false};var U9=zeb(UHe,'BasicFeatureMap/FeatureEIterator',412);mdb(666,412,Jte,Qfe);_.sl=function Rfe(){return true};var V9=zeb(UHe,'BasicFeatureMap/ResolvingFeatureEIterator',666);mdb(951,482,oIe,Sfe);_.nj=function Tfe(){return this};var Z9=zeb(UHe,'EContentsEList/1',951);mdb(952,482,oIe,Ufe);_.sl=function Vfe(){return false};var $9=zeb(UHe,'EContentsEList/2',952);mdb(950,287,pIe,Wfe);_.ul=function Xfe(a){};_.Ob=function Yfe(){return false};_.Sb=function Zfe(){return false};var _9=zeb(UHe,'EContentsEList/FeatureIteratorImpl/1',950);mdb(824,581,iIe,$fe);_.Li=function _fe(){this.a=true};_.Oj=function age(){return this.a};_.Ek=function bge(){var a;uJd(this);if(Vsd(this.e)){a=this.a;this.a=false;zsd(this.e,new O1d(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var dab=zeb(UHe,'EDataTypeEList/Unsettable',824);mdb(1920,581,iIe,cge);_.Qi=function dge(){return true};var gab=zeb(UHe,'EDataTypeUniqueEList',1920);mdb(1921,824,iIe,ege);_.Qi=function fge(){return true};var fab=zeb(UHe,'EDataTypeUniqueEList/Unsettable',1921);mdb(145,81,iIe,gge);_.ll=function hge(){return true};_.Ui=function ige(a,b){return eXd(this,a,JD(b,57))};var hab=zeb(UHe,'EObjectContainmentEList/Resolving',145);mdb(1153,543,iIe,jge);_.ll=function kge(){return true};_.Ui=function lge(a,b){return eXd(this,a,JD(b,57))};var iab=zeb(UHe,'EObjectContainmentEList/Unsettable/Resolving',1153);mdb(753,14,iIe,mge);_.Li=function nge(){this.a=true};_.Oj=function oge(){return this.a};_.Ek=function pge(){var a;uJd(this);if(Vsd(this.e)){a=this.a;this.a=false;zsd(this.e,new O1d(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var nab=zeb(UHe,'EObjectContainmentWithInverseEList/Unsettable',753);mdb(1187,753,iIe,qge);_.ll=function rge(){return true};_.Ui=function sge(a,b){return eXd(this,a,JD(b,57))};var mab=zeb(UHe,'EObjectContainmentWithInverseEList/Unsettable/Resolving',1187);mdb(745,491,iIe,tge);_.Li=function uge(){this.a=true};_.Oj=function vge(){return this.a};_.Ek=function wge(){var a;uJd(this);if(Vsd(this.e)){a=this.a;this.a=false;zsd(this.e,new O1d(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var pab=zeb(UHe,'EObjectEList/Unsettable',745);mdb(339,491,iIe,xge);_.ll=function yge(){return true};_.Ui=function zge(a,b){return eXd(this,a,JD(b,57))};var sab=zeb(UHe,'EObjectResolvingEList',339);mdb(1825,745,iIe,Age);_.ll=function Bge(){return true};_.Ui=function Cge(a,b){return eXd(this,a,JD(b,57))};var rab=zeb(UHe,'EObjectResolvingEList/Unsettable',1825);mdb(1488,1,{},Fge);var Dge;var tab=zeb(UHe,'EObjectValidator',1488);mdb(547,491,iIe,Gge);_.gl=function Hge(){return this.d};_.hl=function Ige(){return this.b};_.Kj=function Jge(){return true};_.kl=function Kge(){return true};_.b=0;var xab=zeb(UHe,'EObjectWithInverseEList',547);mdb(1190,547,iIe,Lge);_.jl=function Mge(){return true};var uab=zeb(UHe,'EObjectWithInverseEList/ManyInverse',1190);mdb(626,547,iIe,Nge);_.Li=function Oge(){this.a=true};_.Oj=function Pge(){return this.a};_.Ek=function Qge(){var a;uJd(this);if(Vsd(this.e)){a=this.a;this.a=false;zsd(this.e,new O1d(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var wab=zeb(UHe,'EObjectWithInverseEList/Unsettable',626);mdb(1189,626,iIe,Rge);_.jl=function Sge(){return true};var vab=zeb(UHe,'EObjectWithInverseEList/Unsettable/ManyInverse',1189);mdb(754,547,iIe,Tge);_.ll=function Uge(){return true};_.Ui=function Vge(a,b){return eXd(this,a,JD(b,57))};var Bab=zeb(UHe,'EObjectWithInverseResolvingEList',754);mdb(33,754,iIe,Wge);_.jl=function Xge(){return true};var yab=zeb(UHe,'EObjectWithInverseResolvingEList/ManyInverse',33);mdb(755,626,iIe,Yge);_.ll=function Zge(){return true};_.Ui=function $ge(a,b){return eXd(this,a,JD(b,57))};var Aab=zeb(UHe,'EObjectWithInverseResolvingEList/Unsettable',755);mdb(1188,755,iIe,_ge);_.jl=function ahe(){return true};var zab=zeb(UHe,'EObjectWithInverseResolvingEList/Unsettable/ManyInverse',1188);mdb(1154,623,iIe);_.Ji=function bhe(){return (this.b&1792)==0};_.Li=function che(){this.b|=1};_.il=function dhe(){return (this.b&4)!=0};_.Kj=function ehe(){return (this.b&40)!=0};_.jl=function fhe(){return (this.b&16)!=0};_.kl=function ghe(){return (this.b&8)!=0};_.ll=function hhe(){return (this.b&Mte)!=0};_.$k=function ihe(){return (this.b&32)!=0};_.ml=function jhe(){return (this.b&GHe)!=0};_.dk=function khe(a){return !this.d?this.Jk().Fk().dk(a):OPd(this.d,a)};_.Oj=function lhe(){return (this.b&2)!=0?(this.b&1)!=0:this.i!=0};_.Qi=function mhe(){return (this.b&128)!=0};_.Ek=function ohe(){var a;uJd(this);if((this.b&2)!=0){if(Vsd(this.e)){a=(this.b&1)!=0;this.b&=-2;cXd(this,new O1d(this.e,2,zWd(this.e.Ah(),this.Jk()),a,false))}else{this.b&=-2}}};_.Wi=function phe(){return (this.b&1536)==0};_.b=0;var Dab=zeb(UHe,'EcoreEList/Generic',1154);mdb(1155,1154,iIe,qhe);_.Jk=function rhe(){return this.a};var Cab=zeb(UHe,'EcoreEList/Dynamic',1155);mdb(752,67,JGe,she);_.$i=function the(a){return KKd(this.a.a,a)};var Hab=zeb(UHe,'EcoreEMap/1',752);mdb(751,81,iIe,uhe);_.Ki=function vhe(a,b){WLd(this.b,JD(b,136))};_.Mi=function whe(a,b){VLd(this.b)};_.Ni=function xhe(a,b,c){var d;++(d=this.b,JD(b,136),d).e};_.Oi=function yhe(a,b){XLd(this.b,JD(b,136))};_.Pi=function zhe(a,b,c){XLd(this.b,JD(c,136));XD(c)===XD(b)&&JD(c,136).zi(cMd(JD(b,136).jd()));WLd(this.b,JD(b,136))};var Iab=zeb(UHe,'EcoreEMap/DelegateEObjectContainmentEList',751);mdb(1185,142,WHe,Ahe);var Kab=zeb(UHe,'EcoreEMap/Unsettable',1185);mdb(1186,751,iIe,Bhe);_.Li=function Che(){this.a=true};_.Oj=function Dhe(){return this.a};_.Ek=function Ehe(){var a;uJd(this);if(Vsd(this.e)){a=this.a;this.a=false;zsd(this.e,new O1d(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var Jab=zeb(UHe,'EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList',1186);mdb(1158,223,Hve,Xhe);_.a=false;_.b=false;var Nab=zeb(UHe,'EcoreUtil/Copier',1158);mdb(747,1,Ate,Zhe);_.Nb=function $he(a){ctb(this,a)};_.Ob=function _he(){return Yhe(this)};_.Pb=function aie(){var a;Yhe(this);a=this.b;this.b=null;return a};_.Qb=function bie(){this.a.Qb()};var Oab=zeb(UHe,'EcoreUtil/ProperContentIterator',747);mdb(1489,1488,{},eie);var cie;var Pab=zeb(UHe,'EcoreValidator',1489);var kie;var $ab=Beb(UHe,'FeatureMapUtil/Validator');mdb(1258,1,{2003:1},pie);_.$l=function qie(a){return true};var Sab=zeb(UHe,'FeatureMapUtil/1',1258);mdb(760,1,{2003:1},uie);_.$l=function vie(a){var b;if(this.c==a)return true;b=LD(bjb(this.a,a));if(b==null){if(tie(this,a)){wie(this.a,a,(Ndb(),Mdb));return true}else{wie(this.a,a,(Ndb(),Ldb));return false}}else{return b==(Ndb(),Mdb)}};_.e=false;var rie;var Vab=zeb(UHe,'FeatureMapUtil/BasicValidator',760);mdb(761,44,Hve,xie);var Uab=zeb(UHe,'FeatureMapUtil/BasicValidator/Cache',761);mdb(495,56,{20:1,31:1,56:1,18:1,16:1,61:1,77:1,72:1,98:1},Cie);_._c=function Die(a,b){Nde(this.c,this.b,a,b)};_.Ec=function Eie(a){return Ode(this.c,this.b,a)};_.ad=function Fie(a,b){return Qde(this.c,this.b,a,b)};_.Fc=function Gie(a){return yie(this,a)};_.Ei=function Hie(a,b){Sde(this.c,this.b,a,b)};_.Uk=function Iie(a,b){return Vde(this.c,this.b,a,b)};_.Yi=function Jie(a){return fee(this.c,this.b,a,false)};_.Gi=function Kie(){return Wde(this.c,this.b)};_.Hi=function Lie(){return Xde(this.c,this.b)};_.Ii=function Mie(a){return Yde(this.c,this.b,a)};_.Vk=function Nie(a,b){return zie(this,a,b)};_.$b=function Oie(){Aie(this)};_.Gc=function Pie(a){return aee(this.c,this.b,a)};_.Hc=function Qie(a){return cee(this.c,this.b,a)};_.Xb=function Rie(a){return fee(this.c,this.b,a,true)};_.Dk=function Sie(a){return this};_.bd=function Tie(a){return hee(this.c,this.b,a)};_.dc=function Uie(){return Bie(this)};_.Oj=function Vie(){return !nee(this.c,this.b)};_.Jc=function Wie(){return oee(this.c,this.b)};_.cd=function Xie(){return qee(this.c,this.b)};_.dd=function Yie(a){return ree(this.c,this.b,a)};_.Ri=function Zie(a,b){return tee(this.c,this.b,a,b)};_.Si=function $ie(a,b){uee(this.c,this.b,a,b)};_.ed=function _ie(a){return vee(this.c,this.b,a)};_.Kc=function aje(a){return wee(this.c,this.b,a)};_.fd=function bje(a,b){return Cee(this.c,this.b,a,b)};_.Wb=function cje(a){_de(this.c,this.b);yie(this,JD(a,16))};_.gc=function dje(){return Lee(this.c,this.b)};_.Nc=function eje(){return Mee(this.c,this.b)};_.Oc=function fje(a){return Oee(this.c,this.b,a)};_.Ib=function gje(){var a,b;b=new Xgb;b.a+='[';for(a=Wde(this.c,this.b);zfe(a);){Ugb(b,Ngb(Bfe(a)));zfe(a)&&(b.a+=pte,b)}b.a+=']';return b.a};_.Ek=function hje(){_de(this.c,this.b)};var Wab=zeb(UHe,'FeatureMapUtil/FeatureEList',495);mdb(634,39,AHe,jje);_.fj=function kje(a){return ije(this,a)};_.kj=function lje(a){var b,c,d,e,f,g,h;switch(this.d){case 1:case 2:{f=a.hj();if(XD(f)===XD(this.c)&&ije(this,null)==a.fj(null)){this.g=a.gj();a.ej()==1&&(this.d=1);return true}break}case 3:{e=a.ej();switch(e){case 3:{f=a.hj();if(XD(f)===XD(this.c)&&ije(this,null)==a.fj(null)){this.d=5;b=new _Fd(2);YEd(b,this.g);YEd(b,a.gj());this.g=b;return true}break}}break}case 5:{e=a.ej();switch(e){case 3:{f=a.hj();if(XD(f)===XD(this.c)&&ije(this,null)==a.fj(null)){c=JD(this.g,18);c.Ec(a.gj());return true}break}}break}case 4:{e=a.ej();switch(e){case 3:{f=a.hj();if(XD(f)===XD(this.c)&&ije(this,null)==a.fj(null)){this.d=1;this.g=a.gj();return true}break}case 4:{f=a.hj();if(XD(f)===XD(this.c)&&ije(this,null)==a.fj(null)){this.d=6;h=new _Fd(2);YEd(h,this.n);YEd(h,a.ij());this.n=h;g=WC(OC(cE,1),Pue,30,15,[this.o,a.jj()]);this.g=g;return true}break}}break}case 6:{e=a.ej();switch(e){case 4:{f=a.hj();if(XD(f)===XD(this.c)&&ije(this,null)==a.fj(null)){c=JD(this.n,18);c.Ec(a.ij());g=JD(this.g,54);d=SC(cE,Pue,30,g.length+1,15,1);ohb(g,0,d,0,g.length);d[g.length]=a.jj();this.g=d;return true}break}}break}}return false};var Xab=zeb(UHe,'FeatureMapUtil/FeatureENotificationImpl',634);mdb(553,495,{20:1,31:1,56:1,18:1,16:1,61:1,77:1,163:1,219:1,1998:1,72:1,98:1},mje);_.Ml=function nje(a,b){return Ode(this.c,a,b)};_.Nl=function oje(a,b,c){return Vde(this.c,a,b,c)};_.Ol=function pje(a,b,c){return $de(this.c,a,b,c)};_.Pl=function qje(){return this};_.Ql=function rje(a,b){return gee(this.c,a,b)};_.Rl=function sje(a){return JD(fee(this.c,this.b,a,false),75).Jk()};_.Sl=function tje(a){return JD(fee(this.c,this.b,a,false),75).kd()};_.Tl=function uje(){return this.a};_.Ul=function vje(a){return !nee(this.c,a)};_.Vl=function wje(a,b){Dee(this.c,a,b)};_.Wl=function xje(a){return Eee(this.c,a)};_.Xl=function yje(a){Qee(this.c,a)};var Yab=zeb(UHe,'FeatureMapUtil/FeatureFeatureMap',553);mdb(1257,1,VHe,zje);_.Dk=function Aje(a){return fee(this.b,this.a,-1,a)};_.Oj=function Bje(){return !nee(this.b,this.a)};_.Wb=function Cje(a){Dee(this.b,this.a,a)};_.Ek=function Dje(){_de(this.b,this.a)};var Zab=zeb(UHe,'FeatureMapUtil/FeatureValue',1257);var Eje,Fje,Gje,Hje,Ije;var bbb=Beb(bJe,'AnyType');mdb(670,63,tue,Kje);var cbb=zeb(bJe,'InvalidDatatypeValueException',670);var dbb=Beb(bJe,cJe);var ebb=Beb(bJe,dJe);var fbb=Beb(bJe,eJe);var Lje;var Nje;var Pje,Qje,Rje,Sje,Tje,Uje,Vje,Wje,Xje,Yje,Zje,$je,_je,ake,bke,cke,dke,eke,fke,gke,hke,ike,jke,kke;mdb(828,501,{109:1,94:1,93:1,57:1,52:1,100:1,841:1},mke);_.Ih=function nke(a,b,c){switch(a){case 0:if(c)return !this.c&&(this.c=new See(this,0)),this.c;return !this.c&&(this.c=new See(this,0)),this.c.b;case 1:if(c)return !this.c&&(this.c=new See(this,0)),JD(pee(this.c,(lke(),Qje)),163);return (!this.c&&(this.c=new See(this,0)),JD(JD(pee(this.c,(lke(),Qje)),163),219)).Tl();case 2:if(c)return !this.b&&(this.b=new See(this,2)),this.b;return !this.b&&(this.b=new See(this,2)),this.b.b;}return Isd(this,a-yWd(this.fi()),tWd((this.j&2)==0?this.fi():(!this.k&&(this.k=new dSd),this.k).Lk(),a),b,c)};_.Rh=function oke(a,b,c){var d;switch(b){case 0:return !this.c&&(this.c=new See(this,0)),Zde(this.c,a,c);case 1:return (!this.c&&(this.c=new See(this,0)),JD(JD(pee(this.c,(lke(),Qje)),163),72)).Vk(a,c);case 2:return !this.b&&(this.b=new See(this,2)),Zde(this.b,a,c);}return d=JD(tWd((this.j&2)==0?this.fi():(!this.k&&(this.k=new dSd),this.k).Lk(),b),69),d.uk().yk(this,ftd(this),b-yWd(this.fi()),a,c)};_.Th=function pke(a){switch(a){case 0:return !!this.c&&this.c.i!=0;case 1:return !(!this.c&&(this.c=new See(this,0)),JD(pee(this.c,(lke(),Qje)),163)).dc();case 2:return !!this.b&&this.b.i!=0;}return Jsd(this,a-yWd(this.fi()),tWd((this.j&2)==0?this.fi():(!this.k&&(this.k=new dSd),this.k).Lk(),a))};_.$h=function qke(a,b){switch(a){case 0:!this.c&&(this.c=new See(this,0));Bee(this.c,b);return;case 1:(!this.c&&(this.c=new See(this,0)),JD(JD(pee(this.c,(lke(),Qje)),163),219)).Wb(b);return;case 2:!this.b&&(this.b=new See(this,2));Bee(this.b,b);return;}Ksd(this,a-yWd(this.fi()),tWd((this.j&2)==0?this.fi():(!this.k&&(this.k=new dSd),this.k).Lk(),a),b)};_.fi=function rke(){return lke(),Pje};_.hi=function ske(a){switch(a){case 0:!this.c&&(this.c=new See(this,0));uJd(this.c);return;case 1:(!this.c&&(this.c=new See(this,0)),JD(pee(this.c,(lke(),Qje)),163)).$b();return;case 2:!this.b&&(this.b=new See(this,2));uJd(this.b);return;}Lsd(this,a-yWd(this.fi()),tWd((this.j&2)==0?this.fi():(!this.k&&(this.k=new dSd),this.k).Lk(),a))};_.Ib=function tke(){var a;if((this.j&4)!=0)return jtd(this);a=new Zgb(jtd(this));a.a+=' (mixed: ';Tgb(a,this.c);a.a+=', anyAttribute: ';Tgb(a,this.b);a.a+=')';return a.a};var gbb=zeb(fJe,'AnyTypeImpl',828);mdb(671,501,{109:1,94:1,93:1,57:1,52:1,100:1,2081:1,671:1},wke);_.Ih=function xke(a,b,c){switch(a){case 0:return this.a;case 1:return this.b;}return Isd(this,a-yWd((lke(),ake)),tWd((this.j&2)==0?ake:(!this.k&&(this.k=new dSd),this.k).Lk(),a),b,c)};_.Th=function yke(a){switch(a){case 0:return this.a!=null;case 1:return this.b!=null;}return Jsd(this,a-yWd((lke(),ake)),tWd((this.j&2)==0?ake:(!this.k&&(this.k=new dSd),this.k).Lk(),a))};_.$h=function zke(a,b){switch(a){case 0:uke(this,OD(b));return;case 1:vke(this,OD(b));return;}Ksd(this,a-yWd((lke(),ake)),tWd((this.j&2)==0?ake:(!this.k&&(this.k=new dSd),this.k).Lk(),a),b)};_.fi=function Ake(){return lke(),ake};_.hi=function Bke(a){switch(a){case 0:this.a=null;return;case 1:this.b=null;return;}Lsd(this,a-yWd((lke(),ake)),tWd((this.j&2)==0?ake:(!this.k&&(this.k=new dSd),this.k).Lk(),a))};_.Ib=function Cke(){var a;if((this.j&4)!=0)return jtd(this);a=new Zgb(jtd(this));a.a+=' (data: ';Ugb(a,this.a);a.a+=', target: ';Ugb(a,this.b);a.a+=')';return a.a};_.a=null;_.b=null;var hbb=zeb(fJe,'ProcessingInstructionImpl',671);mdb(672,828,{109:1,94:1,93:1,57:1,52:1,100:1,841:1,2082:1,672:1},Fke);_.Ih=function Gke(a,b,c){switch(a){case 0:if(c)return !this.c&&(this.c=new See(this,0)),this.c;return !this.c&&(this.c=new See(this,0)),this.c.b;case 1:if(c)return !this.c&&(this.c=new See(this,0)),JD(pee(this.c,(lke(),Qje)),163);return (!this.c&&(this.c=new See(this,0)),JD(JD(pee(this.c,(lke(),Qje)),163),219)).Tl();case 2:if(c)return !this.b&&(this.b=new See(this,2)),this.b;return !this.b&&(this.b=new See(this,2)),this.b.b;case 3:return !this.c&&(this.c=new See(this,0)),OD(gee(this.c,(lke(),dke),true));case 4:return Ghe(this.a,(!this.c&&(this.c=new See(this,0)),OD(gee(this.c,(lke(),dke),true))));case 5:return this.a;}return Isd(this,a-yWd((lke(),cke)),tWd((this.j&2)==0?cke:(!this.k&&(this.k=new dSd),this.k).Lk(),a),b,c)};_.Th=function Hke(a){switch(a){case 0:return !!this.c&&this.c.i!=0;case 1:return !(!this.c&&(this.c=new See(this,0)),JD(pee(this.c,(lke(),Qje)),163)).dc();case 2:return !!this.b&&this.b.i!=0;case 3:return !this.c&&(this.c=new See(this,0)),OD(gee(this.c,(lke(),dke),true))!=null;case 4:return Ghe(this.a,(!this.c&&(this.c=new See(this,0)),OD(gee(this.c,(lke(),dke),true))))!=null;case 5:return !!this.a;}return Jsd(this,a-yWd((lke(),cke)),tWd((this.j&2)==0?cke:(!this.k&&(this.k=new dSd),this.k).Lk(),a))};_.$h=function Ike(a,b){switch(a){case 0:!this.c&&(this.c=new See(this,0));Bee(this.c,b);return;case 1:(!this.c&&(this.c=new See(this,0)),JD(JD(pee(this.c,(lke(),Qje)),163),219)).Wb(b);return;case 2:!this.b&&(this.b=new See(this,2));Bee(this.b,b);return;case 3:Eke(this,OD(b));return;case 4:Eke(this,Fhe(this.a,b));return;case 5:Dke(this,JD(b,159));return;}Ksd(this,a-yWd((lke(),cke)),tWd((this.j&2)==0?cke:(!this.k&&(this.k=new dSd),this.k).Lk(),a),b)};_.fi=function Jke(){return lke(),cke};_.hi=function Kke(a){switch(a){case 0:!this.c&&(this.c=new See(this,0));uJd(this.c);return;case 1:(!this.c&&(this.c=new See(this,0)),JD(pee(this.c,(lke(),Qje)),163)).$b();return;case 2:!this.b&&(this.b=new See(this,2));uJd(this.b);return;case 3:!this.c&&(this.c=new See(this,0));Dee(this.c,(lke(),dke),null);return;case 4:Eke(this,Fhe(this.a,null));return;case 5:this.a=null;return;}Lsd(this,a-yWd((lke(),cke)),tWd((this.j&2)==0?cke:(!this.k&&(this.k=new dSd),this.k).Lk(),a))};var ibb=zeb(fJe,'SimpleAnyTypeImpl',672);mdb(673,501,{109:1,94:1,93:1,57:1,52:1,100:1,2083:1,673:1},Lke);_.Ih=function Mke(a,b,c){switch(a){case 0:if(c)return !this.a&&(this.a=new See(this,0)),this.a;return !this.a&&(this.a=new See(this,0)),this.a.b;case 1:return c?(!this.b&&(this.b=new BTd((HRd(),DRd),K7,this,1)),this.b):(!this.b&&(this.b=new BTd((HRd(),DRd),K7,this,1)),fMd(this.b));case 2:return c?(!this.c&&(this.c=new BTd((HRd(),DRd),K7,this,2)),this.c):(!this.c&&(this.c=new BTd((HRd(),DRd),K7,this,2)),fMd(this.c));case 3:return !this.a&&(this.a=new See(this,0)),pee(this.a,(lke(),gke));case 4:return !this.a&&(this.a=new See(this,0)),pee(this.a,(lke(),hke));case 5:return !this.a&&(this.a=new See(this,0)),pee(this.a,(lke(),jke));case 6:return !this.a&&(this.a=new See(this,0)),pee(this.a,(lke(),kke));}return Isd(this,a-yWd((lke(),fke)),tWd((this.j&2)==0?fke:(!this.k&&(this.k=new dSd),this.k).Lk(),a),b,c)};_.Rh=function Nke(a,b,c){var d;switch(b){case 0:return !this.a&&(this.a=new See(this,0)),Zde(this.a,a,c);case 1:return !this.b&&(this.b=new BTd((HRd(),DRd),K7,this,1)),zTd(this.b,a,c);case 2:return !this.c&&(this.c=new BTd((HRd(),DRd),K7,this,2)),zTd(this.c,a,c);case 5:return !this.a&&(this.a=new See(this,0)),zie(pee(this.a,(lke(),jke)),a,c);}return d=JD(tWd((this.j&2)==0?(lke(),fke):(!this.k&&(this.k=new dSd),this.k).Lk(),b),69),d.uk().yk(this,ftd(this),b-yWd((lke(),fke)),a,c)};_.Th=function Oke(a){switch(a){case 0:return !!this.a&&this.a.i!=0;case 1:return !!this.b&&this.b.f!=0;case 2:return !!this.c&&this.c.f!=0;case 3:return !this.a&&(this.a=new See(this,0)),!Bie(pee(this.a,(lke(),gke)));case 4:return !this.a&&(this.a=new See(this,0)),!Bie(pee(this.a,(lke(),hke)));case 5:return !this.a&&(this.a=new See(this,0)),!Bie(pee(this.a,(lke(),jke)));case 6:return !this.a&&(this.a=new See(this,0)),!Bie(pee(this.a,(lke(),kke)));}return Jsd(this,a-yWd((lke(),fke)),tWd((this.j&2)==0?fke:(!this.k&&(this.k=new dSd),this.k).Lk(),a))};_.$h=function Pke(a,b){switch(a){case 0:!this.a&&(this.a=new See(this,0));Bee(this.a,b);return;case 1:!this.b&&(this.b=new BTd((HRd(),DRd),K7,this,1));ATd(this.b,b);return;case 2:!this.c&&(this.c=new BTd((HRd(),DRd),K7,this,2));ATd(this.c,b);return;case 3:!this.a&&(this.a=new See(this,0));Aie(pee(this.a,(lke(),gke)));!this.a&&(this.a=new See(this,0));yie(pee(this.a,gke),JD(b,18));return;case 4:!this.a&&(this.a=new See(this,0));Aie(pee(this.a,(lke(),hke)));!this.a&&(this.a=new See(this,0));yie(pee(this.a,hke),JD(b,18));return;case 5:!this.a&&(this.a=new See(this,0));Aie(pee(this.a,(lke(),jke)));!this.a&&(this.a=new See(this,0));yie(pee(this.a,jke),JD(b,18));return;case 6:!this.a&&(this.a=new See(this,0));Aie(pee(this.a,(lke(),kke)));!this.a&&(this.a=new See(this,0));yie(pee(this.a,kke),JD(b,18));return;}Ksd(this,a-yWd((lke(),fke)),tWd((this.j&2)==0?fke:(!this.k&&(this.k=new dSd),this.k).Lk(),a),b)};_.fi=function Qke(){return lke(),fke};_.hi=function Rke(a){switch(a){case 0:!this.a&&(this.a=new See(this,0));uJd(this.a);return;case 1:!this.b&&(this.b=new BTd((HRd(),DRd),K7,this,1));this.b.c.$b();return;case 2:!this.c&&(this.c=new BTd((HRd(),DRd),K7,this,2));this.c.c.$b();return;case 3:!this.a&&(this.a=new See(this,0));Aie(pee(this.a,(lke(),gke)));return;case 4:!this.a&&(this.a=new See(this,0));Aie(pee(this.a,(lke(),hke)));return;case 5:!this.a&&(this.a=new See(this,0));Aie(pee(this.a,(lke(),jke)));return;case 6:!this.a&&(this.a=new See(this,0));Aie(pee(this.a,(lke(),kke)));return;}Lsd(this,a-yWd((lke(),fke)),tWd((this.j&2)==0?fke:(!this.k&&(this.k=new dSd),this.k).Lk(),a))};_.Ib=function Ske(){var a;if((this.j&4)!=0)return jtd(this);a=new Zgb(jtd(this));a.a+=' (mixed: ';Tgb(a,this.a);a.a+=')';return a.a};var jbb=zeb(fJe,'XMLTypeDocumentRootImpl',673);mdb(1990,710,{109:1,94:1,93:1,469:1,158:1,57:1,114:1,52:1,100:1,161:1,117:1,118:1,2084:1},ple);_.oi=function qle(a,b){switch(a.fk()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return b==null?null:qdb(b);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return OD(b);case 6:return Zke(JD(b,195));case 12:case 47:case 49:case 11:return Axd(this,a,b);case 13:return b==null?null:Fhb(JD(b,247));case 15:case 14:return b==null?null:$ke(Reb(MD(b)));case 17:return _ke((lke(),b));case 18:return _ke(b);case 21:case 20:return b==null?null:ale(JD(b,164).a);case 27:return ble(JD(b,195));case 30:return cle((lke(),JD(b,16)));case 31:return cle(JD(b,16));case 40:return fle((lke(),b));case 42:return dle((lke(),b));case 43:return dle(b);case 59:case 48:return ele((lke(),b));default:throw Icb(new hfb(PFe+a.ve()+QFe));}};_.pi=function rle(a){var b,c,d,e,f;switch(a.G==-1&&(a.G=(c=zVd(a),c?dXd(c.si(),a):-1)),a.G){case 0:return b=new mke,b;case 1:return d=new wke,d;case 2:return e=new Fke,e;case 3:return f=new Lke,f;default:throw Icb(new hfb(TFe+a.zb+QFe));}};_.qi=function sle(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;switch(a.fk()){case 5:case 52:case 4:return b;case 6:return gle(b);case 8:case 7:return b==null?null:Yke(b);case 9:return b==null?null:feb(Vdb((d=lse(b,true),d.length>0&&(RDb(0,d.length),d.charCodeAt(0)==43)?(RDb(1,d.length+1),d.substr(1)):d),-128,127)<<24>>24);case 10:return b==null?null:feb(Vdb((e=lse(b,true),e.length>0&&(RDb(0,e.length),e.charCodeAt(0)==43)?(RDb(1,e.length+1),e.substr(1)):e),-128,127)<<24>>24);case 11:return OD(Bxd(this,(lke(),Tje),b));case 12:return OD(Bxd(this,(lke(),Uje),b));case 13:return b==null?null:new Ihb(lse(b,true));case 15:case 14:return hle(b);case 16:return OD(Bxd(this,(lke(),Vje),b));case 17:return ile((lke(),b));case 18:return ile(b);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return lse(b,true);case 21:case 20:return jle(b);case 22:return OD(Bxd(this,(lke(),Wje),b));case 23:return OD(Bxd(this,(lke(),Xje),b));case 24:return OD(Bxd(this,(lke(),Yje),b));case 25:return OD(Bxd(this,(lke(),Zje),b));case 26:return OD(Bxd(this,(lke(),$je),b));case 27:return kle(b);case 30:return lle((lke(),b));case 31:return lle(b);case 32:return b==null?null:zfb(Vdb((k=lse(b,true),k.length>0&&(RDb(0,k.length),k.charCodeAt(0)==43)?(RDb(1,k.length+1),k.substr(1)):k),rue,lte));case 33:return b==null?null:new lib((l=lse(b,true),l.length>0&&(RDb(0,l.length),l.charCodeAt(0)==43)?(RDb(1,l.length+1),l.substr(1)):l));case 34:return b==null?null:zfb(Vdb((m=lse(b,true),m.length>0&&(RDb(0,m.length),m.charCodeAt(0)==43)?(RDb(1,m.length+1),m.substr(1)):m),rue,lte));case 36:return b==null?null:Ofb(Wdb((n=lse(b,true),n.length>0&&(RDb(0,n.length),n.charCodeAt(0)==43)?(RDb(1,n.length+1),n.substr(1)):n)));case 37:return b==null?null:Ofb(Wdb((o=lse(b,true),o.length>0&&(RDb(0,o.length),o.charCodeAt(0)==43)?(RDb(1,o.length+1),o.substr(1)):o)));case 40:return ole((lke(),b));case 42:return mle((lke(),b));case 43:return mle(b);case 44:return b==null?null:new lib((p=lse(b,true),p.length>0&&(RDb(0,p.length),p.charCodeAt(0)==43)?(RDb(1,p.length+1),p.substr(1)):p));case 45:return b==null?null:new lib((q=lse(b,true),q.length>0&&(RDb(0,q.length),q.charCodeAt(0)==43)?(RDb(1,q.length+1),q.substr(1)):q));case 46:return lse(b,false);case 47:return OD(Bxd(this,(lke(),_je),b));case 59:case 48:return nle((lke(),b));case 49:return OD(Bxd(this,(lke(),bke),b));case 50:return b==null?null:igb(Vdb((r=lse(b,true),r.length>0&&(RDb(0,r.length),r.charCodeAt(0)==43)?(RDb(1,r.length+1),r.substr(1)):r),vIe,32767)<<16>>16);case 51:return b==null?null:igb(Vdb((f=lse(b,true),f.length>0&&(RDb(0,f.length),f.charCodeAt(0)==43)?(RDb(1,f.length+1),f.substr(1)):f),vIe,32767)<<16>>16);case 53:return OD(Bxd(this,(lke(),eke),b));case 55:return b==null?null:igb(Vdb((g=lse(b,true),g.length>0&&(RDb(0,g.length),g.charCodeAt(0)==43)?(RDb(1,g.length+1),g.substr(1)):g),vIe,32767)<<16>>16);case 56:return b==null?null:igb(Vdb((h=lse(b,true),h.length>0&&(RDb(0,h.length),h.charCodeAt(0)==43)?(RDb(1,h.length+1),h.substr(1)):h),vIe,32767)<<16>>16);case 57:return b==null?null:Ofb(Wdb((i=lse(b,true),i.length>0&&(RDb(0,i.length),i.charCodeAt(0)==43)?(RDb(1,i.length+1),i.substr(1)):i)));case 58:return b==null?null:Ofb(Wdb((j=lse(b,true),j.length>0&&(RDb(0,j.length),j.charCodeAt(0)==43)?(RDb(1,j.length+1),j.substr(1)):j)));case 60:return b==null?null:zfb(Vdb((c=lse(b,true),c.length>0&&(RDb(0,c.length),c.charCodeAt(0)==43)?(RDb(1,c.length+1),c.substr(1)):c),rue,lte));case 61:return b==null?null:zfb(Vdb(lse(b,true),rue,lte));default:throw Icb(new hfb(PFe+a.ve()+QFe));}};var Tke,Uke,Vke,Wke;var kbb=zeb(fJe,'XMLTypeFactoryImpl',1990);mdb(582,184,{109:1,94:1,93:1,158:1,197:1,57:1,241:1,114:1,52:1,100:1,161:1,184:1,117:1,118:1,680:1,2006:1,582:1},zle);_.N=false;_.O=false;var ule=false;var jcb=zeb(fJe,'XMLTypePackageImpl',582);mdb(1923,1,{835:1},Cle);_.Ik=function Dle(){return pse(),ose};var vbb=zeb(fJe,'XMLTypePackageImpl/1',1923);mdb(1932,1,IIe,Ele);_.dk=function Fle(a){return VD(a)};_.ek=function Gle(a){return SC(hJ,Ote,2,a,6,1)};var lbb=zeb(fJe,'XMLTypePackageImpl/10',1932);mdb(1933,1,IIe,Hle);_.dk=function Ile(a){return VD(a)};_.ek=function Jle(a){return SC(hJ,Ote,2,a,6,1)};var mbb=zeb(fJe,'XMLTypePackageImpl/11',1933);mdb(1934,1,IIe,Kle);_.dk=function Lle(a){return VD(a)};_.ek=function Mle(a){return SC(hJ,Ote,2,a,6,1)};var nbb=zeb(fJe,'XMLTypePackageImpl/12',1934);mdb(1935,1,IIe,Nle);_.dk=function Ole(a){return TD(a)};_.ek=function Ple(a){return SC(LI,Ote,346,a,7,1)};var obb=zeb(fJe,'XMLTypePackageImpl/13',1935);mdb(1936,1,IIe,Qle);_.dk=function Rle(a){return VD(a)};_.ek=function Sle(a){return SC(hJ,Ote,2,a,6,1)};var pbb=zeb(fJe,'XMLTypePackageImpl/14',1936);mdb(1937,1,IIe,Tle);_.dk=function Ule(a){return RD(a,16)};_.ek=function Vle(a){return SC(HK,Twe,16,a,0,1)};var qbb=zeb(fJe,'XMLTypePackageImpl/15',1937);mdb(1938,1,IIe,Wle);_.dk=function Xle(a){return RD(a,16)};_.ek=function Yle(a){return SC(HK,Twe,16,a,0,1)};var rbb=zeb(fJe,'XMLTypePackageImpl/16',1938);mdb(1939,1,IIe,Zle);_.dk=function $le(a){return VD(a)};_.ek=function _le(a){return SC(hJ,Ote,2,a,6,1)};var sbb=zeb(fJe,'XMLTypePackageImpl/17',1939);mdb(1940,1,IIe,ame);_.dk=function bme(a){return RD(a,164)};_.ek=function cme(a){return SC(QI,Ote,164,a,0,1)};var tbb=zeb(fJe,'XMLTypePackageImpl/18',1940);mdb(1941,1,IIe,dme);_.dk=function eme(a){return VD(a)};_.ek=function fme(a){return SC(hJ,Ote,2,a,6,1)};var ubb=zeb(fJe,'XMLTypePackageImpl/19',1941);mdb(1924,1,IIe,gme);_.dk=function hme(a){return RD(a,841)};_.ek=function ime(a){return SC(bbb,rte,841,a,0,1)};var Gbb=zeb(fJe,'XMLTypePackageImpl/2',1924);mdb(1942,1,IIe,jme);_.dk=function kme(a){return VD(a)};_.ek=function lme(a){return SC(hJ,Ote,2,a,6,1)};var wbb=zeb(fJe,'XMLTypePackageImpl/20',1942);mdb(1943,1,IIe,mme);_.dk=function nme(a){return VD(a)};_.ek=function ome(a){return SC(hJ,Ote,2,a,6,1)};var xbb=zeb(fJe,'XMLTypePackageImpl/21',1943);mdb(1944,1,IIe,pme);_.dk=function qme(a){return VD(a)};_.ek=function rme(a){return SC(hJ,Ote,2,a,6,1)};var ybb=zeb(fJe,'XMLTypePackageImpl/22',1944);mdb(1945,1,IIe,sme);_.dk=function tme(a){return VD(a)};_.ek=function ume(a){return SC(hJ,Ote,2,a,6,1)};var zbb=zeb(fJe,'XMLTypePackageImpl/23',1945);mdb(1946,1,IIe,vme);_.dk=function wme(a){return RD(a,195)};_.ek=function xme(a){return SC($D,Ote,195,a,0,2)};var Abb=zeb(fJe,'XMLTypePackageImpl/24',1946);mdb(1947,1,IIe,yme);_.dk=function zme(a){return VD(a)};_.ek=function Ame(a){return SC(hJ,Ote,2,a,6,1)};var Bbb=zeb(fJe,'XMLTypePackageImpl/25',1947);mdb(1948,1,IIe,Bme);_.dk=function Cme(a){return VD(a)};_.ek=function Dme(a){return SC(hJ,Ote,2,a,6,1)};var Cbb=zeb(fJe,'XMLTypePackageImpl/26',1948);mdb(1949,1,IIe,Eme);_.dk=function Fme(a){return RD(a,16)};_.ek=function Gme(a){return SC(HK,Twe,16,a,0,1)};var Dbb=zeb(fJe,'XMLTypePackageImpl/27',1949);mdb(1950,1,IIe,Hme);_.dk=function Ime(a){return RD(a,16)};_.ek=function Jme(a){return SC(HK,Twe,16,a,0,1)};var Ebb=zeb(fJe,'XMLTypePackageImpl/28',1950);mdb(1951,1,IIe,Kme);_.dk=function Lme(a){return VD(a)};_.ek=function Mme(a){return SC(hJ,Ote,2,a,6,1)};var Fbb=zeb(fJe,'XMLTypePackageImpl/29',1951);mdb(1925,1,IIe,Nme);_.dk=function Ome(a){return RD(a,671)};_.ek=function Pme(a){return SC(dbb,rte,2081,a,0,1)};var Rbb=zeb(fJe,'XMLTypePackageImpl/3',1925);mdb(1952,1,IIe,Qme);_.dk=function Rme(a){return RD(a,15)};_.ek=function Sme(a){return SC(UI,Ote,15,a,0,1)};var Hbb=zeb(fJe,'XMLTypePackageImpl/30',1952);mdb(1953,1,IIe,Tme);_.dk=function Ume(a){return VD(a)};_.ek=function Vme(a){return SC(hJ,Ote,2,a,6,1)};var Ibb=zeb(fJe,'XMLTypePackageImpl/31',1953);mdb(1954,1,IIe,Wme);_.dk=function Xme(a){return RD(a,190)};_.ek=function Yme(a){return SC(XI,Ote,190,a,0,1)};var Jbb=zeb(fJe,'XMLTypePackageImpl/32',1954);mdb(1955,1,IIe,Zme);_.dk=function $me(a){return VD(a)};_.ek=function _me(a){return SC(hJ,Ote,2,a,6,1)};var Kbb=zeb(fJe,'XMLTypePackageImpl/33',1955);mdb(1956,1,IIe,ane);_.dk=function bne(a){return VD(a)};_.ek=function cne(a){return SC(hJ,Ote,2,a,6,1)};var Lbb=zeb(fJe,'XMLTypePackageImpl/34',1956);mdb(1957,1,IIe,dne);_.dk=function ene(a){return VD(a)};_.ek=function fne(a){return SC(hJ,Ote,2,a,6,1)};var Mbb=zeb(fJe,'XMLTypePackageImpl/35',1957);mdb(1958,1,IIe,gne);_.dk=function hne(a){return VD(a)};_.ek=function ine(a){return SC(hJ,Ote,2,a,6,1)};var Nbb=zeb(fJe,'XMLTypePackageImpl/36',1958);mdb(1959,1,IIe,jne);_.dk=function kne(a){return RD(a,16)};_.ek=function lne(a){return SC(HK,Twe,16,a,0,1)};var Obb=zeb(fJe,'XMLTypePackageImpl/37',1959);mdb(1960,1,IIe,mne);_.dk=function nne(a){return RD(a,16)};_.ek=function one(a){return SC(HK,Twe,16,a,0,1)};var Pbb=zeb(fJe,'XMLTypePackageImpl/38',1960);mdb(1961,1,IIe,pne);_.dk=function qne(a){return VD(a)};_.ek=function rne(a){return SC(hJ,Ote,2,a,6,1)};var Qbb=zeb(fJe,'XMLTypePackageImpl/39',1961);mdb(1926,1,IIe,sne);_.dk=function tne(a){return RD(a,672)};_.ek=function une(a){return SC(ebb,rte,2082,a,0,1)};var acb=zeb(fJe,'XMLTypePackageImpl/4',1926);mdb(1962,1,IIe,vne);_.dk=function wne(a){return VD(a)};_.ek=function xne(a){return SC(hJ,Ote,2,a,6,1)};var Sbb=zeb(fJe,'XMLTypePackageImpl/40',1962);mdb(1963,1,IIe,yne);_.dk=function zne(a){return VD(a)};_.ek=function Ane(a){return SC(hJ,Ote,2,a,6,1)};var Tbb=zeb(fJe,'XMLTypePackageImpl/41',1963);mdb(1964,1,IIe,Bne);_.dk=function Cne(a){return VD(a)};_.ek=function Dne(a){return SC(hJ,Ote,2,a,6,1)};var Ubb=zeb(fJe,'XMLTypePackageImpl/42',1964);mdb(1965,1,IIe,Ene);_.dk=function Fne(a){return VD(a)};_.ek=function Gne(a){return SC(hJ,Ote,2,a,6,1)};var Vbb=zeb(fJe,'XMLTypePackageImpl/43',1965);mdb(1966,1,IIe,Hne);_.dk=function Ine(a){return VD(a)};_.ek=function Jne(a){return SC(hJ,Ote,2,a,6,1)};var Wbb=zeb(fJe,'XMLTypePackageImpl/44',1966);mdb(1967,1,IIe,Kne);_.dk=function Lne(a){return RD(a,191)};_.ek=function Mne(a){return SC(cJ,Ote,191,a,0,1)};var Xbb=zeb(fJe,'XMLTypePackageImpl/45',1967);mdb(1968,1,IIe,Nne);_.dk=function One(a){return VD(a)};_.ek=function Pne(a){return SC(hJ,Ote,2,a,6,1)};var Ybb=zeb(fJe,'XMLTypePackageImpl/46',1968);mdb(1969,1,IIe,Qne);_.dk=function Rne(a){return VD(a)};_.ek=function Sne(a){return SC(hJ,Ote,2,a,6,1)};var Zbb=zeb(fJe,'XMLTypePackageImpl/47',1969);mdb(1970,1,IIe,Tne);_.dk=function Une(a){return VD(a)};_.ek=function Vne(a){return SC(hJ,Ote,2,a,6,1)};var $bb=zeb(fJe,'XMLTypePackageImpl/48',1970);mdb(1971,1,IIe,Wne);_.dk=function Xne(a){return RD(a,191)};_.ek=function Yne(a){return SC(cJ,Ote,191,a,0,1)};var _bb=zeb(fJe,'XMLTypePackageImpl/49',1971);mdb(1927,1,IIe,Zne);_.dk=function $ne(a){return RD(a,673)};_.ek=function _ne(a){return SC(fbb,rte,2083,a,0,1)};var ecb=zeb(fJe,'XMLTypePackageImpl/5',1927);mdb(1972,1,IIe,aoe);_.dk=function boe(a){return RD(a,190)};_.ek=function coe(a){return SC(XI,Ote,190,a,0,1)};var bcb=zeb(fJe,'XMLTypePackageImpl/50',1972);mdb(1973,1,IIe,doe);_.dk=function eoe(a){return VD(a)};_.ek=function foe(a){return SC(hJ,Ote,2,a,6,1)};var ccb=zeb(fJe,'XMLTypePackageImpl/51',1973);mdb(1974,1,IIe,goe);_.dk=function hoe(a){return RD(a,15)};_.ek=function ioe(a){return SC(UI,Ote,15,a,0,1)};var dcb=zeb(fJe,'XMLTypePackageImpl/52',1974);mdb(1928,1,IIe,joe);_.dk=function koe(a){return VD(a)};_.ek=function loe(a){return SC(hJ,Ote,2,a,6,1)};var fcb=zeb(fJe,'XMLTypePackageImpl/6',1928);mdb(1929,1,IIe,moe);_.dk=function noe(a){return RD(a,195)};_.ek=function ooe(a){return SC($D,Ote,195,a,0,2)};var gcb=zeb(fJe,'XMLTypePackageImpl/7',1929);mdb(1930,1,IIe,poe);_.dk=function qoe(a){return SD(a)};_.ek=function roe(a){return SC(GI,Ote,473,a,8,1)};var hcb=zeb(fJe,'XMLTypePackageImpl/8',1930);mdb(1931,1,IIe,soe);_.dk=function toe(a){return RD(a,221)};_.ek=function uoe(a){return SC(HI,Ote,221,a,0,1)};var icb=zeb(fJe,'XMLTypePackageImpl/9',1931);var voe,woe;var Coe,Doe;var Hoe;mdb(53,63,tue,Joe);var kcb=zeb(FJe,'RegEx/ParseException',53);mdb(820,1,{},Roe);_._l=function Soe(a){return ac*16)throw Icb(new Joe(VGd((Fbe(),nHe))));c=c*16+e}while(true);if(this.a!=125)throw Icb(new Joe(VGd((Fbe(),oHe))));if(c>GJe)throw Icb(new Joe(VGd((Fbe(),pHe))));a=c}else{e=0;if(this.c!=0||(e=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));c=e;Koe(this);if(this.c!=0||(e=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));c=c*16+e;a=c}break;case 117:d=0;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=d;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=b*16+d;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=b*16+d;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=b*16+d;a=b;break;case 118:Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=d;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=b*16+d;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=b*16+d;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=b*16+d;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=b*16+d;Koe(this);if(this.c!=0||(d=Voe(this.a))<0)throw Icb(new Joe(VGd((Fbe(),mHe))));b=b*16+d;if(b>GJe)throw Icb(new Joe(VGd((Fbe(),'parser.descappe.4'))));a=b;break;case 65:case 90:case 122:throw Icb(new Joe(VGd((Fbe(),qHe))));}return a};_.bm=function Uoe(a){var b,c;switch(a){case 100:c=(this.e&32)==32?fre('Nd',true):(Tqe(),zqe);break;case 68:c=(this.e&32)==32?fre('Nd',false):(Tqe(),Gqe);break;case 119:c=(this.e&32)==32?fre('IsWord',true):(Tqe(),Pqe);break;case 87:c=(this.e&32)==32?fre('IsWord',false):(Tqe(),Iqe);break;case 115:c=(this.e&32)==32?fre('IsSpace',true):(Tqe(),Kqe);break;case 83:c=(this.e&32)==32?fre('IsSpace',false):(Tqe(),Hqe);break;default:throw Icb(new qz((b=a,HJe+b.toString(16))));}return c};_.cm=function Woe(a){var b,c,d,e,f,g,h,i,j,k,l,m;this.b=1;Koe(this);b=null;if(this.c==0&&this.a==94){Koe(this);if(a){k=(Tqe(),Tqe(),++Sqe,new vre(5))}else{b=(Tqe(),Tqe(),++Sqe,new vre(4));pre(b,0,GJe);k=(null,++Sqe,new vre(4))}}else{k=(Tqe(),Tqe(),++Sqe,new vre(4))}e=true;while((m=this.c)!=1){if(m==0&&this.a==93&&!e)break;e=false;c=this.a;d=false;if(m==10){switch(c){case 100:case 68:case 119:case 87:case 115:case 83:sre(k,this.bm(c));d=true;break;case 105:case 73:case 99:case 67:c=this.sm(k,c);c<0&&(d=true);break;case 112:case 80:l=Qoe(this,c);if(!l)throw Icb(new Joe(VGd((Fbe(),bHe))));sre(k,l);d=true;break;default:c=this.am();}}else if(m==20){g=wgb(this.i,58,this.d);if(g<0)throw Icb(new Joe(VGd((Fbe(),cHe))));h=true;if(pgb(this.i,this.d)==94){++this.d;h=false}f=Ggb(this.i,this.d,g);i=gre(f,h,(this.e&512)==512);if(!i)throw Icb(new Joe(VGd((Fbe(),eHe))));sre(k,i);d=true;if(g+1>=this.j||pgb(this.i,g+1)!=93)throw Icb(new Joe(VGd((Fbe(),cHe))));this.d=g+2}Koe(this);if(!d){if(this.c!=0||this.a!=45){pre(k,c,c)}else{Koe(this);if((m=this.c)==1)throw Icb(new Joe(VGd((Fbe(),dHe))));if(m==0&&this.a==93){pre(k,c,c);pre(k,45,45)}else{j=this.a;m==10&&(j=this.am());Koe(this);pre(k,c,j)}}}(this.e&GHe)==GHe&&this.c==0&&this.a==44&&Koe(this)}if(this.c==1)throw Icb(new Joe(VGd((Fbe(),dHe))));if(b){ure(b,k);k=b}tre(k);qre(k);this.b=0;Koe(this);return k};_.dm=function Xoe(){var a,b,c,d;c=this.cm(false);while((d=this.c)!=7){a=this.a;if(d==0&&(a==45||a==38)||d==4){Koe(this);if(this.c!=9)throw Icb(new Joe(VGd((Fbe(),jHe))));b=this.cm(false);if(d==4)sre(c,b);else if(a==45)ure(c,b);else if(a==38)rre(c,b);else throw Icb(new qz('ASSERT'))}else{throw Icb(new Joe(VGd((Fbe(),kHe))))}}Koe(this);return c};_.em=function Yoe(){var a,b;a=this.a-48;b=(Tqe(),Tqe(),++Sqe,new cse(12,null,a));!this.g&&(this.g=new kxb);hxb(this.g,new zre(a));Koe(this);return b};_.fm=function Zoe(){Koe(this);return Tqe(),Lqe};_.gm=function $oe(){Koe(this);return Tqe(),Jqe};_.hm=function _oe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.im=function ape(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.jm=function bpe(){Koe(this);return dre()};_.km=function cpe(){Koe(this);return Tqe(),Nqe};_.lm=function dpe(){Koe(this);return Tqe(),Qqe};_.mm=function epe(){var a;if(this.d>=this.j||((a=pgb(this.i,this.d++))&65504)!=64)throw Icb(new Joe(VGd((Fbe(),ZGe))));Koe(this);return Tqe(),Tqe(),++Sqe,new Fre(0,a-64)};_.nm=function fpe(){Koe(this);return ere()};_.om=function gpe(){Koe(this);return Tqe(),Rqe};_.pm=function hpe(){var a;a=(Tqe(),Tqe(),++Sqe,new Fre(0,105));Koe(this);return a};_.qm=function ipe(){Koe(this);return Tqe(),Oqe};_.rm=function jpe(){Koe(this);return Tqe(),Mqe};_.sm=function kpe(a,b){return this.am()};_.tm=function lpe(){Koe(this);return Tqe(),Eqe};_.um=function mpe(){var a,b,c,d,e;if(this.d+1>=this.j)throw Icb(new Joe(VGd((Fbe(),WGe))));d=-1;b=null;a=pgb(this.i,this.d);if(49<=a&&a<=57){d=a-48;!this.g&&(this.g=new kxb);hxb(this.g,new zre(d));++this.d;if(pgb(this.i,this.d)!=41)throw Icb(new Joe(VGd((Fbe(),TGe))));++this.d}else{a==63&&--this.d;Koe(this);b=Noe(this);switch(b.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));break;default:throw Icb(new Joe(VGd((Fbe(),XGe))));}}Koe(this);e=Ooe(this);c=null;if(e.e==2){if(e.Nm()!=2)throw Icb(new Joe(VGd((Fbe(),YGe))));c=e.Jm(1);e=e.Jm(0)}if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return Tqe(),Tqe(),++Sqe,new Sre(d,b,e,c)};_.vm=function npe(){Koe(this);return Tqe(),Fqe};_.wm=function ope(){var a;Koe(this);a=Zqe(24,Ooe(this));if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return a};_.xm=function ppe(){var a;Koe(this);a=Zqe(20,Ooe(this));if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return a};_.ym=function qpe(){var a;Koe(this);a=Zqe(22,Ooe(this));if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return a};_.zm=function rpe(){var a,b,c,d,e;a=0;c=0;b=-1;while(this.d=this.j)throw Icb(new Joe(VGd((Fbe(),UGe))));if(b==45){++this.d;while(this.d=this.j)throw Icb(new Joe(VGd((Fbe(),UGe))))}if(b==58){++this.d;Koe(this);d=$qe(Ooe(this),a,c);if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this)}else if(b==41){++this.d;Koe(this);d=$qe(Ooe(this),a,c)}else throw Icb(new Joe(VGd((Fbe(),VGe))));return d};_.Am=function spe(){var a;Koe(this);a=Zqe(21,Ooe(this));if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return a};_.Bm=function tpe(){var a;Koe(this);a=Zqe(23,Ooe(this));if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return a};_.Cm=function upe(){var a,b;Koe(this);a=this.f++;b=_qe(Ooe(this),a);if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return b};_.Dm=function vpe(){var a;Koe(this);a=_qe(Ooe(this),0);if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return a};_.Em=function wpe(a){Koe(this);if(this.c==5){Koe(this);return Yqe(a,(Tqe(),Tqe(),++Sqe,new Ire(9,a)))}else return Yqe(a,(Tqe(),Tqe(),++Sqe,new Ire(3,a)))};_.Fm=function xpe(a){var b;Koe(this);b=(Tqe(),Tqe(),++Sqe,new gse(2));if(this.c==5){Koe(this);fse(b,(null,Cqe));fse(b,a)}else{fse(b,a);fse(b,(null,Cqe))}return b};_.Gm=function ype(a){Koe(this);if(this.c==5){Koe(this);return Tqe(),Tqe(),++Sqe,new Ire(9,a)}else return Tqe(),Tqe(),++Sqe,new Ire(3,a)};_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;_.f=1;_.g=null;_.j=0;var ocb=zeb(FJe,'RegEx/RegexParser',820);mdb(1910,820,{},Epe);_._l=function Fpe(a){return false};_.am=function Gpe(){return Bpe(this)};_.bm=function Ipe(a){return Cpe(a)};_.cm=function Jpe(a){return Dpe(this)};_.dm=function Kpe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.em=function Lpe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.fm=function Mpe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.gm=function Npe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.hm=function Ope(){Koe(this);return Cpe(67)};_.im=function Ppe(){Koe(this);return Cpe(73)};_.jm=function Qpe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.km=function Rpe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.lm=function Spe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.mm=function Tpe(){Koe(this);return Cpe(99)};_.nm=function Upe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.om=function Vpe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.pm=function Wpe(){Koe(this);return Cpe(105)};_.qm=function Xpe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.rm=function Ype(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.sm=function Zpe(a,b){return sre(a,Cpe(b)),-1};_.tm=function $pe(){Koe(this);return Tqe(),Tqe(),++Sqe,new Fre(0,94)};_.um=function _pe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.vm=function aqe(){Koe(this);return Tqe(),Tqe(),++Sqe,new Fre(0,36)};_.wm=function bqe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.xm=function cqe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.ym=function dqe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.zm=function eqe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.Am=function fqe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.Bm=function gqe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.Cm=function hqe(){var a;Koe(this);a=_qe(Ooe(this),0);if(this.c!=7)throw Icb(new Joe(VGd((Fbe(),TGe))));Koe(this);return a};_.Dm=function iqe(){throw Icb(new Joe(VGd((Fbe(),rHe))))};_.Em=function jqe(a){Koe(this);return Yqe(a,(Tqe(),Tqe(),++Sqe,new Ire(3,a)))};_.Fm=function kqe(a){var b;Koe(this);b=(Tqe(),Tqe(),++Sqe,new gse(2));fse(b,a);fse(b,(null,Cqe));return b};_.Gm=function lqe(a){Koe(this);return Tqe(),Tqe(),++Sqe,new Ire(3,a)};var zpe=null,Ape=null;var lcb=zeb(FJe,'RegEx/ParserForXMLSchema',1910);mdb(121,1,TJe,Uqe);_.Hm=function Vqe(a){throw Icb(new qz('Not supported.'))};_.Im=function bre(){return -1};_.Jm=function cre(a){return null};_.Km=function hre(){return null};_.Lm=function kre(a){};_.Mm=function lre(a){};_.Nm=function mre(){return 0};_.Ib=function nre(){return this.Om(0)};_.Om=function ore(a){return this.e==11?'.':''};_.e=0;var tqe,uqe,vqe,wqe,xqe,yqe=null,zqe,Aqe=null,Bqe,Cqe,Dqe=null,Eqe,Fqe,Gqe,Hqe,Iqe,Jqe,Kqe,Lqe,Mqe,Nqe,Oqe,Pqe,Qqe,Rqe,Sqe=0;var ycb=zeb(FJe,'RegEx/Token',121);mdb(137,121,{3:1,137:1,121:1},vre);_.Om=function yre(a){var b,c,d;if(this.e==4){if(this==Bqe)c='.';else if(this==zqe)c='\\d';else if(this==Pqe)c='\\w';else if(this==Kqe)c='\\s';else{d=new Xgb;d.a+='[';for(b=0;b0&&(d.a+=',',d);if(this.b[b]===this.b[b+1]){Ugb(d,xre(this.b[b]))}else{Ugb(d,xre(this.b[b]));d.a+='-';Ugb(d,xre(this.b[b+1]))}}d.a+=']';c=d.a}}else{if(this==Gqe)c='\\D';else if(this==Iqe)c='\\W';else if(this==Hqe)c='\\S';else{d=new Xgb;d.a+='[^';for(b=0;b0&&(d.a+=',',d);if(this.b[b]===this.b[b+1]){Ugb(d,xre(this.b[b]))}else{Ugb(d,xre(this.b[b]));d.a+='-';Ugb(d,xre(this.b[b+1]))}}d.a+=']';c=d.a}}return c};_.a=false;_.c=false;var mcb=zeb(FJe,'RegEx/RangeToken',137);mdb(580,1,{580:1},zre);_.a=0;var ncb=zeb(FJe,'RegEx/RegexParser/ReferencePosition',580);mdb(579,1,{3:1,579:1},Bre);_.Fb=function Cre(a){var b;if(a==null)return false;if(!RD(a,579))return false;b=JD(a,579);return sgb(this.b,b.b)&&this.a==b.a};_.Hb=function Dre(){return vgb(this.b+'/'+nqe(this.a))};_.Ib=function Ere(){return this.c.Om(this.a)};_.a=0;var pcb=zeb(FJe,'RegEx/RegularExpression',579);mdb(228,121,TJe,Fre);_.Im=function Gre(){return this.a};_.Om=function Hre(a){var b,c,d;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:d='\\'+PD(this.a&Bue);break;case 12:d='\\f';break;case 10:d='\\n';break;case 13:d='\\r';break;case 9:d='\\t';break;case 27:d='\\e';break;default:if(this.a>=tve){c=(b=this.a>>>0,'0'+b.toString(16));d='\\v'+Ggb(c,c.length-6,c.length)}else d=''+PD(this.a&Bue);}break;case 8:this==Eqe||this==Fqe?(d=''+PD(this.a&Bue)):(d='\\'+PD(this.a&Bue));break;default:d=null;}return d};_.a=0;var qcb=zeb(FJe,'RegEx/Token/CharToken',228);mdb(322,121,TJe,Ire);_.Jm=function Jre(a){return this.a};_.Lm=function Kre(a){this.b=a};_.Mm=function Lre(a){this.c=a};_.Nm=function Mre(){return 1};_.Om=function Nre(a){var b;if(this.e==3){if(this.c<0&&this.b<0){b=this.a.Om(a)+'*'}else if(this.c==this.b){b=this.a.Om(a)+'{'+this.c+'}'}else if(this.c>=0&&this.b>=0){b=this.a.Om(a)+'{'+this.c+','+this.b+'}'}else if(this.c>=0&&this.b<0){b=this.a.Om(a)+'{'+this.c+',}'}else throw Icb(new qz('Token#toString(): CLOSURE '+this.c+pte+this.b))}else{if(this.c<0&&this.b<0){b=this.a.Om(a)+'*?'}else if(this.c==this.b){b=this.a.Om(a)+'{'+this.c+'}?'}else if(this.c>=0&&this.b>=0){b=this.a.Om(a)+'{'+this.c+','+this.b+'}?'}else if(this.c>=0&&this.b<0){b=this.a.Om(a)+'{'+this.c+',}?'}else throw Icb(new qz('Token#toString(): NONGREEDYCLOSURE '+this.c+pte+this.b))}return b};_.b=0;_.c=0;var rcb=zeb(FJe,'RegEx/Token/ClosureToken',322);mdb(821,121,TJe,Ore);_.Jm=function Pre(a){return a==0?this.a:this.b};_.Nm=function Qre(){return 2};_.Om=function Rre(a){var b;this.b.e==3&&this.b.Jm(0)==this.a?(b=this.a.Om(a)+'+'):this.b.e==9&&this.b.Jm(0)==this.a?(b=this.a.Om(a)+'+?'):(b=this.a.Om(a)+(''+this.b.Om(a)));return b};var scb=zeb(FJe,'RegEx/Token/ConcatToken',821);mdb(1908,121,TJe,Sre);_.Jm=function Tre(a){if(a==0)return this.d;if(a==1)return this.b;throw Icb(new qz('Internal Error: '+a))};_.Nm=function Ure(){return !this.b?1:2};_.Om=function Vre(a){var b;this.c>0?(b='(?('+this.c+')'):this.a.e==8?(b='(?('+this.a+')'):(b='(?'+this.a);!this.b?(b+=this.d+')'):(b+=this.d+'|'+this.b+')');return b};_.c=0;var tcb=zeb(FJe,'RegEx/Token/ConditionToken',1908);mdb(1909,121,TJe,Wre);_.Jm=function Xre(a){return this.b};_.Nm=function Yre(){return 1};_.Om=function Zre(a){return '(?'+(this.a==0?'':nqe(this.a))+(this.c==0?'':nqe(this.c))+':'+this.b.Om(a)+')'};_.a=0;_.c=0;var ucb=zeb(FJe,'RegEx/Token/ModifierToken',1909);mdb(822,121,TJe,$re);_.Jm=function _re(a){return this.a};_.Nm=function ase(){return 1};_.Om=function bse(a){var b;b=null;switch(this.e){case 6:this.b==0?(b='(?:'+this.a.Om(a)+')'):(b='('+this.a.Om(a)+')');break;case 20:b='(?='+this.a.Om(a)+')';break;case 21:b='(?!'+this.a.Om(a)+')';break;case 22:b='(?<='+this.a.Om(a)+')';break;case 23:b='(?'+this.a.Om(a)+')';}return b};_.b=0;var vcb=zeb(FJe,'RegEx/Token/ParenToken',822);mdb(517,121,{3:1,121:1,517:1},cse);_.Km=function dse(){return this.b};_.Om=function ese(a){return this.e==12?'\\'+this.a:rqe(this.b)};_.a=0;var wcb=zeb(FJe,'RegEx/Token/StringToken',517);mdb(466,121,TJe,gse);_.Hm=function hse(a){fse(this,a)};_.Jm=function ise(a){return JD(ixb(this.a,a),121)};_.Nm=function jse(){return !this.a?0:this.a.a.c.length};_.Om=function kse(a){var b,c,d,e,f;if(this.e==1){if(this.a.a.c.length==2){b=JD(ixb(this.a,0),121);c=JD(ixb(this.a,1),121);c.e==3&&c.Jm(0)==b?(e=b.Om(a)+'+'):c.e==9&&c.Jm(0)==b?(e=b.Om(a)+'+?'):(e=b.Om(a)+(''+c.Om(a)))}else{f=new Xgb;for(d=0;d=this.c.b:this.a<=this.c.b};_.Sb=function Vse(){return this.b>0};_.Tb=function Xse(){return this.b};_.Vb=function Zse(){return this.b-1};_.Qb=function $se(){throw Icb(new rhb(ZJe))};_.a=0;_.b=0;var Ccb=zeb(WJe,'ExclusiveRange/RangeIterator',259);var _D=Ceb($He,'C');var cE=Ceb(bIe,'I');var Fcb=Ceb(hte,'Z');var dE=Ceb(cIe,'J');var $D=Ceb(ZHe,'B');var aE=Ceb(_He,'D');var bE=Ceb(aIe,'F');var Ecb=Ceb(dIe,'S');var j2=Beb('org.eclipse.elk.core.labels','ILabelManager');var _5=Beb(mGe,'DiagnosticChain');var H9=Beb(KIe,'ResourceSet');var g6=zeb(mGe,'InvocationTargetException',null);var fte=(Iz(),Lz);var gwtOnLoad=gwtOnLoad=jdb;hdb(sdb);kdb('permProps',[[['locale','default'],[$Je,'gecko1_8']],[['locale','default'],[$Je,'safari']]]); +// -------------- RUN GWT INITIALIZATION CODE -------------- +gwtOnLoad(null, 'elk', null); + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],3:[function(require,module,exports){ +"use strict"; + +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } +/******************************************************************************* + * Copyright (c) 2021 Kiel University and others. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +var ELK = require('./elk-api.js')["default"]; +var ELKNode = /*#__PURE__*/function (_ELK) { + function ELKNode() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + _classCallCheck(this, ELKNode); + var optionsClone = Object.assign({}, options); + var workerThreadsExist = false; + try { + require.resolve('web-worker'); + workerThreadsExist = true; + } catch (e) {} + + // user requested a worker + if (options.workerUrl) { + if (workerThreadsExist) { + var Worker = require('web-worker'); + optionsClone.workerFactory = function (url) { + return new Worker(url); + }; + } else { + console.warn("Web worker requested but 'web-worker' package not installed. \nConsider installing the package or pass your own 'workerFactory' to ELK's constructor.\n... Falling back to non-web worker version."); + } + } + + // unless no other workerFactory is registered, use the fake worker + if (!optionsClone.workerFactory) { + var _require = require('./elk-worker.min.js'), + _Worker = _require.Worker; + optionsClone.workerFactory = function (url) { + return new _Worker(url); + }; + } + return _callSuper(this, ELKNode, [optionsClone]); + } + _inherits(ELKNode, _ELK); + return _createClass(ELKNode); +}(ELK); +Object.defineProperty(module.exports, "__esModule", { + value: true +}); +module.exports = ELKNode; +ELKNode["default"] = ELKNode; +},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(require,module,exports){ +'use strict'; + +// src/browser/index.js +var browser_default = typeof Worker < "u" ? Worker : void 0; + +module.exports = browser_default; + +},{}]},{},[3])(3) +}); diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/lib/layout-base.js b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/layout-base.js new file mode 100644 index 0000000..ebbf2c6 --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/lib/layout-base.js @@ -0,0 +1,5230 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["layoutBase"] = factory(); + else + root["layoutBase"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 28); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function LayoutConstants() {} + +/** + * Layout Quality: 0:draft, 1:default, 2:proof + */ +LayoutConstants.QUALITY = 1; + +/** + * Default parameters + */ +LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false; +LayoutConstants.DEFAULT_INCREMENTAL = false; +LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true; +LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false; +LayoutConstants.DEFAULT_ANIMATION_PERIOD = 50; +LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false; + +// ----------------------------------------------------------------------------- +// Section: General other constants +// ----------------------------------------------------------------------------- +/* + * Margins of a graph to be applied on bouding rectangle of its contents. We + * assume margins on all four sides to be uniform. + */ +LayoutConstants.DEFAULT_GRAPH_MARGIN = 15; + +/* + * Whether to consider labels in node dimensions or not + */ +LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false; + +/* + * Default dimension of a non-compound node. + */ +LayoutConstants.SIMPLE_NODE_SIZE = 40; + +/* + * Default dimension of a non-compound node. + */ +LayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2; + +/* + * Empty compound node size. When a compound node is empty, its both + * dimensions should be of this value. + */ +LayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40; + +/* + * Minimum length that an edge should take during layout + */ +LayoutConstants.MIN_EDGE_LENGTH = 1; + +/* + * World boundaries that layout operates on + */ +LayoutConstants.WORLD_BOUNDARY = 1000000; + +/* + * World boundaries that random positioning can be performed with + */ +LayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000; + +/* + * Coordinates of the world center + */ +LayoutConstants.WORLD_CENTER_X = 1200; +LayoutConstants.WORLD_CENTER_Y = 900; + +module.exports = LayoutConstants; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LGraphObject = __webpack_require__(2); +var IGeometry = __webpack_require__(8); +var IMath = __webpack_require__(9); + +function LEdge(source, target, vEdge) { + LGraphObject.call(this, vEdge); + + this.isOverlapingSourceAndTarget = false; + this.vGraphObject = vEdge; + this.bendpoints = []; + this.source = source; + this.target = target; +} + +LEdge.prototype = Object.create(LGraphObject.prototype); + +for (var prop in LGraphObject) { + LEdge[prop] = LGraphObject[prop]; +} + +LEdge.prototype.getSource = function () { + return this.source; +}; + +LEdge.prototype.getTarget = function () { + return this.target; +}; + +LEdge.prototype.isInterGraph = function () { + return this.isInterGraph; +}; + +LEdge.prototype.getLength = function () { + return this.length; +}; + +LEdge.prototype.isOverlapingSourceAndTarget = function () { + return this.isOverlapingSourceAndTarget; +}; + +LEdge.prototype.getBendpoints = function () { + return this.bendpoints; +}; + +LEdge.prototype.getLca = function () { + return this.lca; +}; + +LEdge.prototype.getSourceInLca = function () { + return this.sourceInLca; +}; + +LEdge.prototype.getTargetInLca = function () { + return this.targetInLca; +}; + +LEdge.prototype.getOtherEnd = function (node) { + if (this.source === node) { + return this.target; + } else if (this.target === node) { + return this.source; + } else { + throw "Node is not incident with this edge"; + } +}; + +LEdge.prototype.getOtherEndInGraph = function (node, graph) { + var otherEnd = this.getOtherEnd(node); + var root = graph.getGraphManager().getRoot(); + + while (true) { + if (otherEnd.getOwner() == graph) { + return otherEnd; + } + + if (otherEnd.getOwner() == root) { + break; + } + + otherEnd = otherEnd.getOwner().getParent(); + } + + return null; +}; + +LEdge.prototype.updateLength = function () { + var clipPointCoordinates = new Array(4); + + this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates); + + if (!this.isOverlapingSourceAndTarget) { + this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2]; + this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3]; + + if (Math.abs(this.lengthX) < 1.0) { + this.lengthX = IMath.sign(this.lengthX); + } + + if (Math.abs(this.lengthY) < 1.0) { + this.lengthY = IMath.sign(this.lengthY); + } + + this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); + } +}; + +LEdge.prototype.updateLengthSimple = function () { + this.lengthX = this.target.getCenterX() - this.source.getCenterX(); + this.lengthY = this.target.getCenterY() - this.source.getCenterY(); + + if (Math.abs(this.lengthX) < 1.0) { + this.lengthX = IMath.sign(this.lengthX); + } + + if (Math.abs(this.lengthY) < 1.0) { + this.lengthY = IMath.sign(this.lengthY); + } + + this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); +}; + +module.exports = LEdge; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function LGraphObject(vGraphObject) { + this.vGraphObject = vGraphObject; +} + +module.exports = LGraphObject; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LGraphObject = __webpack_require__(2); +var Integer = __webpack_require__(10); +var RectangleD = __webpack_require__(13); +var LayoutConstants = __webpack_require__(0); +var RandomSeed = __webpack_require__(16); +var PointD = __webpack_require__(5); + +function LNode(gm, loc, size, vNode) { + //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode) + if (size == null && vNode == null) { + vNode = loc; + } + + LGraphObject.call(this, vNode); + + //Alternative constructor 2 : LNode(Layout layout, Object vNode) + if (gm.graphManager != null) gm = gm.graphManager; + + this.estimatedSize = Integer.MIN_VALUE; + this.inclusionTreeDepth = Integer.MAX_VALUE; + this.vGraphObject = vNode; + this.edges = []; + this.graphManager = gm; + + if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD(); +} + +LNode.prototype = Object.create(LGraphObject.prototype); +for (var prop in LGraphObject) { + LNode[prop] = LGraphObject[prop]; +} + +LNode.prototype.getEdges = function () { + return this.edges; +}; + +LNode.prototype.getChild = function () { + return this.child; +}; + +LNode.prototype.getOwner = function () { + // if (this.owner != null) { + // if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) { + // throw "assert failed"; + // } + // } + + return this.owner; +}; + +LNode.prototype.getWidth = function () { + return this.rect.width; +}; + +LNode.prototype.setWidth = function (width) { + this.rect.width = width; +}; + +LNode.prototype.getHeight = function () { + return this.rect.height; +}; + +LNode.prototype.setHeight = function (height) { + this.rect.height = height; +}; + +LNode.prototype.getCenterX = function () { + return this.rect.x + this.rect.width / 2; +}; + +LNode.prototype.getCenterY = function () { + return this.rect.y + this.rect.height / 2; +}; + +LNode.prototype.getCenter = function () { + return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2); +}; + +LNode.prototype.getLocation = function () { + return new PointD(this.rect.x, this.rect.y); +}; + +LNode.prototype.getRect = function () { + return this.rect; +}; + +LNode.prototype.getDiagonal = function () { + return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height); +}; + +/** + * This method returns half the diagonal length of this node. + */ +LNode.prototype.getHalfTheDiagonal = function () { + return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2; +}; + +LNode.prototype.setRect = function (upperLeft, dimension) { + this.rect.x = upperLeft.x; + this.rect.y = upperLeft.y; + this.rect.width = dimension.width; + this.rect.height = dimension.height; +}; + +LNode.prototype.setCenter = function (cx, cy) { + this.rect.x = cx - this.rect.width / 2; + this.rect.y = cy - this.rect.height / 2; +}; + +LNode.prototype.setLocation = function (x, y) { + this.rect.x = x; + this.rect.y = y; +}; + +LNode.prototype.moveBy = function (dx, dy) { + this.rect.x += dx; + this.rect.y += dy; +}; + +LNode.prototype.getEdgeListToNode = function (to) { + var edgeList = []; + var edge; + var self = this; + + self.edges.forEach(function (edge) { + + if (edge.target == to) { + if (edge.source != self) throw "Incorrect edge source!"; + + edgeList.push(edge); + } + }); + + return edgeList; +}; + +LNode.prototype.getEdgesBetween = function (other) { + var edgeList = []; + var edge; + + var self = this; + self.edges.forEach(function (edge) { + + if (!(edge.source == self || edge.target == self)) throw "Incorrect edge source and/or target"; + + if (edge.target == other || edge.source == other) { + edgeList.push(edge); + } + }); + + return edgeList; +}; + +LNode.prototype.getNeighborsList = function () { + var neighbors = new Set(); + + var self = this; + self.edges.forEach(function (edge) { + + if (edge.source == self) { + neighbors.add(edge.target); + } else { + if (edge.target != self) { + throw "Incorrect incidency!"; + } + + neighbors.add(edge.source); + } + }); + + return neighbors; +}; + +LNode.prototype.withChildren = function () { + var withNeighborsList = new Set(); + var childNode; + var children; + + withNeighborsList.add(this); + + if (this.child != null) { + var nodes = this.child.getNodes(); + for (var i = 0; i < nodes.length; i++) { + childNode = nodes[i]; + children = childNode.withChildren(); + children.forEach(function (node) { + withNeighborsList.add(node); + }); + } + } + + return withNeighborsList; +}; + +LNode.prototype.getNoOfChildren = function () { + var noOfChildren = 0; + var childNode; + + if (this.child == null) { + noOfChildren = 1; + } else { + var nodes = this.child.getNodes(); + for (var i = 0; i < nodes.length; i++) { + childNode = nodes[i]; + + noOfChildren += childNode.getNoOfChildren(); + } + } + + if (noOfChildren == 0) { + noOfChildren = 1; + } + return noOfChildren; +}; + +LNode.prototype.getEstimatedSize = function () { + if (this.estimatedSize == Integer.MIN_VALUE) { + throw "assert failed"; + } + return this.estimatedSize; +}; + +LNode.prototype.calcEstimatedSize = function () { + if (this.child == null) { + return this.estimatedSize = (this.rect.width + this.rect.height) / 2; + } else { + this.estimatedSize = this.child.calcEstimatedSize(); + this.rect.width = this.estimatedSize; + this.rect.height = this.estimatedSize; + + return this.estimatedSize; + } +}; + +LNode.prototype.scatter = function () { + var randomCenterX; + var randomCenterY; + + var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY; + var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY; + randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX; + + var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY; + var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY; + randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY; + + this.rect.x = randomCenterX; + this.rect.y = randomCenterY; +}; + +LNode.prototype.updateBounds = function () { + if (this.getChild() == null) { + throw "assert failed"; + } + if (this.getChild().getNodes().length != 0) { + // wrap the children nodes by re-arranging the boundaries + var childGraph = this.getChild(); + childGraph.updateBounds(true); + + this.rect.x = childGraph.getLeft(); + this.rect.y = childGraph.getTop(); + + this.setWidth(childGraph.getRight() - childGraph.getLeft()); + this.setHeight(childGraph.getBottom() - childGraph.getTop()); + + // Update compound bounds considering its label properties + if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) { + + var width = childGraph.getRight() - childGraph.getLeft(); + var height = childGraph.getBottom() - childGraph.getTop(); + + if (this.labelWidth) { + if (this.labelPosHorizontal == "left") { + this.rect.x -= this.labelWidth; + this.setWidth(width + this.labelWidth); + } else if (this.labelPosHorizontal == "center" && this.labelWidth > width) { + this.rect.x -= (this.labelWidth - width) / 2; + this.setWidth(this.labelWidth); + } else if (this.labelPosHorizontal == "right") { + this.setWidth(width + this.labelWidth); + } + } + + if (this.labelHeight) { + if (this.labelPosVertical == "top") { + this.rect.y -= this.labelHeight; + this.setHeight(height + this.labelHeight); + } else if (this.labelPosVertical == "center" && this.labelHeight > height) { + this.rect.y -= (this.labelHeight - height) / 2; + this.setHeight(this.labelHeight); + } else if (this.labelPosVertical == "bottom") { + this.setHeight(height + this.labelHeight); + } + } + } + } +}; + +LNode.prototype.getInclusionTreeDepth = function () { + if (this.inclusionTreeDepth == Integer.MAX_VALUE) { + throw "assert failed"; + } + return this.inclusionTreeDepth; +}; + +LNode.prototype.transform = function (trans) { + var left = this.rect.x; + + if (left > LayoutConstants.WORLD_BOUNDARY) { + left = LayoutConstants.WORLD_BOUNDARY; + } else if (left < -LayoutConstants.WORLD_BOUNDARY) { + left = -LayoutConstants.WORLD_BOUNDARY; + } + + var top = this.rect.y; + + if (top > LayoutConstants.WORLD_BOUNDARY) { + top = LayoutConstants.WORLD_BOUNDARY; + } else if (top < -LayoutConstants.WORLD_BOUNDARY) { + top = -LayoutConstants.WORLD_BOUNDARY; + } + + var leftTop = new PointD(left, top); + var vLeftTop = trans.inverseTransformPoint(leftTop); + + this.setLocation(vLeftTop.x, vLeftTop.y); +}; + +LNode.prototype.getLeft = function () { + return this.rect.x; +}; + +LNode.prototype.getRight = function () { + return this.rect.x + this.rect.width; +}; + +LNode.prototype.getTop = function () { + return this.rect.y; +}; + +LNode.prototype.getBottom = function () { + return this.rect.y + this.rect.height; +}; + +LNode.prototype.getParent = function () { + if (this.owner == null) { + return null; + } + + return this.owner.getParent(); +}; + +module.exports = LNode; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LayoutConstants = __webpack_require__(0); + +function FDLayoutConstants() {} + +//FDLayoutConstants inherits static props in LayoutConstants +for (var prop in LayoutConstants) { + FDLayoutConstants[prop] = LayoutConstants[prop]; +} + +FDLayoutConstants.MAX_ITERATIONS = 2500; + +FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50; +FDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45; +FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0; +FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4; +FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0; +FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8; +FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5; +FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true; +FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true; +FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3; +FDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33; +FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000; +FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000; +FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0; +FDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3; +FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0; +FDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100; +FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1; +FDLayoutConstants.MIN_EDGE_LENGTH = 1; +FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10; + +module.exports = FDLayoutConstants; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function PointD(x, y) { + if (x == null && y == null) { + this.x = 0; + this.y = 0; + } else { + this.x = x; + this.y = y; + } +} + +PointD.prototype.getX = function () { + return this.x; +}; + +PointD.prototype.getY = function () { + return this.y; +}; + +PointD.prototype.setX = function (x) { + this.x = x; +}; + +PointD.prototype.setY = function (y) { + this.y = y; +}; + +PointD.prototype.getDifference = function (pt) { + return new DimensionD(this.x - pt.x, this.y - pt.y); +}; + +PointD.prototype.getCopy = function () { + return new PointD(this.x, this.y); +}; + +PointD.prototype.translate = function (dim) { + this.x += dim.width; + this.y += dim.height; + return this; +}; + +module.exports = PointD; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LGraphObject = __webpack_require__(2); +var Integer = __webpack_require__(10); +var LayoutConstants = __webpack_require__(0); +var LGraphManager = __webpack_require__(7); +var LNode = __webpack_require__(3); +var LEdge = __webpack_require__(1); +var RectangleD = __webpack_require__(13); +var Point = __webpack_require__(12); +var LinkedList = __webpack_require__(11); + +function LGraph(parent, obj2, vGraph) { + LGraphObject.call(this, vGraph); + this.estimatedSize = Integer.MIN_VALUE; + this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN; + this.edges = []; + this.nodes = []; + this.isConnected = false; + this.parent = parent; + + if (obj2 != null && obj2 instanceof LGraphManager) { + this.graphManager = obj2; + } else if (obj2 != null && obj2 instanceof Layout) { + this.graphManager = obj2.graphManager; + } +} + +LGraph.prototype = Object.create(LGraphObject.prototype); +for (var prop in LGraphObject) { + LGraph[prop] = LGraphObject[prop]; +} + +LGraph.prototype.getNodes = function () { + return this.nodes; +}; + +LGraph.prototype.getEdges = function () { + return this.edges; +}; + +LGraph.prototype.getGraphManager = function () { + return this.graphManager; +}; + +LGraph.prototype.getParent = function () { + return this.parent; +}; + +LGraph.prototype.getLeft = function () { + return this.left; +}; + +LGraph.prototype.getRight = function () { + return this.right; +}; + +LGraph.prototype.getTop = function () { + return this.top; +}; + +LGraph.prototype.getBottom = function () { + return this.bottom; +}; + +LGraph.prototype.isConnected = function () { + return this.isConnected; +}; + +LGraph.prototype.add = function (obj1, sourceNode, targetNode) { + if (sourceNode == null && targetNode == null) { + var newNode = obj1; + if (this.graphManager == null) { + throw "Graph has no graph mgr!"; + } + if (this.getNodes().indexOf(newNode) > -1) { + throw "Node already in graph!"; + } + newNode.owner = this; + this.getNodes().push(newNode); + + return newNode; + } else { + var newEdge = obj1; + if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) { + throw "Source or target not in graph!"; + } + + if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) { + throw "Both owners must be this graph!"; + } + + if (sourceNode.owner != targetNode.owner) { + return null; + } + + // set source and target + newEdge.source = sourceNode; + newEdge.target = targetNode; + + // set as intra-graph edge + newEdge.isInterGraph = false; + + // add to graph edge list + this.getEdges().push(newEdge); + + // add to incidency lists + sourceNode.edges.push(newEdge); + + if (targetNode != sourceNode) { + targetNode.edges.push(newEdge); + } + + return newEdge; + } +}; + +LGraph.prototype.remove = function (obj) { + var node = obj; + if (obj instanceof LNode) { + if (node == null) { + throw "Node is null!"; + } + if (!(node.owner != null && node.owner == this)) { + throw "Owner graph is invalid!"; + } + if (this.graphManager == null) { + throw "Owner graph manager is invalid!"; + } + // remove incident edges first (make a copy to do it safely) + var edgesToBeRemoved = node.edges.slice(); + var edge; + var s = edgesToBeRemoved.length; + for (var i = 0; i < s; i++) { + edge = edgesToBeRemoved[i]; + + if (edge.isInterGraph) { + this.graphManager.remove(edge); + } else { + edge.source.owner.remove(edge); + } + } + + // now the node itself + var index = this.nodes.indexOf(node); + if (index == -1) { + throw "Node not in owner node list!"; + } + + this.nodes.splice(index, 1); + } else if (obj instanceof LEdge) { + var edge = obj; + if (edge == null) { + throw "Edge is null!"; + } + if (!(edge.source != null && edge.target != null)) { + throw "Source and/or target is null!"; + } + if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) { + throw "Source and/or target owner is invalid!"; + } + + var sourceIndex = edge.source.edges.indexOf(edge); + var targetIndex = edge.target.edges.indexOf(edge); + if (!(sourceIndex > -1 && targetIndex > -1)) { + throw "Source and/or target doesn't know this edge!"; + } + + edge.source.edges.splice(sourceIndex, 1); + + if (edge.target != edge.source) { + edge.target.edges.splice(targetIndex, 1); + } + + var index = edge.source.owner.getEdges().indexOf(edge); + if (index == -1) { + throw "Not in owner's edge list!"; + } + + edge.source.owner.getEdges().splice(index, 1); + } +}; + +LGraph.prototype.updateLeftTop = function () { + var top = Integer.MAX_VALUE; + var left = Integer.MAX_VALUE; + var nodeTop; + var nodeLeft; + var margin; + + var nodes = this.getNodes(); + var s = nodes.length; + + for (var i = 0; i < s; i++) { + var lNode = nodes[i]; + nodeTop = lNode.getTop(); + nodeLeft = lNode.getLeft(); + + if (top > nodeTop) { + top = nodeTop; + } + + if (left > nodeLeft) { + left = nodeLeft; + } + } + + // Do we have any nodes in this graph? + if (top == Integer.MAX_VALUE) { + return null; + } + + if (nodes[0].getParent().paddingLeft != undefined) { + margin = nodes[0].getParent().paddingLeft; + } else { + margin = this.margin; + } + + this.left = left - margin; + this.top = top - margin; + + // Apply the margins and return the result + return new Point(this.left, this.top); +}; + +LGraph.prototype.updateBounds = function (recursive) { + // calculate bounds + var left = Integer.MAX_VALUE; + var right = -Integer.MAX_VALUE; + var top = Integer.MAX_VALUE; + var bottom = -Integer.MAX_VALUE; + var nodeLeft; + var nodeRight; + var nodeTop; + var nodeBottom; + var margin; + + var nodes = this.nodes; + var s = nodes.length; + for (var i = 0; i < s; i++) { + var lNode = nodes[i]; + + if (recursive && lNode.child != null) { + lNode.updateBounds(); + } + nodeLeft = lNode.getLeft(); + nodeRight = lNode.getRight(); + nodeTop = lNode.getTop(); + nodeBottom = lNode.getBottom(); + + if (left > nodeLeft) { + left = nodeLeft; + } + + if (right < nodeRight) { + right = nodeRight; + } + + if (top > nodeTop) { + top = nodeTop; + } + + if (bottom < nodeBottom) { + bottom = nodeBottom; + } + } + + var boundingRect = new RectangleD(left, top, right - left, bottom - top); + if (left == Integer.MAX_VALUE) { + this.left = this.parent.getLeft(); + this.right = this.parent.getRight(); + this.top = this.parent.getTop(); + this.bottom = this.parent.getBottom(); + } + + if (nodes[0].getParent().paddingLeft != undefined) { + margin = nodes[0].getParent().paddingLeft; + } else { + margin = this.margin; + } + + this.left = boundingRect.x - margin; + this.right = boundingRect.x + boundingRect.width + margin; + this.top = boundingRect.y - margin; + this.bottom = boundingRect.y + boundingRect.height + margin; +}; + +LGraph.calculateBounds = function (nodes) { + var left = Integer.MAX_VALUE; + var right = -Integer.MAX_VALUE; + var top = Integer.MAX_VALUE; + var bottom = -Integer.MAX_VALUE; + var nodeLeft; + var nodeRight; + var nodeTop; + var nodeBottom; + + var s = nodes.length; + + for (var i = 0; i < s; i++) { + var lNode = nodes[i]; + nodeLeft = lNode.getLeft(); + nodeRight = lNode.getRight(); + nodeTop = lNode.getTop(); + nodeBottom = lNode.getBottom(); + + if (left > nodeLeft) { + left = nodeLeft; + } + + if (right < nodeRight) { + right = nodeRight; + } + + if (top > nodeTop) { + top = nodeTop; + } + + if (bottom < nodeBottom) { + bottom = nodeBottom; + } + } + + var boundingRect = new RectangleD(left, top, right - left, bottom - top); + + return boundingRect; +}; + +LGraph.prototype.getInclusionTreeDepth = function () { + if (this == this.graphManager.getRoot()) { + return 1; + } else { + return this.parent.getInclusionTreeDepth(); + } +}; + +LGraph.prototype.getEstimatedSize = function () { + if (this.estimatedSize == Integer.MIN_VALUE) { + throw "assert failed"; + } + return this.estimatedSize; +}; + +LGraph.prototype.calcEstimatedSize = function () { + var size = 0; + var nodes = this.nodes; + var s = nodes.length; + + for (var i = 0; i < s; i++) { + var lNode = nodes[i]; + size += lNode.calcEstimatedSize(); + } + + if (size == 0) { + this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE; + } else { + this.estimatedSize = size / Math.sqrt(this.nodes.length); + } + + return this.estimatedSize; +}; + +LGraph.prototype.updateConnected = function () { + var self = this; + if (this.nodes.length == 0) { + this.isConnected = true; + return; + } + + var queue = new LinkedList(); + var visited = new Set(); + var currentNode = this.nodes[0]; + var neighborEdges; + var currentNeighbor; + var childrenOfNode = currentNode.withChildren(); + childrenOfNode.forEach(function (node) { + queue.push(node); + visited.add(node); + }); + + while (queue.length !== 0) { + currentNode = queue.shift(); + + // Traverse all neighbors of this node + neighborEdges = currentNode.getEdges(); + var size = neighborEdges.length; + for (var i = 0; i < size; i++) { + var neighborEdge = neighborEdges[i]; + currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this); + + // Add unvisited neighbors to the list to visit + if (currentNeighbor != null && !visited.has(currentNeighbor)) { + var childrenOfNeighbor = currentNeighbor.withChildren(); + + childrenOfNeighbor.forEach(function (node) { + queue.push(node); + visited.add(node); + }); + } + } + } + + this.isConnected = false; + + if (visited.size >= this.nodes.length) { + var noOfVisitedInThisGraph = 0; + + visited.forEach(function (visitedNode) { + if (visitedNode.owner == self) { + noOfVisitedInThisGraph++; + } + }); + + if (noOfVisitedInThisGraph == this.nodes.length) { + this.isConnected = true; + } + } +}; + +module.exports = LGraph; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LGraph; +var LEdge = __webpack_require__(1); + +function LGraphManager(layout) { + LGraph = __webpack_require__(6); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now. + this.layout = layout; + + this.graphs = []; + this.edges = []; +} + +LGraphManager.prototype.addRoot = function () { + var ngraph = this.layout.newGraph(); + var nnode = this.layout.newNode(null); + var root = this.add(ngraph, nnode); + this.setRootGraph(root); + return this.rootGraph; +}; + +LGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) { + //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge + if (newEdge == null && sourceNode == null && targetNode == null) { + if (newGraph == null) { + throw "Graph is null!"; + } + if (parentNode == null) { + throw "Parent node is null!"; + } + if (this.graphs.indexOf(newGraph) > -1) { + throw "Graph already in this graph mgr!"; + } + + this.graphs.push(newGraph); + + if (newGraph.parent != null) { + throw "Already has a parent!"; + } + if (parentNode.child != null) { + throw "Already has a child!"; + } + + newGraph.parent = parentNode; + parentNode.child = newGraph; + + return newGraph; + } else { + //change the order of the parameters + targetNode = newEdge; + sourceNode = parentNode; + newEdge = newGraph; + var sourceGraph = sourceNode.getOwner(); + var targetGraph = targetNode.getOwner(); + + if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) { + throw "Source not in this graph mgr!"; + } + if (!(targetGraph != null && targetGraph.getGraphManager() == this)) { + throw "Target not in this graph mgr!"; + } + + if (sourceGraph == targetGraph) { + newEdge.isInterGraph = false; + return sourceGraph.add(newEdge, sourceNode, targetNode); + } else { + newEdge.isInterGraph = true; + + // set source and target + newEdge.source = sourceNode; + newEdge.target = targetNode; + + // add edge to inter-graph edge list + if (this.edges.indexOf(newEdge) > -1) { + throw "Edge already in inter-graph edge list!"; + } + + this.edges.push(newEdge); + + // add edge to source and target incidency lists + if (!(newEdge.source != null && newEdge.target != null)) { + throw "Edge source and/or target is null!"; + } + + if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) { + throw "Edge already in source and/or target incidency list!"; + } + + newEdge.source.edges.push(newEdge); + newEdge.target.edges.push(newEdge); + + return newEdge; + } + } +}; + +LGraphManager.prototype.remove = function (lObj) { + if (lObj instanceof LGraph) { + var graph = lObj; + if (graph.getGraphManager() != this) { + throw "Graph not in this graph mgr"; + } + if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) { + throw "Invalid parent node!"; + } + + // first the edges (make a copy to do it safely) + var edgesToBeRemoved = []; + + edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges()); + + var edge; + var s = edgesToBeRemoved.length; + for (var i = 0; i < s; i++) { + edge = edgesToBeRemoved[i]; + graph.remove(edge); + } + + // then the nodes (make a copy to do it safely) + var nodesToBeRemoved = []; + + nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes()); + + var node; + s = nodesToBeRemoved.length; + for (var i = 0; i < s; i++) { + node = nodesToBeRemoved[i]; + graph.remove(node); + } + + // check if graph is the root + if (graph == this.rootGraph) { + this.setRootGraph(null); + } + + // now remove the graph itself + var index = this.graphs.indexOf(graph); + this.graphs.splice(index, 1); + + // also reset the parent of the graph + graph.parent = null; + } else if (lObj instanceof LEdge) { + edge = lObj; + if (edge == null) { + throw "Edge is null!"; + } + if (!edge.isInterGraph) { + throw "Not an inter-graph edge!"; + } + if (!(edge.source != null && edge.target != null)) { + throw "Source and/or target is null!"; + } + + // remove edge from source and target nodes' incidency lists + + if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) { + throw "Source and/or target doesn't know this edge!"; + } + + var index = edge.source.edges.indexOf(edge); + edge.source.edges.splice(index, 1); + index = edge.target.edges.indexOf(edge); + edge.target.edges.splice(index, 1); + + // remove edge from owner graph manager's inter-graph edge list + + if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) { + throw "Edge owner graph or owner graph manager is null!"; + } + if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) { + throw "Not in owner graph manager's edge list!"; + } + + var index = edge.source.owner.getGraphManager().edges.indexOf(edge); + edge.source.owner.getGraphManager().edges.splice(index, 1); + } +}; + +LGraphManager.prototype.updateBounds = function () { + this.rootGraph.updateBounds(true); +}; + +LGraphManager.prototype.getGraphs = function () { + return this.graphs; +}; + +LGraphManager.prototype.getAllNodes = function () { + if (this.allNodes == null) { + var nodeList = []; + var graphs = this.getGraphs(); + var s = graphs.length; + for (var i = 0; i < s; i++) { + nodeList = nodeList.concat(graphs[i].getNodes()); + } + this.allNodes = nodeList; + } + return this.allNodes; +}; + +LGraphManager.prototype.resetAllNodes = function () { + this.allNodes = null; +}; + +LGraphManager.prototype.resetAllEdges = function () { + this.allEdges = null; +}; + +LGraphManager.prototype.resetAllNodesToApplyGravitation = function () { + this.allNodesToApplyGravitation = null; +}; + +LGraphManager.prototype.getAllEdges = function () { + if (this.allEdges == null) { + var edgeList = []; + var graphs = this.getGraphs(); + var s = graphs.length; + for (var i = 0; i < graphs.length; i++) { + edgeList = edgeList.concat(graphs[i].getEdges()); + } + + edgeList = edgeList.concat(this.edges); + + this.allEdges = edgeList; + } + return this.allEdges; +}; + +LGraphManager.prototype.getAllNodesToApplyGravitation = function () { + return this.allNodesToApplyGravitation; +}; + +LGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) { + if (this.allNodesToApplyGravitation != null) { + throw "assert failed"; + } + + this.allNodesToApplyGravitation = nodeList; +}; + +LGraphManager.prototype.getRoot = function () { + return this.rootGraph; +}; + +LGraphManager.prototype.setRootGraph = function (graph) { + if (graph.getGraphManager() != this) { + throw "Root not in this graph mgr!"; + } + + this.rootGraph = graph; + // root graph must have a root node associated with it for convenience + if (graph.parent == null) { + graph.parent = this.layout.newNode("Root node"); + } +}; + +LGraphManager.prototype.getLayout = function () { + return this.layout; +}; + +LGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) { + if (!(firstNode != null && secondNode != null)) { + throw "assert failed"; + } + + if (firstNode == secondNode) { + return true; + } + // Is second node an ancestor of the first one? + var ownerGraph = firstNode.getOwner(); + var parentNode; + + do { + parentNode = ownerGraph.getParent(); + + if (parentNode == null) { + break; + } + + if (parentNode == secondNode) { + return true; + } + + ownerGraph = parentNode.getOwner(); + if (ownerGraph == null) { + break; + } + } while (true); + // Is first node an ancestor of the second one? + ownerGraph = secondNode.getOwner(); + + do { + parentNode = ownerGraph.getParent(); + + if (parentNode == null) { + break; + } + + if (parentNode == firstNode) { + return true; + } + + ownerGraph = parentNode.getOwner(); + if (ownerGraph == null) { + break; + } + } while (true); + + return false; +}; + +LGraphManager.prototype.calcLowestCommonAncestors = function () { + var edge; + var sourceNode; + var targetNode; + var sourceAncestorGraph; + var targetAncestorGraph; + + var edges = this.getAllEdges(); + var s = edges.length; + for (var i = 0; i < s; i++) { + edge = edges[i]; + + sourceNode = edge.source; + targetNode = edge.target; + edge.lca = null; + edge.sourceInLca = sourceNode; + edge.targetInLca = targetNode; + + if (sourceNode == targetNode) { + edge.lca = sourceNode.getOwner(); + continue; + } + + sourceAncestorGraph = sourceNode.getOwner(); + + while (edge.lca == null) { + edge.targetInLca = targetNode; + targetAncestorGraph = targetNode.getOwner(); + + while (edge.lca == null) { + if (targetAncestorGraph == sourceAncestorGraph) { + edge.lca = targetAncestorGraph; + break; + } + + if (targetAncestorGraph == this.rootGraph) { + break; + } + + if (edge.lca != null) { + throw "assert failed"; + } + edge.targetInLca = targetAncestorGraph.getParent(); + targetAncestorGraph = edge.targetInLca.getOwner(); + } + + if (sourceAncestorGraph == this.rootGraph) { + break; + } + + if (edge.lca == null) { + edge.sourceInLca = sourceAncestorGraph.getParent(); + sourceAncestorGraph = edge.sourceInLca.getOwner(); + } + } + + if (edge.lca == null) { + throw "assert failed"; + } + } +}; + +LGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) { + if (firstNode == secondNode) { + return firstNode.getOwner(); + } + var firstOwnerGraph = firstNode.getOwner(); + + do { + if (firstOwnerGraph == null) { + break; + } + var secondOwnerGraph = secondNode.getOwner(); + + do { + if (secondOwnerGraph == null) { + break; + } + + if (secondOwnerGraph == firstOwnerGraph) { + return secondOwnerGraph; + } + secondOwnerGraph = secondOwnerGraph.getParent().getOwner(); + } while (true); + + firstOwnerGraph = firstOwnerGraph.getParent().getOwner(); + } while (true); + + return firstOwnerGraph; +}; + +LGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) { + if (graph == null && depth == null) { + graph = this.rootGraph; + depth = 1; + } + var node; + + var nodes = graph.getNodes(); + var s = nodes.length; + for (var i = 0; i < s; i++) { + node = nodes[i]; + node.inclusionTreeDepth = depth; + + if (node.child != null) { + this.calcInclusionTreeDepths(node.child, depth + 1); + } + } +}; + +LGraphManager.prototype.includesInvalidEdge = function () { + var edge; + var edgesToRemove = []; + + var s = this.edges.length; + for (var i = 0; i < s; i++) { + edge = this.edges[i]; + + if (this.isOneAncestorOfOther(edge.source, edge.target)) { + edgesToRemove.push(edge); + } + } + + // Remove invalid edges from graph manager + for (var i = 0; i < edgesToRemove.length; i++) { + this.remove(edgesToRemove[i]); + } + + // Invalid edges are cleared, so return false + return false; +}; + +module.exports = LGraphManager; + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * This class maintains a list of static geometry related utility methods. + * + * + * Copyright: i-Vis Research Group, Bilkent University, 2007 - present + */ + +var Point = __webpack_require__(12); + +function IGeometry() {} + +/** + * This method calculates *half* the amount in x and y directions of the two + * input rectangles needed to separate them keeping their respective + * positioning, and returns the result in the input array. An input + * separation buffer added to the amount in both directions. We assume that + * the two rectangles do intersect. + */ +IGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) { + if (!rectA.intersects(rectB)) { + throw "assert failed"; + } + + var directions = new Array(2); + + this.decideDirectionsForOverlappingNodes(rectA, rectB, directions); + + overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x); + overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y); + + // update the overlapping amounts for the following cases: + if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) { + /* Case x.1: + * + * rectA + * | | + * | _________ | + * | | | | + * |________|_______|______| + * | | + * | | + * rectB + */ + overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight()); + } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) { + /* Case x.2: + * + * rectB + * | | + * | _________ | + * | | | | + * |________|_______|______| + * | | + * | | + * rectA + */ + overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight()); + } + if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) { + /* Case y.1: + * ________ rectA + * | + * | + * ______|____ rectB + * | | + * | | + * ______|____| + * | + * | + * |________ + * + */ + overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom()); + } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) { + /* Case y.2: + * ________ rectB + * | + * | + * ______|____ rectA + * | | + * | | + * ______|____| + * | + * | + * |________ + * + */ + overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom()); + } + + // find slope of the line passes two centers + var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX())); + // if centers are overlapped + if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) { + // assume the slope is 1 (45 degree) + slope = 1.0; + } + + var moveByY = slope * overlapAmount[0]; + var moveByX = overlapAmount[1] / slope; + if (overlapAmount[0] < moveByX) { + moveByX = overlapAmount[0]; + } else { + moveByY = overlapAmount[1]; + } + // return half the amount so that if each rectangle is moved by these + // amounts in opposite directions, overlap will be resolved + overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer); + overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer); +}; + +/** + * This method decides the separation direction of overlapping nodes + * + * if directions[0] = -1, then rectA goes left + * if directions[0] = 1, then rectA goes right + * if directions[1] = -1, then rectA goes up + * if directions[1] = 1, then rectA goes down + */ +IGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) { + if (rectA.getCenterX() < rectB.getCenterX()) { + directions[0] = -1; + } else { + directions[0] = 1; + } + + if (rectA.getCenterY() < rectB.getCenterY()) { + directions[1] = -1; + } else { + directions[1] = 1; + } +}; + +/** + * This method calculates the intersection (clipping) points of the two + * input rectangles with line segment defined by the centers of these two + * rectangles. The clipping points are saved in the input double array and + * whether or not the two rectangles overlap is returned. + */ +IGeometry.getIntersection2 = function (rectA, rectB, result) { + //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB + var p1x = rectA.getCenterX(); + var p1y = rectA.getCenterY(); + var p2x = rectB.getCenterX(); + var p2y = rectB.getCenterY(); + + //if two rectangles intersect, then clipping points are centers + if (rectA.intersects(rectB)) { + result[0] = p1x; + result[1] = p1y; + result[2] = p2x; + result[3] = p2y; + return true; + } + //variables for rectA + var topLeftAx = rectA.getX(); + var topLeftAy = rectA.getY(); + var topRightAx = rectA.getRight(); + var bottomLeftAx = rectA.getX(); + var bottomLeftAy = rectA.getBottom(); + var bottomRightAx = rectA.getRight(); + var halfWidthA = rectA.getWidthHalf(); + var halfHeightA = rectA.getHeightHalf(); + //variables for rectB + var topLeftBx = rectB.getX(); + var topLeftBy = rectB.getY(); + var topRightBx = rectB.getRight(); + var bottomLeftBx = rectB.getX(); + var bottomLeftBy = rectB.getBottom(); + var bottomRightBx = rectB.getRight(); + var halfWidthB = rectB.getWidthHalf(); + var halfHeightB = rectB.getHeightHalf(); + + //flag whether clipping points are found + var clipPointAFound = false; + var clipPointBFound = false; + + // line is vertical + if (p1x === p2x) { + if (p1y > p2y) { + result[0] = p1x; + result[1] = topLeftAy; + result[2] = p2x; + result[3] = bottomLeftBy; + return false; + } else if (p1y < p2y) { + result[0] = p1x; + result[1] = bottomLeftAy; + result[2] = p2x; + result[3] = topLeftBy; + return false; + } else { + //not line, return null; + } + } + // line is horizontal + else if (p1y === p2y) { + if (p1x > p2x) { + result[0] = topLeftAx; + result[1] = p1y; + result[2] = topRightBx; + result[3] = p2y; + return false; + } else if (p1x < p2x) { + result[0] = topRightAx; + result[1] = p1y; + result[2] = topLeftBx; + result[3] = p2y; + return false; + } else { + //not valid line, return null; + } + } else { + //slopes of rectA's and rectB's diagonals + var slopeA = rectA.height / rectA.width; + var slopeB = rectB.height / rectB.width; + + //slope of line between center of rectA and center of rectB + var slopePrime = (p2y - p1y) / (p2x - p1x); + var cardinalDirectionA = void 0; + var cardinalDirectionB = void 0; + var tempPointAx = void 0; + var tempPointAy = void 0; + var tempPointBx = void 0; + var tempPointBy = void 0; + + //determine whether clipping point is the corner of nodeA + if (-slopeA === slopePrime) { + if (p1x > p2x) { + result[0] = bottomLeftAx; + result[1] = bottomLeftAy; + clipPointAFound = true; + } else { + result[0] = topRightAx; + result[1] = topLeftAy; + clipPointAFound = true; + } + } else if (slopeA === slopePrime) { + if (p1x > p2x) { + result[0] = topLeftAx; + result[1] = topLeftAy; + clipPointAFound = true; + } else { + result[0] = bottomRightAx; + result[1] = bottomLeftAy; + clipPointAFound = true; + } + } + + //determine whether clipping point is the corner of nodeB + if (-slopeB === slopePrime) { + if (p2x > p1x) { + result[2] = bottomLeftBx; + result[3] = bottomLeftBy; + clipPointBFound = true; + } else { + result[2] = topRightBx; + result[3] = topLeftBy; + clipPointBFound = true; + } + } else if (slopeB === slopePrime) { + if (p2x > p1x) { + result[2] = topLeftBx; + result[3] = topLeftBy; + clipPointBFound = true; + } else { + result[2] = bottomRightBx; + result[3] = bottomLeftBy; + clipPointBFound = true; + } + } + + //if both clipping points are corners + if (clipPointAFound && clipPointBFound) { + return false; + } + + //determine Cardinal Direction of rectangles + if (p1x > p2x) { + if (p1y > p2y) { + cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4); + cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2); + } else { + cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3); + cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1); + } + } else { + if (p1y > p2y) { + cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1); + cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3); + } else { + cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2); + cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4); + } + } + //calculate clipping Point if it is not found before + if (!clipPointAFound) { + switch (cardinalDirectionA) { + case 1: + tempPointAy = topLeftAy; + tempPointAx = p1x + -halfHeightA / slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 2: + tempPointAx = bottomRightAx; + tempPointAy = p1y + halfWidthA * slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 3: + tempPointAy = bottomLeftAy; + tempPointAx = p1x + halfHeightA / slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + case 4: + tempPointAx = bottomLeftAx; + tempPointAy = p1y + -halfWidthA * slopePrime; + result[0] = tempPointAx; + result[1] = tempPointAy; + break; + } + } + if (!clipPointBFound) { + switch (cardinalDirectionB) { + case 1: + tempPointBy = topLeftBy; + tempPointBx = p2x + -halfHeightB / slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 2: + tempPointBx = bottomRightBx; + tempPointBy = p2y + halfWidthB * slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 3: + tempPointBy = bottomLeftBy; + tempPointBx = p2x + halfHeightB / slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + case 4: + tempPointBx = bottomLeftBx; + tempPointBy = p2y + -halfWidthB * slopePrime; + result[2] = tempPointBx; + result[3] = tempPointBy; + break; + } + } + } + return false; +}; + +/** + * This method returns in which cardinal direction does input point stays + * 1: North + * 2: East + * 3: South + * 4: West + */ +IGeometry.getCardinalDirection = function (slope, slopePrime, line) { + if (slope > slopePrime) { + return line; + } else { + return 1 + line % 4; + } +}; + +/** + * This method calculates the intersection of the two lines defined by + * point pairs (s1,s2) and (f1,f2). + */ +IGeometry.getIntersection = function (s1, s2, f1, f2) { + if (f2 == null) { + return this.getIntersection2(s1, s2, f1); + } + + var x1 = s1.x; + var y1 = s1.y; + var x2 = s2.x; + var y2 = s2.y; + var x3 = f1.x; + var y3 = f1.y; + var x4 = f2.x; + var y4 = f2.y; + var x = void 0, + y = void 0; // intersection point + var a1 = void 0, + a2 = void 0, + b1 = void 0, + b2 = void 0, + c1 = void 0, + c2 = void 0; // coefficients of line eqns. + var denom = void 0; + + a1 = y2 - y1; + b1 = x1 - x2; + c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 } + + a2 = y4 - y3; + b2 = x3 - x4; + c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 } + + denom = a1 * b2 - a2 * b1; + + if (denom === 0) { + return null; + } + + x = (b1 * c2 - b2 * c1) / denom; + y = (a2 * c1 - a1 * c2) / denom; + + return new Point(x, y); +}; + +/** + * This method finds and returns the angle of the vector from the + x-axis + * in clockwise direction (compatible w/ Java coordinate system!). + */ +IGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) { + var C_angle = void 0; + + if (Cx !== Nx) { + C_angle = Math.atan((Ny - Cy) / (Nx - Cx)); + + if (Nx < Cx) { + C_angle += Math.PI; + } else if (Ny < Cy) { + C_angle += this.TWO_PI; + } + } else if (Ny < Cy) { + C_angle = this.ONE_AND_HALF_PI; // 270 degrees + } else { + C_angle = this.HALF_PI; // 90 degrees + } + + return C_angle; +}; + +/** + * This method checks whether the given two line segments (one with point + * p1 and p2, the other with point p3 and p4) intersect at a point other + * than these points. + */ +IGeometry.doIntersect = function (p1, p2, p3, p4) { + var a = p1.x; + var b = p1.y; + var c = p2.x; + var d = p2.y; + var p = p3.x; + var q = p3.y; + var r = p4.x; + var s = p4.y; + var det = (c - a) * (s - q) - (r - p) * (d - b); + + if (det === 0) { + return false; + } else { + var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det; + var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det; + return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1; + } +}; + +/** + * This method checks and calculates the intersection of + * a line segment and a circle. + */ +IGeometry.findCircleLineIntersections = function (Ex, Ey, Lx, Ly, Cx, Cy, r) { + + // E is the starting point of the ray, + // L is the end point of the ray, + // C is the center of sphere you're testing against + // r is the radius of that sphere + + // Compute: + // d = L - E ( Direction vector of ray, from start to end ) + // f = E - C ( Vector from center sphere to ray start ) + + // Then the intersection is found by.. + // P = E + t * d + // This is a parametric equation: + // Px = Ex + tdx + // Py = Ey + tdy + + // get a, b, c values + var a = (Lx - Ex) * (Lx - Ex) + (Ly - Ey) * (Ly - Ey); + var b = 2 * ((Ex - Cx) * (Lx - Ex) + (Ey - Cy) * (Ly - Ey)); + var c = (Ex - Cx) * (Ex - Cx) + (Ey - Cy) * (Ey - Cy) - r * r; + + // get discriminant + var disc = b * b - 4 * a * c; + if (disc >= 0) { + // insert into quadratic formula + var t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a); + var t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / (2 * a); + var intersections = null; + if (t1 >= 0 && t1 <= 1) { + // t1 is the intersection, and it's closer than t2 + // (since t1 uses -b - discriminant) + // Impale, Poke + return [t1]; + } + + // here t1 didn't intersect so we are either started + // inside the sphere or completely past it + if (t2 >= 0 && t2 <= 1) { + // ExitWound + return [t2]; + } + + return intersections; + } else return null; +}; + +// ----------------------------------------------------------------------------- +// Section: Class Constants +// ----------------------------------------------------------------------------- +/** + * Some useful pre-calculated constants + */ +IGeometry.HALF_PI = 0.5 * Math.PI; +IGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI; +IGeometry.TWO_PI = 2.0 * Math.PI; +IGeometry.THREE_PI = 3.0 * Math.PI; + +module.exports = IGeometry; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function IMath() {} + +/** + * This method returns the sign of the input value. + */ +IMath.sign = function (value) { + if (value > 0) { + return 1; + } else if (value < 0) { + return -1; + } else { + return 0; + } +}; + +IMath.floor = function (value) { + return value < 0 ? Math.ceil(value) : Math.floor(value); +}; + +IMath.ceil = function (value) { + return value < 0 ? Math.floor(value) : Math.ceil(value); +}; + +module.exports = IMath; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function Integer() {} + +Integer.MAX_VALUE = 2147483647; +Integer.MIN_VALUE = -2147483648; + +module.exports = Integer; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var nodeFrom = function nodeFrom(value) { + return { value: value, next: null, prev: null }; +}; + +var add = function add(prev, node, next, list) { + if (prev !== null) { + prev.next = node; + } else { + list.head = node; + } + + if (next !== null) { + next.prev = node; + } else { + list.tail = node; + } + + node.prev = prev; + node.next = next; + + list.length++; + + return node; +}; + +var _remove = function _remove(node, list) { + var prev = node.prev, + next = node.next; + + + if (prev !== null) { + prev.next = next; + } else { + list.head = next; + } + + if (next !== null) { + next.prev = prev; + } else { + list.tail = prev; + } + + node.prev = node.next = null; + + list.length--; + + return node; +}; + +var LinkedList = function () { + function LinkedList(vals) { + var _this = this; + + _classCallCheck(this, LinkedList); + + this.length = 0; + this.head = null; + this.tail = null; + + if (vals != null) { + vals.forEach(function (v) { + return _this.push(v); + }); + } + } + + _createClass(LinkedList, [{ + key: "size", + value: function size() { + return this.length; + } + }, { + key: "insertBefore", + value: function insertBefore(val, otherNode) { + return add(otherNode.prev, nodeFrom(val), otherNode, this); + } + }, { + key: "insertAfter", + value: function insertAfter(val, otherNode) { + return add(otherNode, nodeFrom(val), otherNode.next, this); + } + }, { + key: "insertNodeBefore", + value: function insertNodeBefore(newNode, otherNode) { + return add(otherNode.prev, newNode, otherNode, this); + } + }, { + key: "insertNodeAfter", + value: function insertNodeAfter(newNode, otherNode) { + return add(otherNode, newNode, otherNode.next, this); + } + }, { + key: "push", + value: function push(val) { + return add(this.tail, nodeFrom(val), null, this); + } + }, { + key: "unshift", + value: function unshift(val) { + return add(null, nodeFrom(val), this.head, this); + } + }, { + key: "remove", + value: function remove(node) { + return _remove(node, this); + } + }, { + key: "pop", + value: function pop() { + return _remove(this.tail, this).value; + } + }, { + key: "popNode", + value: function popNode() { + return _remove(this.tail, this); + } + }, { + key: "shift", + value: function shift() { + return _remove(this.head, this).value; + } + }, { + key: "shiftNode", + value: function shiftNode() { + return _remove(this.head, this); + } + }, { + key: "get_object_at", + value: function get_object_at(index) { + if (index <= this.length()) { + var i = 1; + var current = this.head; + while (i < index) { + current = current.next; + i++; + } + return current.value; + } + } + }, { + key: "set_object_at", + value: function set_object_at(index, value) { + if (index <= this.length()) { + var i = 1; + var current = this.head; + while (i < index) { + current = current.next; + i++; + } + current.value = value; + } + } + }]); + + return LinkedList; +}(); + +module.exports = LinkedList; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/* + *This class is the javascript implementation of the Point.java class in jdk + */ +function Point(x, y, p) { + this.x = null; + this.y = null; + if (x == null && y == null && p == null) { + this.x = 0; + this.y = 0; + } else if (typeof x == 'number' && typeof y == 'number' && p == null) { + this.x = x; + this.y = y; + } else if (x.constructor.name == 'Point' && y == null && p == null) { + p = x; + this.x = p.x; + this.y = p.y; + } +} + +Point.prototype.getX = function () { + return this.x; +}; + +Point.prototype.getY = function () { + return this.y; +}; + +Point.prototype.getLocation = function () { + return new Point(this.x, this.y); +}; + +Point.prototype.setLocation = function (x, y, p) { + if (x.constructor.name == 'Point' && y == null && p == null) { + p = x; + this.setLocation(p.x, p.y); + } else if (typeof x == 'number' && typeof y == 'number' && p == null) { + //if both parameters are integer just move (x,y) location + if (parseInt(x) == x && parseInt(y) == y) { + this.move(x, y); + } else { + this.x = Math.floor(x + 0.5); + this.y = Math.floor(y + 0.5); + } + } +}; + +Point.prototype.move = function (x, y) { + this.x = x; + this.y = y; +}; + +Point.prototype.translate = function (dx, dy) { + this.x += dx; + this.y += dy; +}; + +Point.prototype.equals = function (obj) { + if (obj.constructor.name == "Point") { + var pt = obj; + return this.x == pt.x && this.y == pt.y; + } + return this == obj; +}; + +Point.prototype.toString = function () { + return new Point().constructor.name + "[x=" + this.x + ",y=" + this.y + "]"; +}; + +module.exports = Point; + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function RectangleD(x, y, width, height) { + this.x = 0; + this.y = 0; + this.width = 0; + this.height = 0; + + if (x != null && y != null && width != null && height != null) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } +} + +RectangleD.prototype.getX = function () { + return this.x; +}; + +RectangleD.prototype.setX = function (x) { + this.x = x; +}; + +RectangleD.prototype.getY = function () { + return this.y; +}; + +RectangleD.prototype.setY = function (y) { + this.y = y; +}; + +RectangleD.prototype.getWidth = function () { + return this.width; +}; + +RectangleD.prototype.setWidth = function (width) { + this.width = width; +}; + +RectangleD.prototype.getHeight = function () { + return this.height; +}; + +RectangleD.prototype.setHeight = function (height) { + this.height = height; +}; + +RectangleD.prototype.getRight = function () { + return this.x + this.width; +}; + +RectangleD.prototype.getBottom = function () { + return this.y + this.height; +}; + +RectangleD.prototype.intersects = function (a) { + if (this.getRight() < a.x) { + return false; + } + + if (this.getBottom() < a.y) { + return false; + } + + if (a.getRight() < this.x) { + return false; + } + + if (a.getBottom() < this.y) { + return false; + } + + return true; +}; + +RectangleD.prototype.getCenterX = function () { + return this.x + this.width / 2; +}; + +RectangleD.prototype.getMinX = function () { + return this.getX(); +}; + +RectangleD.prototype.getMaxX = function () { + return this.getX() + this.width; +}; + +RectangleD.prototype.getCenterY = function () { + return this.y + this.height / 2; +}; + +RectangleD.prototype.getMinY = function () { + return this.getY(); +}; + +RectangleD.prototype.getMaxY = function () { + return this.getY() + this.height; +}; + +RectangleD.prototype.getWidthHalf = function () { + return this.width / 2; +}; + +RectangleD.prototype.getHeightHalf = function () { + return this.height / 2; +}; + +module.exports = RectangleD; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +function UniqueIDGeneretor() {} + +UniqueIDGeneretor.lastID = 0; + +UniqueIDGeneretor.createID = function (obj) { + if (UniqueIDGeneretor.isPrimitive(obj)) { + return obj; + } + if (obj.uniqueID != null) { + return obj.uniqueID; + } + obj.uniqueID = UniqueIDGeneretor.getString(); + UniqueIDGeneretor.lastID++; + return obj.uniqueID; +}; + +UniqueIDGeneretor.getString = function (id) { + if (id == null) id = UniqueIDGeneretor.lastID; + return "Object#" + id + ""; +}; + +UniqueIDGeneretor.isPrimitive = function (arg) { + var type = typeof arg === "undefined" ? "undefined" : _typeof(arg); + return arg == null || type != "object" && type != "function"; +}; + +module.exports = UniqueIDGeneretor; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var LayoutConstants = __webpack_require__(0); +var LGraphManager = __webpack_require__(7); +var LNode = __webpack_require__(3); +var LEdge = __webpack_require__(1); +var LGraph = __webpack_require__(6); +var PointD = __webpack_require__(5); +var Transform = __webpack_require__(17); +var Emitter = __webpack_require__(29); + +function Layout(isRemoteUse) { + Emitter.call(this); + + //Layout Quality: 0:draft, 1:default, 2:proof + this.layoutQuality = LayoutConstants.QUALITY; + //Whether layout should create bendpoints as needed or not + this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; + //Whether layout should be incremental or not + this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; + //Whether we animate from before to after layout node positions + this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; + //Whether we animate the layout process or not + this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; + //Number iterations that should be done between two successive animations + this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; + /** + * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When + * they are, both spring and repulsion forces between two leaf nodes can be + * calculated without the expensive clipping point calculations, resulting + * in major speed-up. + */ + this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; + /** + * This is used for creation of bendpoints by using dummy nodes and edges. + * Maps an LEdge to its dummy bendpoint path. + */ + this.edgeToDummyNodes = new Map(); + this.graphManager = new LGraphManager(this); + this.isLayoutFinished = false; + this.isSubLayout = false; + this.isRemoteUse = false; + + if (isRemoteUse != null) { + this.isRemoteUse = isRemoteUse; + } +} + +Layout.RANDOM_SEED = 1; + +Layout.prototype = Object.create(Emitter.prototype); + +Layout.prototype.getGraphManager = function () { + return this.graphManager; +}; + +Layout.prototype.getAllNodes = function () { + return this.graphManager.getAllNodes(); +}; + +Layout.prototype.getAllEdges = function () { + return this.graphManager.getAllEdges(); +}; + +Layout.prototype.getAllNodesToApplyGravitation = function () { + return this.graphManager.getAllNodesToApplyGravitation(); +}; + +Layout.prototype.newGraphManager = function () { + var gm = new LGraphManager(this); + this.graphManager = gm; + return gm; +}; + +Layout.prototype.newGraph = function (vGraph) { + return new LGraph(null, this.graphManager, vGraph); +}; + +Layout.prototype.newNode = function (vNode) { + return new LNode(this.graphManager, vNode); +}; + +Layout.prototype.newEdge = function (vEdge) { + return new LEdge(null, null, vEdge); +}; + +Layout.prototype.checkLayoutSuccess = function () { + return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge(); +}; + +Layout.prototype.runLayout = function () { + this.isLayoutFinished = false; + + if (this.tilingPreLayout) { + this.tilingPreLayout(); + } + + this.initParameters(); + var isLayoutSuccessfull; + + if (this.checkLayoutSuccess()) { + isLayoutSuccessfull = false; + } else { + isLayoutSuccessfull = this.layout(); + } + + if (LayoutConstants.ANIMATE === 'during') { + // If this is a 'during' layout animation. Layout is not finished yet. + // We need to perform these in index.js when layout is really finished. + return false; + } + + if (isLayoutSuccessfull) { + if (!this.isSubLayout) { + this.doPostLayout(); + } + } + + if (this.tilingPostLayout) { + this.tilingPostLayout(); + } + + this.isLayoutFinished = true; + + return isLayoutSuccessfull; +}; + +/** + * This method performs the operations required after layout. + */ +Layout.prototype.doPostLayout = function () { + //assert !isSubLayout : "Should not be called on sub-layout!"; + // Propagate geometric changes to v-level objects + if (!this.incremental) { + this.transform(); + } + this.update(); +}; + +/** + * This method updates the geometry of the target graph according to + * calculated layout. + */ +Layout.prototype.update2 = function () { + // update bend points + if (this.createBendsAsNeeded) { + this.createBendpointsFromDummyNodes(); + + // reset all edges, since the topology has changed + this.graphManager.resetAllEdges(); + } + + // perform edge, node and root updates if layout is not called + // remotely + if (!this.isRemoteUse) { + // update all edges + var edge; + var allEdges = this.graphManager.getAllEdges(); + for (var i = 0; i < allEdges.length; i++) { + edge = allEdges[i]; + // this.update(edge); + } + + // recursively update nodes + var node; + var nodes = this.graphManager.getRoot().getNodes(); + for (var i = 0; i < nodes.length; i++) { + node = nodes[i]; + // this.update(node); + } + + // update root graph + this.update(this.graphManager.getRoot()); + } +}; + +Layout.prototype.update = function (obj) { + if (obj == null) { + this.update2(); + } else if (obj instanceof LNode) { + var node = obj; + if (node.getChild() != null) { + // since node is compound, recursively update child nodes + var nodes = node.getChild().getNodes(); + for (var i = 0; i < nodes.length; i++) { + update(nodes[i]); + } + } + + // if the l-level node is associated with a v-level graph object, + // then it is assumed that the v-level node implements the + // interface Updatable. + if (node.vGraphObject != null) { + // cast to Updatable without any type check + var vNode = node.vGraphObject; + + // call the update method of the interface + vNode.update(node); + } + } else if (obj instanceof LEdge) { + var edge = obj; + // if the l-level edge is associated with a v-level graph object, + // then it is assumed that the v-level edge implements the + // interface Updatable. + + if (edge.vGraphObject != null) { + // cast to Updatable without any type check + var vEdge = edge.vGraphObject; + + // call the update method of the interface + vEdge.update(edge); + } + } else if (obj instanceof LGraph) { + var graph = obj; + // if the l-level graph is associated with a v-level graph object, + // then it is assumed that the v-level object implements the + // interface Updatable. + + if (graph.vGraphObject != null) { + // cast to Updatable without any type check + var vGraph = graph.vGraphObject; + + // call the update method of the interface + vGraph.update(graph); + } + } +}; + +/** + * This method is used to set all layout parameters to default values + * determined at compile time. + */ +Layout.prototype.initParameters = function () { + if (!this.isSubLayout) { + this.layoutQuality = LayoutConstants.QUALITY; + this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT; + this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD; + this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT; + this.incremental = LayoutConstants.DEFAULT_INCREMENTAL; + this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED; + this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES; + } + + if (this.animationDuringLayout) { + this.animationOnLayout = false; + } +}; + +Layout.prototype.transform = function (newLeftTop) { + if (newLeftTop == undefined) { + this.transform(new PointD(0, 0)); + } else { + // create a transformation object (from Eclipse to layout). When an + // inverse transform is applied, we get upper-left coordinate of the + // drawing or the root graph at given input coordinate (some margins + // already included in calculation of left-top). + + var trans = new Transform(); + var leftTop = this.graphManager.getRoot().updateLeftTop(); + + if (leftTop != null) { + trans.setWorldOrgX(newLeftTop.x); + trans.setWorldOrgY(newLeftTop.y); + + trans.setDeviceOrgX(leftTop.x); + trans.setDeviceOrgY(leftTop.y); + + var nodes = this.getAllNodes(); + var node; + + for (var i = 0; i < nodes.length; i++) { + node = nodes[i]; + node.transform(trans); + } + } + } +}; + +Layout.prototype.positionNodesRandomly = function (graph) { + + if (graph == undefined) { + //assert !this.incremental; + this.positionNodesRandomly(this.getGraphManager().getRoot()); + this.getGraphManager().getRoot().updateBounds(true); + } else { + var lNode; + var childGraph; + + var nodes = graph.getNodes(); + for (var i = 0; i < nodes.length; i++) { + lNode = nodes[i]; + childGraph = lNode.getChild(); + + if (childGraph == null) { + lNode.scatter(); + } else if (childGraph.getNodes().length == 0) { + lNode.scatter(); + } else { + this.positionNodesRandomly(childGraph); + lNode.updateBounds(); + } + } + } +}; + +/** + * This method returns a list of trees where each tree is represented as a + * list of l-nodes. The method returns a list of size 0 when: + * - The graph is not flat or + * - One of the component(s) of the graph is not a tree. + */ +Layout.prototype.getFlatForest = function () { + var flatForest = []; + var isForest = true; + + // Quick reference for all nodes in the graph manager associated with + // this layout. The list should not be changed. + var allNodes = this.graphManager.getRoot().getNodes(); + + // First be sure that the graph is flat + var isFlat = true; + + for (var i = 0; i < allNodes.length; i++) { + if (allNodes[i].getChild() != null) { + isFlat = false; + } + } + + // Return empty forest if the graph is not flat. + if (!isFlat) { + return flatForest; + } + + // Run BFS for each component of the graph. + + var visited = new Set(); + var toBeVisited = []; + var parents = new Map(); + var unProcessedNodes = []; + + unProcessedNodes = unProcessedNodes.concat(allNodes); + + // Each iteration of this loop finds a component of the graph and + // decides whether it is a tree or not. If it is a tree, adds it to the + // forest and continued with the next component. + + while (unProcessedNodes.length > 0 && isForest) { + toBeVisited.push(unProcessedNodes[0]); + + // Start the BFS. Each iteration of this loop visits a node in a + // BFS manner. + while (toBeVisited.length > 0 && isForest) { + //pool operation + var currentNode = toBeVisited[0]; + toBeVisited.splice(0, 1); + visited.add(currentNode); + + // Traverse all neighbors of this node + var neighborEdges = currentNode.getEdges(); + + for (var i = 0; i < neighborEdges.length; i++) { + var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode); + + // If BFS is not growing from this neighbor. + if (parents.get(currentNode) != currentNeighbor) { + // We haven't previously visited this neighbor. + if (!visited.has(currentNeighbor)) { + toBeVisited.push(currentNeighbor); + parents.set(currentNeighbor, currentNode); + } + // Since we have previously visited this neighbor and + // this neighbor is not parent of currentNode, given + // graph contains a component that is not tree, hence + // it is not a forest. + else { + isForest = false; + break; + } + } + } + } + + // The graph contains a component that is not a tree. Empty + // previously found trees. The method will end. + if (!isForest) { + flatForest = []; + } + // Save currently visited nodes as a tree in our forest. Reset + // visited and parents lists. Continue with the next component of + // the graph, if any. + else { + var temp = [].concat(_toConsumableArray(visited)); + flatForest.push(temp); + //flatForest = flatForest.concat(temp); + //unProcessedNodes.removeAll(visited); + for (var i = 0; i < temp.length; i++) { + var value = temp[i]; + var index = unProcessedNodes.indexOf(value); + if (index > -1) { + unProcessedNodes.splice(index, 1); + } + } + visited = new Set(); + parents = new Map(); + } + } + + return flatForest; +}; + +/** + * This method creates dummy nodes (an l-level node with minimal dimensions) + * for the given edge (one per bendpoint). The existing l-level structure + * is updated accordingly. + */ +Layout.prototype.createDummyNodesForBendpoints = function (edge) { + var dummyNodes = []; + var prev = edge.source; + + var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target); + + for (var i = 0; i < edge.bendpoints.length; i++) { + // create new dummy node + var dummyNode = this.newNode(null); + dummyNode.setRect(new Point(0, 0), new Dimension(1, 1)); + + graph.add(dummyNode); + + // create new dummy edge between prev and dummy node + var dummyEdge = this.newEdge(null); + this.graphManager.add(dummyEdge, prev, dummyNode); + + dummyNodes.add(dummyNode); + prev = dummyNode; + } + + var dummyEdge = this.newEdge(null); + this.graphManager.add(dummyEdge, prev, edge.target); + + this.edgeToDummyNodes.set(edge, dummyNodes); + + // remove real edge from graph manager if it is inter-graph + if (edge.isInterGraph()) { + this.graphManager.remove(edge); + } + // else, remove the edge from the current graph + else { + graph.remove(edge); + } + + return dummyNodes; +}; + +/** + * This method creates bendpoints for edges from the dummy nodes + * at l-level. + */ +Layout.prototype.createBendpointsFromDummyNodes = function () { + var edges = []; + edges = edges.concat(this.graphManager.getAllEdges()); + edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges); + + for (var k = 0; k < edges.length; k++) { + var lEdge = edges[k]; + + if (lEdge.bendpoints.length > 0) { + var path = this.edgeToDummyNodes.get(lEdge); + + for (var i = 0; i < path.length; i++) { + var dummyNode = path[i]; + var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY()); + + // update bendpoint's location according to dummy node + var ebp = lEdge.bendpoints.get(i); + ebp.x = p.x; + ebp.y = p.y; + + // remove the dummy node, dummy edges incident with this + // dummy node is also removed (within the remove method) + dummyNode.getOwner().remove(dummyNode); + } + + // add the real edge to graph + this.graphManager.add(lEdge, lEdge.source, lEdge.target); + } + } +}; + +Layout.transform = function (sliderValue, defaultValue, minDiv, maxMul) { + if (minDiv != undefined && maxMul != undefined) { + var value = defaultValue; + + if (sliderValue <= 50) { + var minValue = defaultValue / minDiv; + value -= (defaultValue - minValue) / 50 * (50 - sliderValue); + } else { + var maxValue = defaultValue * maxMul; + value += (maxValue - defaultValue) / 50 * (sliderValue - 50); + } + + return value; + } else { + var a, b; + + if (sliderValue <= 50) { + a = 9.0 * defaultValue / 500.0; + b = defaultValue / 10.0; + } else { + a = 9.0 * defaultValue / 50.0; + b = -8 * defaultValue; + } + + return a * sliderValue + b; + } +}; + +/** + * This method finds and returns the center of the given nodes, assuming + * that the given nodes form a tree in themselves. + */ +Layout.findCenterOfTree = function (nodes) { + var list = []; + list = list.concat(nodes); + + var removedNodes = []; + var remainingDegrees = new Map(); + var foundCenter = false; + var centerNode = null; + + if (list.length == 1 || list.length == 2) { + foundCenter = true; + centerNode = list[0]; + } + + for (var i = 0; i < list.length; i++) { + var node = list[i]; + var degree = node.getNeighborsList().size; + remainingDegrees.set(node, node.getNeighborsList().size); + + if (degree == 1) { + removedNodes.push(node); + } + } + + var tempList = []; + tempList = tempList.concat(removedNodes); + + while (!foundCenter) { + var tempList2 = []; + tempList2 = tempList2.concat(tempList); + tempList = []; + + for (var i = 0; i < list.length; i++) { + var node = list[i]; + + var index = list.indexOf(node); + if (index >= 0) { + list.splice(index, 1); + } + + var neighbours = node.getNeighborsList(); + + neighbours.forEach(function (neighbour) { + if (removedNodes.indexOf(neighbour) < 0) { + var otherDegree = remainingDegrees.get(neighbour); + var newDegree = otherDegree - 1; + + if (newDegree == 1) { + tempList.push(neighbour); + } + + remainingDegrees.set(neighbour, newDegree); + } + }); + } + + removedNodes = removedNodes.concat(tempList); + + if (list.length == 1 || list.length == 2) { + foundCenter = true; + centerNode = list[0]; + } + } + + return centerNode; +}; + +/** + * During the coarsening process, this layout may be referenced by two graph managers + * this setter function grants access to change the currently being used graph manager + */ +Layout.prototype.setGraphManager = function (gm) { + this.graphManager = gm; +}; + +module.exports = Layout; + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function RandomSeed() {} +// adapted from: https://stackoverflow.com/a/19303725 +RandomSeed.seed = 1; +RandomSeed.x = 0; + +RandomSeed.nextDouble = function () { + RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000; + return RandomSeed.x - Math.floor(RandomSeed.x); +}; + +module.exports = RandomSeed; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var PointD = __webpack_require__(5); + +function Transform(x, y) { + this.lworldOrgX = 0.0; + this.lworldOrgY = 0.0; + this.ldeviceOrgX = 0.0; + this.ldeviceOrgY = 0.0; + this.lworldExtX = 1.0; + this.lworldExtY = 1.0; + this.ldeviceExtX = 1.0; + this.ldeviceExtY = 1.0; +} + +Transform.prototype.getWorldOrgX = function () { + return this.lworldOrgX; +}; + +Transform.prototype.setWorldOrgX = function (wox) { + this.lworldOrgX = wox; +}; + +Transform.prototype.getWorldOrgY = function () { + return this.lworldOrgY; +}; + +Transform.prototype.setWorldOrgY = function (woy) { + this.lworldOrgY = woy; +}; + +Transform.prototype.getWorldExtX = function () { + return this.lworldExtX; +}; + +Transform.prototype.setWorldExtX = function (wex) { + this.lworldExtX = wex; +}; + +Transform.prototype.getWorldExtY = function () { + return this.lworldExtY; +}; + +Transform.prototype.setWorldExtY = function (wey) { + this.lworldExtY = wey; +}; + +/* Device related */ + +Transform.prototype.getDeviceOrgX = function () { + return this.ldeviceOrgX; +}; + +Transform.prototype.setDeviceOrgX = function (dox) { + this.ldeviceOrgX = dox; +}; + +Transform.prototype.getDeviceOrgY = function () { + return this.ldeviceOrgY; +}; + +Transform.prototype.setDeviceOrgY = function (doy) { + this.ldeviceOrgY = doy; +}; + +Transform.prototype.getDeviceExtX = function () { + return this.ldeviceExtX; +}; + +Transform.prototype.setDeviceExtX = function (dex) { + this.ldeviceExtX = dex; +}; + +Transform.prototype.getDeviceExtY = function () { + return this.ldeviceExtY; +}; + +Transform.prototype.setDeviceExtY = function (dey) { + this.ldeviceExtY = dey; +}; + +Transform.prototype.transformX = function (x) { + var xDevice = 0.0; + var worldExtX = this.lworldExtX; + if (worldExtX != 0.0) { + xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX; + } + + return xDevice; +}; + +Transform.prototype.transformY = function (y) { + var yDevice = 0.0; + var worldExtY = this.lworldExtY; + if (worldExtY != 0.0) { + yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY; + } + + return yDevice; +}; + +Transform.prototype.inverseTransformX = function (x) { + var xWorld = 0.0; + var deviceExtX = this.ldeviceExtX; + if (deviceExtX != 0.0) { + xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX; + } + + return xWorld; +}; + +Transform.prototype.inverseTransformY = function (y) { + var yWorld = 0.0; + var deviceExtY = this.ldeviceExtY; + if (deviceExtY != 0.0) { + yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY; + } + return yWorld; +}; + +Transform.prototype.inverseTransformPoint = function (inPoint) { + var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y)); + return outPoint; +}; + +module.exports = Transform; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var Layout = __webpack_require__(15); +var FDLayoutConstants = __webpack_require__(4); +var LayoutConstants = __webpack_require__(0); +var IGeometry = __webpack_require__(8); +var IMath = __webpack_require__(9); + +function FDLayout() { + Layout.call(this); + + this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION; + this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH; + this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH; + this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR; + this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR; + this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100; + this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; + this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL; + this.totalDisplacement = 0.0; + this.oldTotalDisplacement = 0.0; + this.maxIterations = FDLayoutConstants.MAX_ITERATIONS; +} + +FDLayout.prototype = Object.create(Layout.prototype); + +for (var prop in Layout) { + FDLayout[prop] = Layout[prop]; +} + +FDLayout.prototype.initParameters = function () { + Layout.prototype.initParameters.call(this, arguments); + + this.totalIterations = 0; + this.notAnimatedIterations = 0; + + this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION; + + this.grid = []; +}; + +FDLayout.prototype.calcIdealEdgeLengths = function () { + var edge; + var originalIdealLength; + var lcaDepth; + var source; + var target; + var sizeOfSourceInLca; + var sizeOfTargetInLca; + + var allEdges = this.getGraphManager().getAllEdges(); + for (var i = 0; i < allEdges.length; i++) { + edge = allEdges[i]; + + originalIdealLength = edge.idealLength; + + if (edge.isInterGraph) { + source = edge.getSource(); + target = edge.getTarget(); + + sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize(); + sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize(); + + if (this.useSmartIdealEdgeLengthCalculation) { + edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE; + } + + lcaDepth = edge.getLca().getInclusionTreeDepth(); + + edge.idealLength += originalIdealLength * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth); + } + } +}; + +FDLayout.prototype.initSpringEmbedder = function () { + + var s = this.getAllNodes().length; + if (this.incremental) { + if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { + this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); + } + this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL; + } else { + if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) { + this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR)); + } else { + this.coolingFactor = 1.0; + } + this.initialCoolingFactor = this.coolingFactor; + this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT; + } + + this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations); + + // Reassign this attribute by using new constant value + this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100; + this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length; + + this.repulsionRange = this.calcRepulsionRange(); +}; + +FDLayout.prototype.calcSpringForces = function () { + var lEdges = this.getAllEdges(); + var edge; + + for (var i = 0; i < lEdges.length; i++) { + edge = lEdges[i]; + + this.calcSpringForce(edge, edge.idealLength); + } +}; + +FDLayout.prototype.calcRepulsionForces = function () { + var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var i, j; + var nodeA, nodeB; + var lNodes = this.getAllNodes(); + var processedNodeSet; + + if (this.useFRGridVariant) { + if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) { + this.updateGrid(); + } + + processedNodeSet = new Set(); + + // calculate repulsion forces between each nodes and its surrounding + for (i = 0; i < lNodes.length; i++) { + nodeA = lNodes[i]; + this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate); + processedNodeSet.add(nodeA); + } + } else { + for (i = 0; i < lNodes.length; i++) { + nodeA = lNodes[i]; + + for (j = i + 1; j < lNodes.length; j++) { + nodeB = lNodes[j]; + + // If both nodes are not members of the same graph, skip. + if (nodeA.getOwner() != nodeB.getOwner()) { + continue; + } + + this.calcRepulsionForce(nodeA, nodeB); + } + } + } +}; + +FDLayout.prototype.calcGravitationalForces = function () { + var node; + var lNodes = this.getAllNodesToApplyGravitation(); + + for (var i = 0; i < lNodes.length; i++) { + node = lNodes[i]; + this.calcGravitationalForce(node); + } +}; + +FDLayout.prototype.moveNodes = function () { + var lNodes = this.getAllNodes(); + var node; + + for (var i = 0; i < lNodes.length; i++) { + node = lNodes[i]; + node.move(); + } +}; + +FDLayout.prototype.calcSpringForce = function (edge, idealLength) { + var sourceNode = edge.getSource(); + var targetNode = edge.getTarget(); + + var length; + var springForce; + var springForceX; + var springForceY; + + // Update edge length + if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) { + edge.updateLengthSimple(); + } else { + edge.updateLength(); + + if (edge.isOverlapingSourceAndTarget) { + return; + } + } + + length = edge.getLength(); + + if (length == 0) return; + + // Calculate spring forces + springForce = edge.edgeElasticity * (length - idealLength); + + // Project force onto x and y axes + springForceX = springForce * (edge.lengthX / length); + springForceY = springForce * (edge.lengthY / length); + + // Apply forces on the end nodes + sourceNode.springForceX += springForceX; + sourceNode.springForceY += springForceY; + targetNode.springForceX -= springForceX; + targetNode.springForceY -= springForceY; +}; + +FDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) { + var rectA = nodeA.getRect(); + var rectB = nodeB.getRect(); + var overlapAmount = new Array(2); + var clipPoints = new Array(4); + var distanceX; + var distanceY; + var distanceSquared; + var distance; + var repulsionForce; + var repulsionForceX; + var repulsionForceY; + + if (rectA.intersects(rectB)) // two nodes overlap + { + // calculate separation amount in x and y directions + IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0); + + repulsionForceX = 2 * overlapAmount[0]; + repulsionForceY = 2 * overlapAmount[1]; + + var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren); + + // Apply forces on the two nodes + nodeA.repulsionForceX -= childrenConstant * repulsionForceX; + nodeA.repulsionForceY -= childrenConstant * repulsionForceY; + nodeB.repulsionForceX += childrenConstant * repulsionForceX; + nodeB.repulsionForceY += childrenConstant * repulsionForceY; + } else // no overlap + { + // calculate distance + + if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers + { + distanceX = rectB.getCenterX() - rectA.getCenterX(); + distanceY = rectB.getCenterY() - rectA.getCenterY(); + } else // use clipping points + { + IGeometry.getIntersection(rectA, rectB, clipPoints); + + distanceX = clipPoints[2] - clipPoints[0]; + distanceY = clipPoints[3] - clipPoints[1]; + } + + // No repulsion range. FR grid variant should take care of this. + if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) { + distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST; + } + + if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) { + distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST; + } + + distanceSquared = distanceX * distanceX + distanceY * distanceY; + distance = Math.sqrt(distanceSquared); + + // Here we use half of the nodes' repulsion values for backward compatibility + repulsionForce = (nodeA.nodeRepulsion / 2 + nodeB.nodeRepulsion / 2) * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared; + + // Project force onto x and y axes + repulsionForceX = repulsionForce * distanceX / distance; + repulsionForceY = repulsionForce * distanceY / distance; + + // Apply forces on the two nodes + nodeA.repulsionForceX -= repulsionForceX; + nodeA.repulsionForceY -= repulsionForceY; + nodeB.repulsionForceX += repulsionForceX; + nodeB.repulsionForceY += repulsionForceY; + } +}; + +FDLayout.prototype.calcGravitationalForce = function (node) { + var ownerGraph; + var ownerCenterX; + var ownerCenterY; + var distanceX; + var distanceY; + var absDistanceX; + var absDistanceY; + var estimatedSize; + ownerGraph = node.getOwner(); + + ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2; + ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2; + distanceX = node.getCenterX() - ownerCenterX; + distanceY = node.getCenterY() - ownerCenterY; + absDistanceX = Math.abs(distanceX) + node.getWidth() / 2; + absDistanceY = Math.abs(distanceY) + node.getHeight() / 2; + + if (node.getOwner() == this.graphManager.getRoot()) // in the root graph + { + estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor; + + if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { + node.gravitationForceX = -this.gravityConstant * distanceX; + node.gravitationForceY = -this.gravityConstant * distanceY; + } + } else // inside a compound + { + estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor; + + if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) { + node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant; + node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant; + } + } +}; + +FDLayout.prototype.isConverged = function () { + var converged; + var oscilating = false; + + if (this.totalIterations > this.maxIterations / 3) { + oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2; + } + + converged = this.totalDisplacement < this.totalDisplacementThreshold; + + this.oldTotalDisplacement = this.totalDisplacement; + + return converged || oscilating; +}; + +FDLayout.prototype.animate = function () { + if (this.animationDuringLayout && !this.isSubLayout) { + if (this.notAnimatedIterations == this.animationPeriod) { + this.update(); + this.notAnimatedIterations = 0; + } else { + this.notAnimatedIterations++; + } + } +}; + +//This method calculates the number of children (weight) for all nodes +FDLayout.prototype.calcNoOfChildrenForAllNodes = function () { + var node; + var allNodes = this.graphManager.getAllNodes(); + + for (var i = 0; i < allNodes.length; i++) { + node = allNodes[i]; + node.noOfChildren = node.getNoOfChildren(); + } +}; + +// ----------------------------------------------------------------------------- +// Section: FR-Grid Variant Repulsion Force Calculation +// ----------------------------------------------------------------------------- + +FDLayout.prototype.calcGrid = function (graph) { + + var sizeX = 0; + var sizeY = 0; + + sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange)); + sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange)); + + var grid = new Array(sizeX); + + for (var i = 0; i < sizeX; i++) { + grid[i] = new Array(sizeY); + } + + for (var i = 0; i < sizeX; i++) { + for (var j = 0; j < sizeY; j++) { + grid[i][j] = new Array(); + } + } + + return grid; +}; + +FDLayout.prototype.addNodeToGrid = function (v, left, top) { + + var startX = 0; + var finishX = 0; + var startY = 0; + var finishY = 0; + + startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange)); + finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange)); + startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange)); + finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange)); + + for (var i = startX; i <= finishX; i++) { + for (var j = startY; j <= finishY; j++) { + this.grid[i][j].push(v); + v.setGridCoordinates(startX, finishX, startY, finishY); + } + } +}; + +FDLayout.prototype.updateGrid = function () { + var i; + var nodeA; + var lNodes = this.getAllNodes(); + + this.grid = this.calcGrid(this.graphManager.getRoot()); + + // put all nodes to proper grid cells + for (i = 0; i < lNodes.length; i++) { + nodeA = lNodes[i]; + this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop()); + } +}; + +FDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) { + + if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) { + var surrounding = new Set(); + nodeA.surrounding = new Array(); + var nodeB; + var grid = this.grid; + + for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) { + for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) { + if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) { + for (var k = 0; k < grid[i][j].length; k++) { + nodeB = grid[i][j][k]; + + // If both nodes are not members of the same graph, + // or both nodes are the same, skip. + if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) { + continue; + } + + // check if the repulsion force between + // nodeA and nodeB has already been calculated + if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) { + var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2); + var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2); + + // if the distance between nodeA and nodeB + // is less then calculation range + if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) { + //then add nodeB to surrounding of nodeA + surrounding.add(nodeB); + } + } + } + } + } + } + + nodeA.surrounding = [].concat(_toConsumableArray(surrounding)); + } + for (i = 0; i < nodeA.surrounding.length; i++) { + this.calcRepulsionForce(nodeA, nodeA.surrounding[i]); + } +}; + +FDLayout.prototype.calcRepulsionRange = function () { + return 0.0; +}; + +module.exports = FDLayout; + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LEdge = __webpack_require__(1); +var FDLayoutConstants = __webpack_require__(4); + +function FDLayoutEdge(source, target, vEdge) { + LEdge.call(this, source, target, vEdge); + + // Ideal length and elasticity value for this edge + this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH; + this.edgeElasticity = FDLayoutConstants.DEFAULT_SPRING_STRENGTH; +} + +FDLayoutEdge.prototype = Object.create(LEdge.prototype); + +for (var prop in LEdge) { + FDLayoutEdge[prop] = LEdge[prop]; +} + +module.exports = FDLayoutEdge; + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var LNode = __webpack_require__(3); +var FDLayoutConstants = __webpack_require__(4); + +function FDLayoutNode(gm, loc, size, vNode) { + // alternative constructor is handled inside LNode + LNode.call(this, gm, loc, size, vNode); + + // Repulsion value of this node + this.nodeRepulsion = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH; + + //Spring, repulsion and gravitational forces acting on this node + this.springForceX = 0; + this.springForceY = 0; + this.repulsionForceX = 0; + this.repulsionForceY = 0; + this.gravitationForceX = 0; + this.gravitationForceY = 0; + //Amount by which this node is to be moved in this iteration + this.displacementX = 0; + this.displacementY = 0; + + //Start and finish grid coordinates that this node is fallen into + this.startX = 0; + this.finishX = 0; + this.startY = 0; + this.finishY = 0; + + //Geometric neighbors of this node + this.surrounding = []; +} + +FDLayoutNode.prototype = Object.create(LNode.prototype); + +for (var prop in LNode) { + FDLayoutNode[prop] = LNode[prop]; +} + +FDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) { + this.startX = _startX; + this.finishX = _finishX; + this.startY = _startY; + this.finishY = _finishY; +}; + +module.exports = FDLayoutNode; + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function DimensionD(width, height) { + this.width = 0; + this.height = 0; + if (width !== null && height !== null) { + this.height = height; + this.width = width; + } +} + +DimensionD.prototype.getWidth = function () { + return this.width; +}; + +DimensionD.prototype.setWidth = function (width) { + this.width = width; +}; + +DimensionD.prototype.getHeight = function () { + return this.height; +}; + +DimensionD.prototype.setHeight = function (height) { + this.height = height; +}; + +module.exports = DimensionD; + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var UniqueIDGeneretor = __webpack_require__(14); + +function HashMap() { + this.map = {}; + this.keys = []; +} + +HashMap.prototype.put = function (key, value) { + var theId = UniqueIDGeneretor.createID(key); + if (!this.contains(theId)) { + this.map[theId] = value; + this.keys.push(key); + } +}; + +HashMap.prototype.contains = function (key) { + var theId = UniqueIDGeneretor.createID(key); + return this.map[key] != null; +}; + +HashMap.prototype.get = function (key) { + var theId = UniqueIDGeneretor.createID(key); + return this.map[theId]; +}; + +HashMap.prototype.keySet = function () { + return this.keys; +}; + +module.exports = HashMap; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var UniqueIDGeneretor = __webpack_require__(14); + +function HashSet() { + this.set = {}; +} +; + +HashSet.prototype.add = function (obj) { + var theId = UniqueIDGeneretor.createID(obj); + if (!this.contains(theId)) this.set[theId] = obj; +}; + +HashSet.prototype.remove = function (obj) { + delete this.set[UniqueIDGeneretor.createID(obj)]; +}; + +HashSet.prototype.clear = function () { + this.set = {}; +}; + +HashSet.prototype.contains = function (obj) { + return this.set[UniqueIDGeneretor.createID(obj)] == obj; +}; + +HashSet.prototype.isEmpty = function () { + return this.size() === 0; +}; + +HashSet.prototype.size = function () { + return Object.keys(this.set).length; +}; + +//concats this.set to the given list +HashSet.prototype.addAllTo = function (list) { + var keys = Object.keys(this.set); + var length = keys.length; + for (var i = 0; i < length; i++) { + list.push(this.set[keys[i]]); + } +}; + +HashSet.prototype.size = function () { + return Object.keys(this.set).length; +}; + +HashSet.prototype.addAll = function (list) { + var s = list.length; + for (var i = 0; i < s; i++) { + var v = list[i]; + this.add(v); + } +}; + +module.exports = HashSet; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +// Some matrix (1d and 2d array) operations +function Matrix() {} + +/** + * matrix multiplication + * array1, array2 and result are 2d arrays + */ +Matrix.multMat = function (array1, array2) { + var result = []; + + for (var i = 0; i < array1.length; i++) { + result[i] = []; + for (var j = 0; j < array2[0].length; j++) { + result[i][j] = 0; + for (var k = 0; k < array1[0].length; k++) { + result[i][j] += array1[i][k] * array2[k][j]; + } + } + } + return result; +}; + +/** + * matrix transpose + * array and result are 2d arrays + */ +Matrix.transpose = function (array) { + var result = []; + + for (var i = 0; i < array[0].length; i++) { + result[i] = []; + for (var j = 0; j < array.length; j++) { + result[i][j] = array[j][i]; + } + } + + return result; +}; + +/** + * multiply array with constant + * array and result are 1d arrays + */ +Matrix.multCons = function (array, constant) { + var result = []; + + for (var i = 0; i < array.length; i++) { + result[i] = array[i] * constant; + } + + return result; +}; + +/** + * substract two arrays + * array1, array2 and result are 1d arrays + */ +Matrix.minusOp = function (array1, array2) { + var result = []; + + for (var i = 0; i < array1.length; i++) { + result[i] = array1[i] - array2[i]; + } + + return result; +}; + +/** + * dot product of two arrays with same size + * array1 and array2 are 1d arrays + */ +Matrix.dotProduct = function (array1, array2) { + var product = 0; + + for (var i = 0; i < array1.length; i++) { + product += array1[i] * array2[i]; + } + + return product; +}; + +/** + * magnitude of an array + * array is 1d array + */ +Matrix.mag = function (array) { + return Math.sqrt(this.dotProduct(array, array)); +}; + +/** + * normalization of an array + * array and result are 1d array + */ +Matrix.normalize = function (array) { + var result = []; + var magnitude = this.mag(array); + + for (var i = 0; i < array.length; i++) { + result[i] = array[i] / magnitude; + } + + return result; +}; + +/** + * multiply an array with centering matrix + * array and result are 1d array + */ +Matrix.multGamma = function (array) { + var result = []; + var sum = 0; + + for (var i = 0; i < array.length; i++) { + sum += array[i]; + } + + sum *= -1 / array.length; + + for (var _i = 0; _i < array.length; _i++) { + result[_i] = sum + array[_i]; + } + return result; +}; + +/** + * a special matrix multiplication + * result = 0.5 * C * INV * C^T * array + * array and result are 1d, C and INV are 2d arrays + */ +Matrix.multL = function (array, C, INV) { + var result = []; + var temp1 = []; + var temp2 = []; + + // multiply by C^T + for (var i = 0; i < C[0].length; i++) { + var sum = 0; + for (var j = 0; j < C.length; j++) { + sum += -0.5 * C[j][i] * array[j]; + } + temp1[i] = sum; + } + // multiply the result by INV + for (var _i2 = 0; _i2 < INV.length; _i2++) { + var _sum = 0; + for (var _j = 0; _j < INV.length; _j++) { + _sum += INV[_i2][_j] * temp1[_j]; + } + temp2[_i2] = _sum; + } + // multiply the result by C + for (var _i3 = 0; _i3 < C.length; _i3++) { + var _sum2 = 0; + for (var _j2 = 0; _j2 < C[0].length; _j2++) { + _sum2 += C[_i3][_j2] * temp2[_j2]; + } + result[_i3] = _sum2; + } + + return result; +}; + +module.exports = Matrix; + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * A classic Quicksort algorithm with Hoare's partition + * - Works also on LinkedList objects + * + * Copyright: i-Vis Research Group, Bilkent University, 2007 - present + */ + +var LinkedList = __webpack_require__(11); + +var Quicksort = function () { + function Quicksort(A, compareFunction) { + _classCallCheck(this, Quicksort); + + if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction; + + var length = void 0; + if (A instanceof LinkedList) length = A.size();else length = A.length; + + this._quicksort(A, 0, length - 1); + } + + _createClass(Quicksort, [{ + key: '_quicksort', + value: function _quicksort(A, p, r) { + if (p < r) { + var q = this._partition(A, p, r); + this._quicksort(A, p, q); + this._quicksort(A, q + 1, r); + } + } + }, { + key: '_partition', + value: function _partition(A, p, r) { + var x = this._get(A, p); + var i = p; + var j = r; + while (true) { + while (this.compareFunction(x, this._get(A, j))) { + j--; + }while (this.compareFunction(this._get(A, i), x)) { + i++; + }if (i < j) { + this._swap(A, i, j); + i++; + j--; + } else return j; + } + } + }, { + key: '_get', + value: function _get(object, index) { + if (object instanceof LinkedList) return object.get_object_at(index);else return object[index]; + } + }, { + key: '_set', + value: function _set(object, index, value) { + if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value; + } + }, { + key: '_swap', + value: function _swap(A, i, j) { + var temp = this._get(A, i); + this._set(A, i, this._get(A, j)); + this._set(A, j, temp); + } + }, { + key: '_defaultCompareFunction', + value: function _defaultCompareFunction(a, b) { + return b > a; + } + }]); + + return Quicksort; +}(); + +module.exports = Quicksort; + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +// Singular Value Decomposition implementation +function SVD() {}; + +/* Below singular value decomposition (svd) code including hypot function is adopted from https://github.com/dragonfly-ai/JamaJS + Some changes are applied to make the code compatible with the fcose code and to make it independent from Jama. + Input matrix is changed to a 2D array instead of Jama matrix. Matrix dimensions are taken according to 2D array instead of using Jama functions. + An object that includes singular value components is created for return. + The types of input parameters of the hypot function are removed. + let is used instead of var for the variable initialization. +*/ +/* + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +SVD.svd = function (A) { + this.U = null; + this.V = null; + this.s = null; + this.m = 0; + this.n = 0; + this.m = A.length; + this.n = A[0].length; + var nu = Math.min(this.m, this.n); + this.s = function (s) { + var a = []; + while (s-- > 0) { + a.push(0); + }return a; + }(Math.min(this.m + 1, this.n)); + this.U = function (dims) { + var allocate = function allocate(dims) { + if (dims.length == 0) { + return 0; + } else { + var array = []; + for (var i = 0; i < dims[0]; i++) { + array.push(allocate(dims.slice(1))); + } + return array; + } + }; + return allocate(dims); + }([this.m, nu]); + this.V = function (dims) { + var allocate = function allocate(dims) { + if (dims.length == 0) { + return 0; + } else { + var array = []; + for (var i = 0; i < dims[0]; i++) { + array.push(allocate(dims.slice(1))); + } + return array; + } + }; + return allocate(dims); + }([this.n, this.n]); + var e = function (s) { + var a = []; + while (s-- > 0) { + a.push(0); + }return a; + }(this.n); + var work = function (s) { + var a = []; + while (s-- > 0) { + a.push(0); + }return a; + }(this.m); + var wantu = true; + var wantv = true; + var nct = Math.min(this.m - 1, this.n); + var nrt = Math.max(0, Math.min(this.n - 2, this.m)); + for (var k = 0; k < Math.max(nct, nrt); k++) { + if (k < nct) { + this.s[k] = 0; + for (var i = k; i < this.m; i++) { + this.s[k] = SVD.hypot(this.s[k], A[i][k]); + } + ; + if (this.s[k] !== 0.0) { + if (A[k][k] < 0.0) { + this.s[k] = -this.s[k]; + } + for (var _i = k; _i < this.m; _i++) { + A[_i][k] /= this.s[k]; + } + ; + A[k][k] += 1.0; + } + this.s[k] = -this.s[k]; + } + for (var j = k + 1; j < this.n; j++) { + if (function (lhs, rhs) { + return lhs && rhs; + }(k < nct, this.s[k] !== 0.0)) { + var t = 0; + for (var _i2 = k; _i2 < this.m; _i2++) { + t += A[_i2][k] * A[_i2][j]; + } + ; + t = -t / A[k][k]; + for (var _i3 = k; _i3 < this.m; _i3++) { + A[_i3][j] += t * A[_i3][k]; + } + ; + } + e[j] = A[k][j]; + } + ; + if (function (lhs, rhs) { + return lhs && rhs; + }(wantu, k < nct)) { + for (var _i4 = k; _i4 < this.m; _i4++) { + this.U[_i4][k] = A[_i4][k]; + } + ; + } + if (k < nrt) { + e[k] = 0; + for (var _i5 = k + 1; _i5 < this.n; _i5++) { + e[k] = SVD.hypot(e[k], e[_i5]); + } + ; + if (e[k] !== 0.0) { + if (e[k + 1] < 0.0) { + e[k] = -e[k]; + } + for (var _i6 = k + 1; _i6 < this.n; _i6++) { + e[_i6] /= e[k]; + } + ; + e[k + 1] += 1.0; + } + e[k] = -e[k]; + if (function (lhs, rhs) { + return lhs && rhs; + }(k + 1 < this.m, e[k] !== 0.0)) { + for (var _i7 = k + 1; _i7 < this.m; _i7++) { + work[_i7] = 0.0; + } + ; + for (var _j = k + 1; _j < this.n; _j++) { + for (var _i8 = k + 1; _i8 < this.m; _i8++) { + work[_i8] += e[_j] * A[_i8][_j]; + } + ; + } + ; + for (var _j2 = k + 1; _j2 < this.n; _j2++) { + var _t = -e[_j2] / e[k + 1]; + for (var _i9 = k + 1; _i9 < this.m; _i9++) { + A[_i9][_j2] += _t * work[_i9]; + } + ; + } + ; + } + if (wantv) { + for (var _i10 = k + 1; _i10 < this.n; _i10++) { + this.V[_i10][k] = e[_i10]; + }; + } + } + }; + var p = Math.min(this.n, this.m + 1); + if (nct < this.n) { + this.s[nct] = A[nct][nct]; + } + if (this.m < p) { + this.s[p - 1] = 0.0; + } + if (nrt + 1 < p) { + e[nrt] = A[nrt][p - 1]; + } + e[p - 1] = 0.0; + if (wantu) { + for (var _j3 = nct; _j3 < nu; _j3++) { + for (var _i11 = 0; _i11 < this.m; _i11++) { + this.U[_i11][_j3] = 0.0; + } + ; + this.U[_j3][_j3] = 1.0; + }; + for (var _k = nct - 1; _k >= 0; _k--) { + if (this.s[_k] !== 0.0) { + for (var _j4 = _k + 1; _j4 < nu; _j4++) { + var _t2 = 0; + for (var _i12 = _k; _i12 < this.m; _i12++) { + _t2 += this.U[_i12][_k] * this.U[_i12][_j4]; + }; + _t2 = -_t2 / this.U[_k][_k]; + for (var _i13 = _k; _i13 < this.m; _i13++) { + this.U[_i13][_j4] += _t2 * this.U[_i13][_k]; + }; + }; + for (var _i14 = _k; _i14 < this.m; _i14++) { + this.U[_i14][_k] = -this.U[_i14][_k]; + }; + this.U[_k][_k] = 1.0 + this.U[_k][_k]; + for (var _i15 = 0; _i15 < _k - 1; _i15++) { + this.U[_i15][_k] = 0.0; + }; + } else { + for (var _i16 = 0; _i16 < this.m; _i16++) { + this.U[_i16][_k] = 0.0; + }; + this.U[_k][_k] = 1.0; + } + }; + } + if (wantv) { + for (var _k2 = this.n - 1; _k2 >= 0; _k2--) { + if (function (lhs, rhs) { + return lhs && rhs; + }(_k2 < nrt, e[_k2] !== 0.0)) { + for (var _j5 = _k2 + 1; _j5 < nu; _j5++) { + var _t3 = 0; + for (var _i17 = _k2 + 1; _i17 < this.n; _i17++) { + _t3 += this.V[_i17][_k2] * this.V[_i17][_j5]; + }; + _t3 = -_t3 / this.V[_k2 + 1][_k2]; + for (var _i18 = _k2 + 1; _i18 < this.n; _i18++) { + this.V[_i18][_j5] += _t3 * this.V[_i18][_k2]; + }; + }; + } + for (var _i19 = 0; _i19 < this.n; _i19++) { + this.V[_i19][_k2] = 0.0; + }; + this.V[_k2][_k2] = 1.0; + }; + } + var pp = p - 1; + var iter = 0; + var eps = Math.pow(2.0, -52.0); + var tiny = Math.pow(2.0, -966.0); + while (p > 0) { + var _k3 = void 0; + var kase = void 0; + for (_k3 = p - 2; _k3 >= -1; _k3--) { + if (_k3 === -1) { + break; + } + if (Math.abs(e[_k3]) <= tiny + eps * (Math.abs(this.s[_k3]) + Math.abs(this.s[_k3 + 1]))) { + e[_k3] = 0.0; + break; + } + }; + if (_k3 === p - 2) { + kase = 4; + } else { + var ks = void 0; + for (ks = p - 1; ks >= _k3; ks--) { + if (ks === _k3) { + break; + } + var _t4 = (ks !== p ? Math.abs(e[ks]) : 0.0) + (ks !== _k3 + 1 ? Math.abs(e[ks - 1]) : 0.0); + if (Math.abs(this.s[ks]) <= tiny + eps * _t4) { + this.s[ks] = 0.0; + break; + } + }; + if (ks === _k3) { + kase = 3; + } else if (ks === p - 1) { + kase = 1; + } else { + kase = 2; + _k3 = ks; + } + } + _k3++; + switch (kase) { + case 1: + { + var f = e[p - 2]; + e[p - 2] = 0.0; + for (var _j6 = p - 2; _j6 >= _k3; _j6--) { + var _t5 = SVD.hypot(this.s[_j6], f); + var cs = this.s[_j6] / _t5; + var sn = f / _t5; + this.s[_j6] = _t5; + if (_j6 !== _k3) { + f = -sn * e[_j6 - 1]; + e[_j6 - 1] = cs * e[_j6 - 1]; + } + if (wantv) { + for (var _i20 = 0; _i20 < this.n; _i20++) { + _t5 = cs * this.V[_i20][_j6] + sn * this.V[_i20][p - 1]; + this.V[_i20][p - 1] = -sn * this.V[_i20][_j6] + cs * this.V[_i20][p - 1]; + this.V[_i20][_j6] = _t5; + }; + } + }; + }; + break; + case 2: + { + var _f = e[_k3 - 1]; + e[_k3 - 1] = 0.0; + for (var _j7 = _k3; _j7 < p; _j7++) { + var _t6 = SVD.hypot(this.s[_j7], _f); + var _cs = this.s[_j7] / _t6; + var _sn = _f / _t6; + this.s[_j7] = _t6; + _f = -_sn * e[_j7]; + e[_j7] = _cs * e[_j7]; + if (wantu) { + for (var _i21 = 0; _i21 < this.m; _i21++) { + _t6 = _cs * this.U[_i21][_j7] + _sn * this.U[_i21][_k3 - 1]; + this.U[_i21][_k3 - 1] = -_sn * this.U[_i21][_j7] + _cs * this.U[_i21][_k3 - 1]; + this.U[_i21][_j7] = _t6; + }; + } + }; + }; + break; + case 3: + { + var scale = Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[p - 1]), Math.abs(this.s[p - 2])), Math.abs(e[p - 2])), Math.abs(this.s[_k3])), Math.abs(e[_k3])); + var sp = this.s[p - 1] / scale; + var spm1 = this.s[p - 2] / scale; + var epm1 = e[p - 2] / scale; + var sk = this.s[_k3] / scale; + var ek = e[_k3] / scale; + var b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2.0; + var c = sp * epm1 * (sp * epm1); + var shift = 0.0; + if (function (lhs, rhs) { + return lhs || rhs; + }(b !== 0.0, c !== 0.0)) { + shift = Math.sqrt(b * b + c); + if (b < 0.0) { + shift = -shift; + } + shift = c / (b + shift); + } + var _f2 = (sk + sp) * (sk - sp) + shift; + var g = sk * ek; + for (var _j8 = _k3; _j8 < p - 1; _j8++) { + var _t7 = SVD.hypot(_f2, g); + var _cs2 = _f2 / _t7; + var _sn2 = g / _t7; + if (_j8 !== _k3) { + e[_j8 - 1] = _t7; + } + _f2 = _cs2 * this.s[_j8] + _sn2 * e[_j8]; + e[_j8] = _cs2 * e[_j8] - _sn2 * this.s[_j8]; + g = _sn2 * this.s[_j8 + 1]; + this.s[_j8 + 1] = _cs2 * this.s[_j8 + 1]; + if (wantv) { + for (var _i22 = 0; _i22 < this.n; _i22++) { + _t7 = _cs2 * this.V[_i22][_j8] + _sn2 * this.V[_i22][_j8 + 1]; + this.V[_i22][_j8 + 1] = -_sn2 * this.V[_i22][_j8] + _cs2 * this.V[_i22][_j8 + 1]; + this.V[_i22][_j8] = _t7; + }; + } + _t7 = SVD.hypot(_f2, g); + _cs2 = _f2 / _t7; + _sn2 = g / _t7; + this.s[_j8] = _t7; + _f2 = _cs2 * e[_j8] + _sn2 * this.s[_j8 + 1]; + this.s[_j8 + 1] = -_sn2 * e[_j8] + _cs2 * this.s[_j8 + 1]; + g = _sn2 * e[_j8 + 1]; + e[_j8 + 1] = _cs2 * e[_j8 + 1]; + if (wantu && _j8 < this.m - 1) { + for (var _i23 = 0; _i23 < this.m; _i23++) { + _t7 = _cs2 * this.U[_i23][_j8] + _sn2 * this.U[_i23][_j8 + 1]; + this.U[_i23][_j8 + 1] = -_sn2 * this.U[_i23][_j8] + _cs2 * this.U[_i23][_j8 + 1]; + this.U[_i23][_j8] = _t7; + }; + } + }; + e[p - 2] = _f2; + iter = iter + 1; + }; + break; + case 4: + { + if (this.s[_k3] <= 0.0) { + this.s[_k3] = this.s[_k3] < 0.0 ? -this.s[_k3] : 0.0; + if (wantv) { + for (var _i24 = 0; _i24 <= pp; _i24++) { + this.V[_i24][_k3] = -this.V[_i24][_k3]; + }; + } + } + while (_k3 < pp) { + if (this.s[_k3] >= this.s[_k3 + 1]) { + break; + } + var _t8 = this.s[_k3]; + this.s[_k3] = this.s[_k3 + 1]; + this.s[_k3 + 1] = _t8; + if (wantv && _k3 < this.n - 1) { + for (var _i25 = 0; _i25 < this.n; _i25++) { + _t8 = this.V[_i25][_k3 + 1]; + this.V[_i25][_k3 + 1] = this.V[_i25][_k3]; + this.V[_i25][_k3] = _t8; + }; + } + if (wantu && _k3 < this.m - 1) { + for (var _i26 = 0; _i26 < this.m; _i26++) { + _t8 = this.U[_i26][_k3 + 1]; + this.U[_i26][_k3 + 1] = this.U[_i26][_k3]; + this.U[_i26][_k3] = _t8; + }; + } + _k3++; + }; + iter = 0; + p--; + }; + break; + } + }; + var result = { U: this.U, V: this.V, S: this.s }; + return result; +}; + +// sqrt(a^2 + b^2) without under/overflow. +SVD.hypot = function (a, b) { + var r = void 0; + if (Math.abs(a) > Math.abs(b)) { + r = b / a; + r = Math.abs(a) * Math.sqrt(1 + r * r); + } else if (b != 0) { + r = a / b; + r = Math.abs(b) * Math.sqrt(1 + r * r); + } else { + r = 0.0; + } + return r; +}; + +module.exports = SVD; + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string + * sequences by S.B.Needleman and C.D.Wunsch (1970). + * + * Aside from the inputs, you can assign the scores for, + * - Match: The two characters at the current index are same. + * - Mismatch: The two characters at the current index are different. + * - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string. + */ + +var NeedlemanWunsch = function () { + function NeedlemanWunsch(sequence1, sequence2) { + var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1; + var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1; + + _classCallCheck(this, NeedlemanWunsch); + + this.sequence1 = sequence1; + this.sequence2 = sequence2; + this.match_score = match_score; + this.mismatch_penalty = mismatch_penalty; + this.gap_penalty = gap_penalty; + + // Just the remove redundancy + this.iMax = sequence1.length + 1; + this.jMax = sequence2.length + 1; + + // Grid matrix of scores + this.grid = new Array(this.iMax); + for (var i = 0; i < this.iMax; i++) { + this.grid[i] = new Array(this.jMax); + + for (var j = 0; j < this.jMax; j++) { + this.grid[i][j] = 0; + } + } + + // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions) + this.tracebackGrid = new Array(this.iMax); + for (var _i = 0; _i < this.iMax; _i++) { + this.tracebackGrid[_i] = new Array(this.jMax); + + for (var _j = 0; _j < this.jMax; _j++) { + this.tracebackGrid[_i][_j] = [null, null, null]; + } + } + + // The aligned sequences (return multiple possibilities) + this.alignments = []; + + // Final alignment score + this.score = -1; + + // Calculate scores and tracebacks + this.computeGrids(); + } + + _createClass(NeedlemanWunsch, [{ + key: "getScore", + value: function getScore() { + return this.score; + } + }, { + key: "getAlignments", + value: function getAlignments() { + return this.alignments; + } + + // Main dynamic programming procedure + + }, { + key: "computeGrids", + value: function computeGrids() { + // Fill in the first row + for (var j = 1; j < this.jMax; j++) { + this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty; + this.tracebackGrid[0][j] = [false, false, true]; + } + + // Fill in the first column + for (var i = 1; i < this.iMax; i++) { + this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty; + this.tracebackGrid[i][0] = [false, true, false]; + } + + // Fill the rest of the grid + for (var _i2 = 1; _i2 < this.iMax; _i2++) { + for (var _j2 = 1; _j2 < this.jMax; _j2++) { + // Find the max score(s) among [`Diag`, `Up`, `Left`] + var diag = void 0; + if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty; + + var up = this.grid[_i2 - 1][_j2] + this.gap_penalty; + var left = this.grid[_i2][_j2 - 1] + this.gap_penalty; + + // If there exists multiple max values, capture them for multiple paths + var maxOf = [diag, up, left]; + var indices = this.arrayAllMaxIndexes(maxOf); + + // Update Grids + this.grid[_i2][_j2] = maxOf[indices[0]]; + this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)]; + } + } + + // Update alignment score + this.score = this.grid[this.iMax - 1][this.jMax - 1]; + } + + // Gets all possible valid sequence combinations + + }, { + key: "alignmentTraceback", + value: function alignmentTraceback() { + var inProcessAlignments = []; + + inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length], + seq1: "", + seq2: "" + }); + + while (inProcessAlignments[0]) { + var current = inProcessAlignments[0]; + var directions = this.tracebackGrid[current.pos[0]][current.pos[1]]; + + if (directions[0]) { + inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1], + seq1: this.sequence1[current.pos[0] - 1] + current.seq1, + seq2: this.sequence2[current.pos[1] - 1] + current.seq2 + }); + } + if (directions[1]) { + inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]], + seq1: this.sequence1[current.pos[0] - 1] + current.seq1, + seq2: '-' + current.seq2 + }); + } + if (directions[2]) { + inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1], + seq1: '-' + current.seq1, + seq2: this.sequence2[current.pos[1] - 1] + current.seq2 + }); + } + + if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1, + sequence2: current.seq2 + }); + + inProcessAlignments.shift(); + } + + return this.alignments; + } + + // Helper Functions + + }, { + key: "getAllIndexes", + value: function getAllIndexes(arr, val) { + var indexes = [], + i = -1; + while ((i = arr.indexOf(val, i + 1)) !== -1) { + indexes.push(i); + } + return indexes; + } + }, { + key: "arrayAllMaxIndexes", + value: function arrayAllMaxIndexes(array) { + return this.getAllIndexes(array, Math.max.apply(null, array)); + } + }]); + + return NeedlemanWunsch; +}(); + +module.exports = NeedlemanWunsch; + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var layoutBase = function layoutBase() { + return; +}; + +layoutBase.FDLayout = __webpack_require__(18); +layoutBase.FDLayoutConstants = __webpack_require__(4); +layoutBase.FDLayoutEdge = __webpack_require__(19); +layoutBase.FDLayoutNode = __webpack_require__(20); +layoutBase.DimensionD = __webpack_require__(21); +layoutBase.HashMap = __webpack_require__(22); +layoutBase.HashSet = __webpack_require__(23); +layoutBase.IGeometry = __webpack_require__(8); +layoutBase.IMath = __webpack_require__(9); +layoutBase.Integer = __webpack_require__(10); +layoutBase.Point = __webpack_require__(12); +layoutBase.PointD = __webpack_require__(5); +layoutBase.RandomSeed = __webpack_require__(16); +layoutBase.RectangleD = __webpack_require__(13); +layoutBase.Transform = __webpack_require__(17); +layoutBase.UniqueIDGeneretor = __webpack_require__(14); +layoutBase.Quicksort = __webpack_require__(25); +layoutBase.LinkedList = __webpack_require__(11); +layoutBase.LGraphObject = __webpack_require__(2); +layoutBase.LGraph = __webpack_require__(6); +layoutBase.LEdge = __webpack_require__(1); +layoutBase.LGraphManager = __webpack_require__(7); +layoutBase.LNode = __webpack_require__(3); +layoutBase.Layout = __webpack_require__(15); +layoutBase.LayoutConstants = __webpack_require__(0); +layoutBase.NeedlemanWunsch = __webpack_require__(27); +layoutBase.Matrix = __webpack_require__(24); +layoutBase.SVD = __webpack_require__(26); + +module.exports = layoutBase; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function Emitter() { + this.listeners = []; +} + +var p = Emitter.prototype; + +p.addListener = function (event, callback) { + this.listeners.push({ + event: event, + callback: callback + }); +}; + +p.removeListener = function (event, callback) { + for (var i = this.listeners.length; i >= 0; i--) { + var l = this.listeners[i]; + + if (l.event === event && l.callback === callback) { + this.listeners.splice(i, 1); + } + } +}; + +p.emit = function (event, data) { + for (var i = 0; i < this.listeners.length; i++) { + var l = this.listeners[i]; + + if (event === l.event) { + l.callback(data); + } + } +}; + +module.exports = Emitter; + +/***/ }) +/******/ ]); +}); \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/WebGraph/Web/style.css b/CSharpCodeAnalyst/Features/WebGraph/Web/style.css new file mode 100644 index 0000000..98f8d65 --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/Web/style.css @@ -0,0 +1,58 @@ +html, body { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + overflow: hidden; + background: #ffffff; + font-family: "Segoe UI", sans-serif; +} + +#cy { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +/* Empty-state guide overlay. Sits over the (blank) canvas and lets clicks pass through. */ +#hint { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + pointer-events: none; + box-sizing: border-box; + padding: 24px; + text-align: center; + color: #9aa0a6; + font-size: 18px; +} + +#hint.hidden { + display: none; +} + +#hint h2 { + margin: 0 0 8px; + font-weight: 600; + color: #80868b; +} + +#hint p { + margin: 0; + max-width: 640px; +} + +#hint ul { + list-style: none; + margin: 14px 0 0; + padding: 0; + line-height: 2; +} diff --git a/CSharpCodeAnalyst/Features/WebGraph/WebContextMenuFactory.cs b/CSharpCodeAnalyst/Features/WebGraph/WebContextMenuFactory.cs new file mode 100644 index 0000000..f8f2dce --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/WebContextMenuFactory.cs @@ -0,0 +1,126 @@ +using System.Windows.Controls; +using System.Windows.Media; +using CodeGraph.Graph; +using CSharpCodeAnalyst.Features.Graph; + +namespace CSharpCodeAnalyst.Features.WebGraph; + +/// +/// Builds WPF context menus shown on top of the web view, based on the registered commands +/// and the current context (right-clicked element(s) and selection). +/// +internal static class WebContextMenuFactory +{ + /// Node menu: commands for the right-clicked element, with separators. + public static ContextMenu BuildForNode(IReadOnlyList commands, CodeElement element) + { + var menu = new ContextMenu(); + var lastItemIsSeparator = true; + + foreach (var cmd in commands) + { + if (cmd is SeparatorCommand) + { + if (!lastItemIsSeparator) + { + menu.Items.Add(new Separator()); + lastItemIsSeparator = true; + } + + continue; + } + + if (!cmd.IsVisible || !cmd.CanHandle(element)) + { + continue; + } + + var menuItem = new MenuItem + { + Header = cmd.Label, + Icon = CreateIcon(cmd.Icon), + IsEnabled = cmd.CanExecute(element) + }; + menuItem.Click += (_, _) => cmd.Invoke(element); + menu.Items.Add(menuItem); + lastItemIsSeparator = false; + } + + return menu; + } + + /// Edge menu: commands for the bundled relationships, with sub-menu groups. + public static ContextMenu BuildForEdge(IReadOnlyList commands, + string sourceId, string targetId, List relationships) + { + var menu = new ContextMenu(); + if (relationships.Count == 0) + { + return menu; + } + + var subMenus = new Dictionary(); + foreach (var cmd in commands) + { + if (!cmd.CanHandle(relationships)) + { + continue; + } + + var menuItem = new MenuItem + { + Header = cmd.Label, + Icon = CreateIcon(cmd.Icon), + IsEnabled = cmd.CanExecute(relationships) + }; + menuItem.Click += (_, _) => cmd.Invoke(sourceId, targetId, relationships); + + if (!string.IsNullOrEmpty(cmd.SubMenuGroup)) + { + if (!subMenus.TryGetValue(cmd.SubMenuGroup, out var parentMenu)) + { + parentMenu = new MenuItem { Header = cmd.SubMenuGroup }; + subMenus[cmd.SubMenuGroup] = parentMenu; + menu.Items.Add(parentMenu); + } + + parentMenu.Items.Add(menuItem); + } + else + { + menu.Items.Add(menuItem); + } + } + + return menu; + } + + /// Background menu: global commands operating on the current selection. + public static ContextMenu BuildForGlobal(IReadOnlyList commands, List selectedElements) + { + var menu = new ContextMenu(); + foreach (var command in commands) + { + if (!command.CanHandle(selectedElements)) + { + continue; + } + + var menuItem = new MenuItem { Header = command.Label, Icon = CreateIcon(command.Icon) }; + menuItem.Click += (_, _) => command.Invoke(selectedElements); + menu.Items.Add(menuItem); + } + + return menu; + } + + private static Image? CreateIcon(ImageSource? source) + { + if (source is null) + { + return null; + } + + return new Image { Width = 16, Height = 16, Source = source }; + } +} \ No newline at end of file diff --git a/CSharpCodeAnalyst/Features/WebGraph/WebGraphBuilder.cs b/CSharpCodeAnalyst/Features/WebGraph/WebGraphBuilder.cs new file mode 100644 index 0000000..1feaab5 --- /dev/null +++ b/CSharpCodeAnalyst/Features/WebGraph/WebGraphBuilder.cs @@ -0,0 +1,445 @@ +using System.Text.Json; +using CodeGraph.Colors; +using CodeGraph.Graph; +using CSharpCodeAnalyst.Features.Graph; +using CSharpCodeAnalyst.Features.Graph.Filtering; + +namespace CSharpCodeAnalyst.Features.WebGraph; + +/// +/// Transforms a into the JSON shape that +/// the Cytoscape front-end (app.js / renderGraph) expects: { nodes: [...], edges: [...] }. +/// It honours the presentation state (collapse/expand) and the (hidden element and +/// relationship types). +/// Besides the JSON it returns the . This is a lookup table +/// edge id -> relationship (a bundled edge has a list of relationships). So we don't attach it as edge data. +/// +internal static class WebGraphBuilder +{ + private static readonly JsonSerializerOptions JsonOptions = new() + { + PropertyNamingPolicy = JsonNamingPolicy.CamelCase + }; + + public static WebGraphData Build(CodeGraph.Graph.CodeGraph graph, Func isCollapsed, + bool showFlat, bool showInformationFlow, GraphHideFilter hideFilter, PresentationState presentationState) + { + var (dto, edges) = showFlat + ? BuildFlat(graph, showInformationFlow, hideFilter, presentationState) + : BuildHierarchical(graph, isCollapsed, showInformationFlow, hideFilter, presentationState); + + // System.Text.Json's default encoder already escapes characters that would be + // unsafe inside a