Initial Move from Azure DevOps to GitHub
436
.eslintignore
Normal file
@ -0,0 +1,436 @@
|
|||||||
|
**/node_modules/
|
||||||
|
src/Api/Apis.ts
|
||||||
|
src/AuthType.ts
|
||||||
|
src/Bindings/BindingHandlersRegisterer.ts
|
||||||
|
src/Bindings/ReactBindingHandler.ts
|
||||||
|
src/Common/ArrayHashMap.ts
|
||||||
|
src/Common/Constants.ts
|
||||||
|
src/Common/CosmosClient.test.ts
|
||||||
|
src/Common/CosmosClient.ts
|
||||||
|
src/Common/DataAccessUtilityBase.test.ts
|
||||||
|
src/Common/DataAccessUtilityBase.ts
|
||||||
|
src/Common/DeleteFeedback.ts
|
||||||
|
src/Common/DocumentClientUtilityBase.ts
|
||||||
|
src/Common/EditableUtility.ts
|
||||||
|
src/Common/EnvironmentUtility.ts
|
||||||
|
src/Common/ErrorParserUtility.test.ts
|
||||||
|
src/Common/ErrorParserUtility.ts
|
||||||
|
src/Common/HashMap.test.ts
|
||||||
|
src/Common/HashMap.ts
|
||||||
|
src/Common/HeadersUtility.test.ts
|
||||||
|
src/Common/HeadersUtility.ts
|
||||||
|
src/Common/IteratorUtilities.test.ts
|
||||||
|
src/Common/IteratorUtilities.ts
|
||||||
|
src/Common/Logger.test.ts
|
||||||
|
src/Common/MessageHandler.test.ts
|
||||||
|
src/Common/MessageHandler.ts
|
||||||
|
src/Common/MongoProxyClient.test.ts
|
||||||
|
src/Common/MongoProxyClient.ts
|
||||||
|
src/Common/MongoUtility.ts
|
||||||
|
src/Common/NotificationsClientBase.ts
|
||||||
|
src/Common/ObjectCache.test.ts
|
||||||
|
src/Common/ObjectCache.ts
|
||||||
|
src/Common/QueriesClient.ts
|
||||||
|
src/Common/Splitter.ts
|
||||||
|
src/Common/ThemeUtility.ts
|
||||||
|
src/Common/UrlUtility.ts
|
||||||
|
src/Config.ts
|
||||||
|
src/Contracts/ActionContracts.ts
|
||||||
|
src/Contracts/DataModels.ts
|
||||||
|
src/Contracts/Diagnostics.ts
|
||||||
|
src/Contracts/ExplorerContracts.ts
|
||||||
|
src/Contracts/Versions.ts
|
||||||
|
src/Contracts/ViewModels.ts
|
||||||
|
src/Controls/Heatmap/Heatmap.test.ts
|
||||||
|
src/Controls/Heatmap/Heatmap.ts
|
||||||
|
src/Controls/Heatmap/HeatmapDatatypes.ts
|
||||||
|
src/Definitions/adal.d.ts
|
||||||
|
src/Definitions/datatables.d.ts
|
||||||
|
src/Definitions/gif.d.ts
|
||||||
|
src/Definitions/globals.d.ts
|
||||||
|
src/Definitions/html.d.ts
|
||||||
|
src/Definitions/jquery-typescript.d.ts
|
||||||
|
src/Definitions/jquery-ui.d.ts
|
||||||
|
src/Definitions/jquery.contextmenu.d.ts
|
||||||
|
src/Definitions/jquery.d.ts
|
||||||
|
src/Definitions/plotly.js-cartesian-dist.d-min.ts
|
||||||
|
src/Definitions/png.d.ts
|
||||||
|
src/Definitions/svg.d.ts
|
||||||
|
src/Definitions/worker.d.ts
|
||||||
|
src/Explorer/ComponentRegisterer.test.ts
|
||||||
|
src/Explorer/ComponentRegisterer.ts
|
||||||
|
src/Explorer/ContextMenuButtonFactory.ts
|
||||||
|
src/Explorer/Controls/CollapsiblePanel/CollapsiblePanelComponent.ts
|
||||||
|
src/Explorer/Controls/CommandButton/CommandButton.test.ts
|
||||||
|
src/Explorer/Controls/CommandButton/CommandButton.ts
|
||||||
|
src/Explorer/Controls/DiffEditor/DiffEditorComponent.ts
|
||||||
|
src/Explorer/Controls/DynamicList/DynamicList.test.ts
|
||||||
|
src/Explorer/Controls/DynamicList/DynamicListComponent.ts
|
||||||
|
src/Explorer/Controls/Editor/EditorComponent.ts
|
||||||
|
src/Explorer/Controls/ErrorDisplayComponent/ErrorDisplayComponent.ts
|
||||||
|
src/Explorer/Controls/InputTypeahead/InputTypeahead.ts
|
||||||
|
src/Explorer/Controls/JsonEditor/JsonEditorComponent.ts
|
||||||
|
src/Explorer/Controls/Notebook/NotebookAppMessageHandler.ts
|
||||||
|
src/Explorer/Controls/ThroughputInput/ThroughputInput.test.ts
|
||||||
|
src/Explorer/Controls/ThroughputInput/ThroughputInputComponent.ts
|
||||||
|
src/Explorer/Controls/ThroughputInput/ThroughputInputComponentAutoPilotV3.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarAction.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarDisplayable.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarDropDown.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarItem.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarSeperator.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarToggle.ts
|
||||||
|
src/Explorer/Controls/Toolbar/KeyCodes.ts
|
||||||
|
src/Explorer/Controls/Toolbar/Toolbar.ts
|
||||||
|
src/Explorer/Controls/Toolbar/ToolbarAction.ts
|
||||||
|
src/Explorer/Controls/Toolbar/ToolbarDropDown.ts
|
||||||
|
src/Explorer/Controls/Toolbar/ToolbarToggle.ts
|
||||||
|
src/Explorer/Controls/Toolbar/Utilities.ts
|
||||||
|
src/Explorer/DataSamples/ContainerSampleGenerator.test.ts
|
||||||
|
src/Explorer/DataSamples/ContainerSampleGenerator.ts
|
||||||
|
src/Explorer/DataSamples/DataSamplesUtil.test.ts
|
||||||
|
src/Explorer/DataSamples/DataSamplesUtil.ts
|
||||||
|
src/Explorer/Explorer.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ArraysByKeyCache.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ArraysByKeyCache.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/D3ForceGraph.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/D3ForceGraph.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/EdgeInfoCache.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphData.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphData.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphUtil.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphUtil.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GremlinClient.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GremlinClient.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GremlinSimpleClient.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GremlinSimpleClient.ts
|
||||||
|
src/Explorer/Graph/GraphStyleComponent/GraphStyle.test.ts
|
||||||
|
src/Explorer/Graph/GraphStyleComponent/GraphStyleComponent.ts
|
||||||
|
src/Explorer/Graph/NewVertexComponent/NewVertex.test.ts
|
||||||
|
src/Explorer/Graph/NewVertexComponent/NewVertexComponent.ts
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.test.ts
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.ts
|
||||||
|
src/Explorer/Menus/ContextMenu.ts
|
||||||
|
src/Explorer/MostRecentActivity/MostRecentActivity.ts
|
||||||
|
src/Explorer/Notebook/FileSystemUtil.ts
|
||||||
|
src/Explorer/Notebook/NTeractUtil.ts
|
||||||
|
src/Explorer/Notebook/NotebookClientV2.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/NotebookContentProvider.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/__mocks__/rx-jupyter.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/actions.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/epics.test.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/epics.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/loadTransform.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/reducers.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/store.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/types.ts
|
||||||
|
src/Explorer/Notebook/NotebookContainerClient.ts
|
||||||
|
src/Explorer/Notebook/NotebookContentClient.ts
|
||||||
|
src/Explorer/Notebook/NotebookContentItem.ts
|
||||||
|
src/Explorer/Notebook/NotebookUtil.ts
|
||||||
|
src/Explorer/OpenActions.test.ts
|
||||||
|
src/Explorer/OpenActions.ts
|
||||||
|
src/Explorer/OpenActionsStubs.ts
|
||||||
|
src/Explorer/Panes/AddCollectionPane.test.ts
|
||||||
|
src/Explorer/Panes/AddCollectionPane.ts
|
||||||
|
src/Explorer/Panes/AddDatabasePane.test.ts
|
||||||
|
src/Explorer/Panes/AddDatabasePane.ts
|
||||||
|
src/Explorer/Panes/BrowseQueriesPane.ts
|
||||||
|
src/Explorer/Panes/CassandraAddCollectionPane.ts
|
||||||
|
src/Explorer/Panes/ClusterLibraryPane.ts
|
||||||
|
src/Explorer/Panes/ContextualPaneBase.ts
|
||||||
|
src/Explorer/Panes/DeleteCollectionConfirmationPane.test.ts
|
||||||
|
src/Explorer/Panes/DeleteCollectionConfirmationPane.ts
|
||||||
|
src/Explorer/Panes/DeleteDatabaseConfirmationPane.test.ts
|
||||||
|
src/Explorer/Panes/DeleteDatabaseConfirmationPane.ts
|
||||||
|
src/Explorer/Panes/ExecuteSprocParamsPane.ts
|
||||||
|
src/Explorer/Panes/GraphStylingPane.ts
|
||||||
|
src/Explorer/Panes/LibraryManagePane.ts
|
||||||
|
src/Explorer/Panes/LoadQueryPane.ts
|
||||||
|
src/Explorer/Panes/ManageSparkClusterPane.ts
|
||||||
|
src/Explorer/Panes/NewVertexPane.ts
|
||||||
|
src/Explorer/Panes/PaneComponents.ts
|
||||||
|
src/Explorer/Panes/RenewAdHocAccessPane.ts
|
||||||
|
src/Explorer/Panes/SaveQueryPane.ts
|
||||||
|
src/Explorer/Panes/SettingsPane.test.ts
|
||||||
|
src/Explorer/Panes/SettingsPane.ts
|
||||||
|
src/Explorer/Panes/SetupNotebooksPane.ts
|
||||||
|
src/Explorer/Panes/SetupSparkClusterPane.ts
|
||||||
|
src/Explorer/Panes/StringInputPane.ts
|
||||||
|
src/Explorer/Panes/SwitchDirectoryPane.ts
|
||||||
|
src/Explorer/Panes/Tables/AddTableEntityPane.ts
|
||||||
|
src/Explorer/Panes/Tables/EditTableEntityPane.ts
|
||||||
|
src/Explorer/Panes/Tables/EntityPropertyViewModel.ts
|
||||||
|
src/Explorer/Panes/Tables/QuerySelectPane.ts
|
||||||
|
src/Explorer/Panes/Tables/TableColumnOptionsPane.ts
|
||||||
|
src/Explorer/Panes/Tables/TableEntityPane.ts
|
||||||
|
src/Explorer/Panes/Tables/Validators/EntityPropertyNameValidator.ts
|
||||||
|
src/Explorer/Panes/Tables/Validators/EntityPropertyValidationCommon.ts
|
||||||
|
src/Explorer/Panes/Tables/Validators/EntityPropertyValueValidator.ts
|
||||||
|
src/Explorer/Panes/UploadFilePane.ts
|
||||||
|
src/Explorer/Panes/UploadItemsPane.ts
|
||||||
|
src/Explorer/SplashScreen/SplashScreenComponentAdapter.test.ts
|
||||||
|
src/Explorer/Tables/Constants.ts
|
||||||
|
src/Explorer/Tables/DataTable/CacheBase.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableBindingManager.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableBuilder.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableContextMenu.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableOperationManager.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableOperations.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableUtilities.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableViewModel.ts
|
||||||
|
src/Explorer/Tables/DataTable/TableCommands.ts
|
||||||
|
src/Explorer/Tables/DataTable/TableEntityCache.ts
|
||||||
|
src/Explorer/Tables/DataTable/TableEntityListViewModel.ts
|
||||||
|
src/Explorer/Tables/Entities.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/ClauseGroup.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/ClauseGroupViewModel.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/CustomTimestampHelper.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/DateTimeUtilities.test.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/DateTimeUtilities.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/QueryBuilderViewModel.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/QueryClauseViewModel.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/QueryViewModel.ts
|
||||||
|
src/Explorer/Tables/TableDataClient.ts
|
||||||
|
src/Explorer/Tables/TableEntityProcessor.ts
|
||||||
|
src/Explorer/Tables/Utilities.ts
|
||||||
|
src/Explorer/Tabs/ConflictsTab.ts
|
||||||
|
src/Explorer/Tabs/DatabaseSettingsTab.ts
|
||||||
|
src/Explorer/Tabs/DocumentsTab.test.ts
|
||||||
|
src/Explorer/Tabs/DocumentsTab.ts
|
||||||
|
src/Explorer/Tabs/GraphTab.ts
|
||||||
|
src/Explorer/Tabs/MongoDocumentsTab.ts
|
||||||
|
src/Explorer/Tabs/MongoQueryTab.ts
|
||||||
|
src/Explorer/Tabs/MongoShellTab.ts
|
||||||
|
src/Explorer/Tabs/NotebookTab.ts
|
||||||
|
src/Explorer/Tabs/NotebookV2Tab.ts
|
||||||
|
src/Explorer/Tabs/QueryTab.test.ts
|
||||||
|
src/Explorer/Tabs/QueryTab.ts
|
||||||
|
src/Explorer/Tabs/QueryTablesTab.ts
|
||||||
|
src/Explorer/Tabs/ScriptTabBase.ts
|
||||||
|
src/Explorer/Tabs/SettingsTab.test.ts
|
||||||
|
src/Explorer/Tabs/SettingsTab.ts
|
||||||
|
src/Explorer/Tabs/SparkMasterTab.ts
|
||||||
|
src/Explorer/Tabs/StoredProcedureTab.ts
|
||||||
|
src/Explorer/Tabs/TabComponents.ts
|
||||||
|
src/Explorer/Tabs/TabsBase.ts
|
||||||
|
src/Explorer/Tabs/TriggerTab.ts
|
||||||
|
src/Explorer/Tabs/UserDefinedFunctionTab.ts
|
||||||
|
src/Explorer/Tabs/__mocks__/NotebookTab.ts
|
||||||
|
src/Explorer/Tree/AccessibleVerticalList.ts
|
||||||
|
src/Explorer/Tree/Collection.test.ts
|
||||||
|
src/Explorer/Tree/Collection.ts
|
||||||
|
src/Explorer/Tree/ConflictId.ts
|
||||||
|
src/Explorer/Tree/Database.ts
|
||||||
|
src/Explorer/Tree/DocumentId.ts
|
||||||
|
src/Explorer/Tree/ObjectId.ts
|
||||||
|
src/Explorer/Tree/ResourceTokenCollection.ts
|
||||||
|
src/Explorer/Tree/StoredProcedure.ts
|
||||||
|
src/Explorer/Tree/TreeComponents.ts
|
||||||
|
src/Explorer/Tree/Trigger.ts
|
||||||
|
src/Explorer/Tree/UserDefinedFunction.ts
|
||||||
|
src/Explorer/WaitsForTemplateViewModel.ts
|
||||||
|
src/GitHub/GitHubClient.test.ts
|
||||||
|
src/GitHub/GitHubClient.ts
|
||||||
|
src/GitHub/GitHubConnector.ts
|
||||||
|
src/GitHub/GitHubContentProvider.test.ts
|
||||||
|
src/GitHub/GitHubContentProvider.ts
|
||||||
|
src/GitHub/GitHubOAuthService.ts
|
||||||
|
src/HostedExplorer.ts
|
||||||
|
src/Index.ts
|
||||||
|
src/Juno/JunoClient.test.ts
|
||||||
|
src/Juno/JunoClient.ts
|
||||||
|
src/Main.ts
|
||||||
|
src/NotebookWorkspaceManager/NotebookWorkspaceManager.ts
|
||||||
|
src/NotebookWorkspaceManager/NotebookWorkspaceResourceProviderMockClients.ts
|
||||||
|
src/Platform/Emulator/DataAccessUtility.ts
|
||||||
|
src/Platform/Emulator/ExplorerFactory.ts
|
||||||
|
src/Platform/Emulator/Main.ts
|
||||||
|
src/Platform/Emulator/NotificationsClient.ts
|
||||||
|
src/Platform/Hosted/ArmResourceUtils.ts
|
||||||
|
src/Platform/Hosted/Authorization.ts
|
||||||
|
src/Platform/Hosted/DataAccessUtility.ts
|
||||||
|
src/Platform/Hosted/ExplorerFactory.ts
|
||||||
|
src/Platform/Hosted/Helpers/ConnectionStringParser.test.ts
|
||||||
|
src/Platform/Hosted/Helpers/ConnectionStringParser.ts
|
||||||
|
src/Platform/Hosted/HostedUtils.test.ts
|
||||||
|
src/Platform/Hosted/HostedUtils.ts
|
||||||
|
src/Platform/Hosted/Main.ts
|
||||||
|
src/Platform/Hosted/Maint.test.ts
|
||||||
|
src/Platform/Hosted/NotificationsClient.ts
|
||||||
|
src/Platform/Portal/DataAccessUtility.ts
|
||||||
|
src/Platform/Portal/ExplorerFactory.ts
|
||||||
|
src/Platform/Portal/Main.ts
|
||||||
|
src/Platform/Portal/NotificationsClient.ts
|
||||||
|
src/PlatformType.ts
|
||||||
|
src/ReactDevTools.ts
|
||||||
|
src/ResourceProvider/IResourceProviderClient.test.ts
|
||||||
|
src/ResourceProvider/IResourceProviderClient.ts
|
||||||
|
src/ResourceProvider/ResourceProviderClient.ts
|
||||||
|
src/ResourceProvider/ResourceProviderClientFactory.ts
|
||||||
|
src/RouteHandlers/RouteHandler.ts
|
||||||
|
src/RouteHandlers/TabRouteHandler.test.ts
|
||||||
|
src/RouteHandlers/TabRouteHandler.ts
|
||||||
|
src/Shared/AddCollectionUtility.test.ts
|
||||||
|
src/Shared/AddCollectionUtility.ts
|
||||||
|
src/Shared/AddDatabaseUtility.test.ts
|
||||||
|
src/Shared/AddDatabaseUtility.ts
|
||||||
|
src/Shared/Ajax.ts
|
||||||
|
src/Shared/Constants.ts
|
||||||
|
src/Shared/DefaultExperienceUtility.test.ts
|
||||||
|
src/Shared/DefaultExperienceUtility.ts
|
||||||
|
src/Shared/ExplorerSettings.ts
|
||||||
|
src/Shared/PriceEstimateCalculator.ts
|
||||||
|
src/Shared/StorageUtility.test.ts
|
||||||
|
src/Shared/StorageUtility.ts
|
||||||
|
src/Shared/StringUtility.test.ts
|
||||||
|
src/Shared/StringUtility.ts
|
||||||
|
src/Shared/Telemetry/TelemetryConstants.ts
|
||||||
|
src/Shared/Telemetry/TelemetryProcessor.ts
|
||||||
|
src/Shared/appInsights.ts
|
||||||
|
src/SparkClusterManager/ArcadiaResourceManager.ts
|
||||||
|
src/SparkClusterManager/SparkClusterManager.ts
|
||||||
|
src/Terminal/JupyterLabAppFactory.ts
|
||||||
|
src/Terminal/NotebookAppContracts.d.ts
|
||||||
|
src/Terminal/index.ts
|
||||||
|
src/TokenProviders/PortalTokenProvider.ts
|
||||||
|
src/TokenProviders/TokenProviderFactory.ts
|
||||||
|
src/Utils/AuthorizationUtils.test.ts
|
||||||
|
src/Utils/AuthorizationUtils.ts
|
||||||
|
src/Utils/AutoPilotUtils.test.ts
|
||||||
|
src/Utils/AutoPilotUtils.ts
|
||||||
|
src/Utils/DatabaseAccountUtils.test.ts
|
||||||
|
src/Utils/DatabaseAccountUtils.ts
|
||||||
|
src/Utils/JunoUtils.ts
|
||||||
|
src/Utils/MessageValidation.ts
|
||||||
|
src/Utils/NotebookConfigurationUtils.ts
|
||||||
|
src/Utils/NotificationConsoleUtils.ts
|
||||||
|
src/Utils/OfferUtils.test.ts
|
||||||
|
src/Utils/OfferUtils.ts
|
||||||
|
src/Utils/PricingUtils.test.ts
|
||||||
|
src/Utils/PricingUtils.ts
|
||||||
|
src/Utils/QueryUtils.test.ts
|
||||||
|
src/Utils/QueryUtils.ts
|
||||||
|
src/Utils/StringUtils.test.ts
|
||||||
|
src/Utils/StringUtils.ts
|
||||||
|
src/applyExplorerBindings.ts
|
||||||
|
src/global.d.ts
|
||||||
|
src/quickstart.ts
|
||||||
|
src/setupTests.ts
|
||||||
|
src/workers/upload/definitions.ts
|
||||||
|
src/workers/upload/index.ts
|
||||||
|
src/Explorer/Controls/AccessibleElement/AccessibleElement.tsx
|
||||||
|
src/Explorer/Controls/Accordion/AccordionComponent.tsx
|
||||||
|
src/Explorer/Controls/AccountSwitch/AccountSwitchComponent.test.tsx
|
||||||
|
src/Explorer/Controls/AccountSwitch/AccountSwitchComponent.tsx
|
||||||
|
src/Explorer/Controls/AccountSwitch/AccountSwitchComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Arcadia/ArcadiaMenuPicker.tsx
|
||||||
|
src/Explorer/Controls/CollapsiblePanel/CollapsiblePanel.tsx
|
||||||
|
src/Explorer/Controls/CommandButton/CommandButtonComponent.tsx
|
||||||
|
src/Explorer/Controls/DialogReactComponent/DialogComponent.tsx
|
||||||
|
src/Explorer/Controls/DialogReactComponent/DialogComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Directory/DefaultDirectoryDropdownComponent.test.tsx
|
||||||
|
src/Explorer/Controls/Directory/DefaultDirectoryDropdownComponent.tsx
|
||||||
|
src/Explorer/Controls/Directory/DirectoryComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Directory/DirectoryListComponent.test.tsx
|
||||||
|
src/Explorer/Controls/Directory/DirectoryListComponent.tsx
|
||||||
|
src/Explorer/Controls/Editor/EditorReact.tsx
|
||||||
|
src/Explorer/Controls/InputTypeahead/InputTypeaheadComponent.tsx
|
||||||
|
src/Explorer/Controls/LibraryManagement/ClusterLibraryGrid.tsx
|
||||||
|
src/Explorer/Controls/LibraryManagement/ClusterLibraryGridAdapter.tsx
|
||||||
|
src/Explorer/Controls/LibraryManagement/LibraryManage.tsx
|
||||||
|
src/Explorer/Controls/LibraryManagement/LibraryManageComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Notebook/NotebookTerminalComponent.test.tsx
|
||||||
|
src/Explorer/Controls/Notebook/NotebookTerminalComponent.tsx
|
||||||
|
src/Explorer/Controls/NotebookViewer/NotebookMetadataComponent.tsx
|
||||||
|
src/Explorer/Controls/NotebookViewer/NotebookViewer.tsx
|
||||||
|
src/Explorer/Controls/NotebookViewer/NotebookViewerComponent.tsx
|
||||||
|
src/Explorer/Controls/QueriesGridReactComponent/QueriesGridComponent.tsx
|
||||||
|
src/Explorer/Controls/QueriesGridReactComponent/QueriesGridComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/ResizeSensorReactComponent/ResizeSensorComponent.tsx
|
||||||
|
src/Explorer/Controls/Spark/ClusterSettingsComponent.tsx
|
||||||
|
src/Explorer/Controls/Spark/ClusterSettingsComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Tabs/TabComponent.tsx
|
||||||
|
src/Explorer/Controls/TreeComponent/TreeComponent.test.tsx
|
||||||
|
src/Explorer/Controls/TreeComponent/TreeComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/EditorNeighborsComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/EditorNodePropertiesComponent.test.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/EditorNodePropertiesComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.test.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphExplorerAdapter.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphVizComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/LeftPaneComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/MiddlePaneComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/NodePropertiesComponent.test.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/NodePropertiesComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/QueryContainerComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNeighborsComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNodePropertiesComponent.test.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNodePropertiesComponent.tsx
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarComponentAdapter.tsx
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarUtil.test.tsx
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarUtil.tsx
|
||||||
|
src/Explorer/Menus/CommandBar/MemoryTrackerComponent.tsx
|
||||||
|
src/Explorer/Menus/NavBar/ControlBarComponent.tsx
|
||||||
|
src/Explorer/Menus/NavBar/ControlBarComponentAdapter.tsx
|
||||||
|
src/Explorer/Menus/NavBar/MeControlComponent.test.tsx
|
||||||
|
src/Explorer/Menus/NavBar/MeControlComponent.tsx
|
||||||
|
src/Explorer/Menus/NavBar/MeControlComponentAdapter.tsx
|
||||||
|
src/Explorer/Menus/NotificationConsole/NotificationConsoleComponent.test.tsx
|
||||||
|
src/Explorer/Menus/NotificationConsole/NotificationConsoleComponent.tsx
|
||||||
|
src/Explorer/Menus/NotificationConsole/NotificationConsoleComponentAdapter.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/NotebookComponent.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/NotebookComponentAdapter.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/NotebookComponentBootstrapper.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/VirtualCommandBarComponent.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/contents/file/index.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/contents/file/text-file.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/contents/index.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/AzureTheme.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/NotebookReadOnlyRenderer.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/NotebookRenderer.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/Prompt.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/PromptContent.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/StatusBar.test.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/StatusBar.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/Toolbar.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/CellCreator.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/CellLabeler.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/HoverableCell.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/draggable/index.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/hijack-scroll/index.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/kbd-shortcuts/index.tsx
|
||||||
|
src/Explorer/Notebook/temp/inputs/connected-editors/codemirror.tsx
|
||||||
|
src/Explorer/Notebook/temp/inputs/editor.tsx
|
||||||
|
src/Explorer/Notebook/temp/markdown-cell.tsx
|
||||||
|
src/Explorer/Notebook/temp/source.tsx
|
||||||
|
src/Explorer/Notebook/temp/syntax-highlighter/index.tsx
|
||||||
|
src/Explorer/SplashScreen/SplashScreenComponent.tsx
|
||||||
|
src/Explorer/SplashScreen/SplashScreenComponentApdapter.tsx
|
||||||
|
src/Explorer/Tabs/GalleryTab.tsx
|
||||||
|
src/Explorer/Tabs/NotebookViewerTab.tsx
|
||||||
|
src/Explorer/Tabs/TerminalTab.tsx
|
||||||
|
src/Explorer/Tree/ResourceTreeAdapter.tsx
|
||||||
|
src/Explorer/Tree/ResourceTreeAdapterForResourceToken.tsx
|
||||||
|
src/GalleryViewer/Cards/CardStyleConstants.tsx
|
||||||
|
src/GalleryViewer/Cards/GalleryCardComponent.tsx
|
||||||
|
src/GalleryViewer/GalleryViewer.tsx
|
||||||
|
src/GalleryViewer/GalleryViewerComponent.tsx
|
||||||
|
cypress/integration/dataexplorer/CASSANDRA/addCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/GRAPH/addCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/ci-tests/addCollectionPane.spec.ts
|
||||||
|
cypress/integration/dataexplorer/ci-tests/createDatabase.spec.ts
|
||||||
|
cypress/integration/dataexplorer/ci-tests/deleteCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/ci-tests/deleteDatabase.spec.ts
|
||||||
|
cypress/integration/dataexplorer/MONGO/addCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/MONGO/addCollectionAutopilot.spec.ts
|
||||||
|
cypress/integration/dataexplorer/MONGO/addCollectionExistingDatabase.spec.ts
|
||||||
|
cypress/integration/dataexplorer/MONGO/provisionDatabaseThroughput.spec.ts
|
||||||
|
cypress/integration/dataexplorer/SQL/addCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/TABLE/addCollection.spec.ts
|
||||||
|
cypress/integration/notebook/newNotebook.spec.ts
|
||||||
|
cypress/integration/notebook/resourceTree.spec.ts
|
||||||
|
__mocks__/AddDatabaseUtility.ts
|
||||||
|
__mocks__/monaco-editor.ts
|
||||||
|
src/Explorer/Tree/ResourceTreeAdapterForResourceToken.test.tsx
|
45
.eslintrc.js
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
module.exports = {
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
es6: true
|
||||||
|
},
|
||||||
|
plugins: ["@typescript-eslint"],
|
||||||
|
extends: [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended"
|
||||||
|
],
|
||||||
|
globals: {
|
||||||
|
Atomics: "readonly",
|
||||||
|
SharedArrayBuffer: "readonly"
|
||||||
|
},
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
parserOptions: {
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true
|
||||||
|
},
|
||||||
|
ecmaVersion: 2018,
|
||||||
|
sourceType: "module"
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ["**/*.tsx"],
|
||||||
|
env: {
|
||||||
|
jest: true
|
||||||
|
},
|
||||||
|
extends: ["plugin:react/recommended"],
|
||||||
|
plugins: ["react"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ["**/*.test.{ts,tsx}"],
|
||||||
|
env: {
|
||||||
|
jest: true
|
||||||
|
},
|
||||||
|
extends: ["plugin:jest/recommended"],
|
||||||
|
plugins: ["jest"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
curly: "error"
|
||||||
|
}
|
||||||
|
};
|
1
.github/CODEOWNERS
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
* @southpolesteve @ato9000
|
18
.gitignore
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
built/*
|
||||||
|
dist/*
|
||||||
|
coverage/**
|
||||||
|
css/*
|
||||||
|
Definitions/**/*
|
||||||
|
libs/**/*
|
||||||
|
**/node_modules/*
|
||||||
|
pkg/DataExplorer/*
|
||||||
|
test/out/*
|
||||||
|
workers/**/*.js
|
||||||
|
*.trx
|
||||||
|
cypress/videos
|
||||||
|
cypress/screenshots
|
||||||
|
cypress/fixtures
|
||||||
|
notebookapp/*
|
||||||
|
Contracts/*
|
||||||
|
.DS_Store
|
||||||
|
.cache/
|
40
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Debug Jest Tests",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeArgs": [
|
||||||
|
"--inspect-brk",
|
||||||
|
"${workspaceRoot}/node_modules/jest/bin/jest.js",
|
||||||
|
"--runInBand",
|
||||||
|
"--coverage", "false"
|
||||||
|
],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen",
|
||||||
|
"port": 9229
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Debug Jest Current Test",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeArgs": [
|
||||||
|
"--inspect-brk",
|
||||||
|
"${workspaceRoot}/node_modules/jest/bin/jest.js",
|
||||||
|
"${fileBasenameNoExtension}",
|
||||||
|
"--coverage", "false",
|
||||||
|
// "--watch",
|
||||||
|
// // --no-cache only used to make --watch work. Otherwise jest ignores the breakpoints.
|
||||||
|
// // https://github.com/facebook/jest/issues/6683
|
||||||
|
// "--no-cache"
|
||||||
|
],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen",
|
||||||
|
"port": 9229
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
21
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// Place your settings in this file to overwrite default and user settings.
|
||||||
|
{
|
||||||
|
"files.exclude": {
|
||||||
|
".vs": true,
|
||||||
|
".vscode/**": true,
|
||||||
|
"*.trx": true,
|
||||||
|
"**/.DS_Store": true,
|
||||||
|
"**/.git": true,
|
||||||
|
"**/.hg": true,
|
||||||
|
"**/.svn": true,
|
||||||
|
"built/**": true,
|
||||||
|
"coverage/**": true,
|
||||||
|
"libs/**": true,
|
||||||
|
"node_modules/**": true,
|
||||||
|
"package-lock.json": true,
|
||||||
|
"quickstart/**": true,
|
||||||
|
"test/out/**": true,
|
||||||
|
"workers/libs/**": true
|
||||||
|
},
|
||||||
|
"typescript.tsdk": "node_modules/typescript/lib"
|
||||||
|
}
|
24
DataExplorer.nuspec
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<package >
|
||||||
|
<metadata>
|
||||||
|
<id>Azure.Cosmos.DB.Data.Explorer</id>
|
||||||
|
<version>0.0.1-preview</version>
|
||||||
|
<title>Azure Cosmos DB Data Explorer</title>
|
||||||
|
<authors>Microsoft</authors>
|
||||||
|
<owners>Microsoft</owners>
|
||||||
|
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||||
|
<licenseUrl>http://go.microsoft.com/fwlink/?LinkId=848760</licenseUrl>
|
||||||
|
<projectUrl>http://go.microsoft.com/fwlink/?LinkId=848761</projectUrl>
|
||||||
|
<iconUrl>http://go.microsoft.com/fwlink/?LinkID=288890</iconUrl>
|
||||||
|
<description>Cosmos DB Data Explorer</description>
|
||||||
|
<summary>Cosmos DB Data Explorer</summary>
|
||||||
|
<tags>Cosmos DB Data Explorer</tags>
|
||||||
|
<dependencies>
|
||||||
|
</dependencies>
|
||||||
|
<frameworkAssemblies>
|
||||||
|
</frameworkAssemblies>
|
||||||
|
</metadata>
|
||||||
|
<files>
|
||||||
|
<file src="**\*" target="content"/>
|
||||||
|
</files>
|
||||||
|
</package>
|
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
|
||||||
|
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
|
95
README.md
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
# CosmosDB Explorer
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
- `npm install`
|
||||||
|
- `npm run build`
|
||||||
|
|
||||||
|
## Developing
|
||||||
|
|
||||||
|
### Watch mode
|
||||||
|
|
||||||
|
Run `npm run watch` to start the development server and automatically rebuild on changes
|
||||||
|
|
||||||
|
### Specifying Development Platform
|
||||||
|
|
||||||
|
Setting the environment variable `PLATFORM` during the build process will force the explorer to load the specified platform. By default in development it will run in `Hosted` mode. Valid options:
|
||||||
|
|
||||||
|
- Hosted
|
||||||
|
- Emulator
|
||||||
|
- Portal
|
||||||
|
|
||||||
|
`PLATFORM=Emulator npm run watch`
|
||||||
|
|
||||||
|
### Hosted Development
|
||||||
|
|
||||||
|
The default webpack dev server configuration will proxy requests to the production portal backend: `https://main.documentdb.ext.azure.com`. This will allow you to use production connection strings on your local machine.
|
||||||
|
|
||||||
|
To run pure hosted mode, in `webpack.config.js` change index HtmlWebpackPlugin to use hostedExplorer.html and change entry for index to use HostedExplorer.ts.
|
||||||
|
|
||||||
|
### Emulator Development
|
||||||
|
|
||||||
|
In a window environment, running `npm run build` will automatically copy the built files from `/dist` over to the default emulator install paths. In a non-windows enironment you can specify an alternate endpoint using `EMULATOR_ENDPOINT` and webpack dev server will proxy requests for you.
|
||||||
|
|
||||||
|
`PLATFORM=Emulator EMULATOR_ENDPOINT=https://my-vm.azure.com:8081 npm run watch`
|
||||||
|
|
||||||
|
#### Setting up a Remote Emulator
|
||||||
|
|
||||||
|
The Cosmos emulator currently only runs in Windows environments. You can still develop on a non-Windows machine by setting up an emulator on a windows box and exposing its ports publicly:
|
||||||
|
|
||||||
|
1. Expose these ports publicly: 8081, 8900, 8979, 10250, 10251, 10252, 10253, 10254, 10255, 10256
|
||||||
|
|
||||||
|
2. Download and install the emulator: https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator
|
||||||
|
|
||||||
|
3. Start the emulator from PowerShell:
|
||||||
|
|
||||||
|
```
|
||||||
|
> cd C:/
|
||||||
|
|
||||||
|
> .\CosmosDB.Emulator.exe -AllowNetworkAccess -Key="<EMULATOR MASTER KEY>"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Portal Development
|
||||||
|
|
||||||
|
The Cosmos Portal that consumes this repo is not currently open source. If you have access to this project, `npm run build` will copy the built files over to the portal where they will be loaded by the portal development environment
|
||||||
|
|
||||||
|
You can however load a local running instance of data explorer in the production portal.
|
||||||
|
|
||||||
|
1. Turn off browser SSL validation for localhost: chrome://flags/#allow-insecure-localhost OR Install valid SSL certs for localhost (on IE, follow these [instructions](https://www.technipages.com/ie-bypass-problem-with-this-websites-security-certificate) to install the localhost certificate in the right place)
|
||||||
|
2. Whitelist `https://localhost:1234` domain for CORS in the Azure Cosmos DB portal
|
||||||
|
3. Start the project in portal mode: `PLATFORM=Portal npm run watch`
|
||||||
|
4. Load the portal using the following link: https://ms.portal.azure.com/?dataExplorerSource=https%3A%2F%2Flocalhost%3A1234%2Fexplorer.html
|
||||||
|
|
||||||
|
Live reload will occur, but data explorer will not properly integrate again with the parent iframe. You will have to manually reload the page.
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
#### Unit Tests
|
||||||
|
|
||||||
|
Unit tests are located adjacent to the code under test and run with [Jest](https://jestjs.io/):
|
||||||
|
|
||||||
|
`npm run test`
|
||||||
|
|
||||||
|
#### End to End Tests
|
||||||
|
|
||||||
|
[Cypress](https://www.cypress.io/) is used for end to end tests and are contained in `cypress/`. Currently, it operates as sub project with its own typescript config and dependencies. It also only operates against the emulator. To run cypress tests:
|
||||||
|
|
||||||
|
1. Ensure the emulator is running
|
||||||
|
2. Start cosmos explorer in emulator mode: `PLATFORM=Emulator npm run watch`
|
||||||
|
3. Move into `cypress/` folder: `cd cypress`
|
||||||
|
4. Install dependencies: `npm install`
|
||||||
|
5. Run cypress headless(`npm run test`) or in interactive mode(`npm run test:debug`)
|
||||||
|
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
This project welcomes contributions and suggestions. Most contributions require you to agree to a
|
||||||
|
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
|
||||||
|
the rights to use your contribution. For details, visit https://cla.microsoft.com.
|
||||||
|
|
||||||
|
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
|
||||||
|
a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
|
||||||
|
provided by the bot. You will only need to do this once across all repos using our CLA.
|
||||||
|
|
||||||
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
||||||
|
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
|
||||||
|
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
10
ReleaseNotes.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#Release Note - Cosmos Explorer
|
||||||
|
|
||||||
|
##August 2019
|
||||||
|
* Added support to display multiple-values properties for Graph
|
||||||
|
* Added support for query modes to migrated Fixed containers
|
||||||
|
* Updated Azure Cosmos DB JavaScript library used in Data Explorer to version 3.1.1
|
||||||
|
* Remove spatial index from default indexing policy on container creation
|
||||||
|
* Disable stored procedures, UDF and triggers in Cosmos Explorer for accounts with Azure Cosmos DB for MongoDB API
|
||||||
|
* Disallow composite keys for Gremlin
|
||||||
|
* Performance Improvement
|
5
__mocks__/AddDatabaseUtility.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export class AddDbUtilities {
|
||||||
|
createGremlinDatabase(params: any) {
|
||||||
|
return Promise.resolve(1)
|
||||||
|
}
|
||||||
|
}
|
4
__mocks__/monaco-editor.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export const editor = {
|
||||||
|
create: () => {},
|
||||||
|
setTheme: () => {}
|
||||||
|
};
|
211
azure-pipelines.yaml
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- master
|
||||||
|
- "*"
|
||||||
|
paths:
|
||||||
|
include:
|
||||||
|
- "*"
|
||||||
|
exclude:
|
||||||
|
- Product/Portal/CapacityCalculator/*
|
||||||
|
- Product/Portal/DefaultConsistency/*
|
||||||
|
pool:
|
||||||
|
vmImage: "windows-latest"
|
||||||
|
jobs:
|
||||||
|
- job: FormatLintCompile
|
||||||
|
displayName: "Format/Lint/Compile"
|
||||||
|
steps:
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Install Dependencies"
|
||||||
|
inputs:
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Format"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run format:check"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Lint"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run lint"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Compile"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run compile"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Compile Strict Mode Files"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run compile:strict"
|
||||||
|
- job: EndToEndTests
|
||||||
|
displayName: "End to End Tests"
|
||||||
|
steps:
|
||||||
|
- powershell: |
|
||||||
|
Write-Host "Starting Comsos DB Emulator"
|
||||||
|
Start-Process "$env:ProgramFiles\Azure Cosmos DB Emulator\CosmosDB.Emulator.exe" "/NoUI /DisableRateLimiting" -Verb RunAs
|
||||||
|
displayName: "Start Emulator"
|
||||||
|
- bash: |
|
||||||
|
npm ci --prefix ./Product/Portal/DataExplorer
|
||||||
|
npm start --prefix ./Product/Portal/DataExplorer &
|
||||||
|
npm ci --prefix ./Product/Portal/DataExplorer/cypress
|
||||||
|
npm run test:ci --prefix ./Product/Portal/DataExplorer/cypress -- --spec ./integration/dataexplorer/ci-tests/createDatabase.spec.ts
|
||||||
|
displayName: "Start Server and Run Tests"
|
||||||
|
env:
|
||||||
|
EMULATOR_ENDPOINT: https://0.0.0.0:8081/
|
||||||
|
NODE_TLS_REJECT_UNAUTHORIZED: 0
|
||||||
|
- task: PublishBuildArtifacts@1
|
||||||
|
displayName: "Publish Screenshots"
|
||||||
|
inputs:
|
||||||
|
targetPath: $(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/cypress/cypress/screenshots
|
||||||
|
artifactName: e2e-screenshots
|
||||||
|
condition: failed()
|
||||||
|
continueOnError: true
|
||||||
|
|
||||||
|
- task: PublishBuildArtifacts@1
|
||||||
|
displayName: "Publish Videos"
|
||||||
|
inputs:
|
||||||
|
pathtoPublish: $(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/cypress/cypress/videos
|
||||||
|
artifactName: e2e-videos
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
continueOnError: true
|
||||||
|
- job: UnitTests
|
||||||
|
displayName: "Unit Tests"
|
||||||
|
steps:
|
||||||
|
- task: NodeTool@0
|
||||||
|
displayName: "Use Node 12.x"
|
||||||
|
inputs:
|
||||||
|
versionSpec: 12.x
|
||||||
|
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Install Dependencies"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer"
|
||||||
|
verbose: false
|
||||||
|
customCommand: "ci"
|
||||||
|
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Run Unit Tests"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer"
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run test"
|
||||||
|
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
displayName: "Publish Test Results"
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: VSTest
|
||||||
|
testResultsFiles: "**/*.trx"
|
||||||
|
mergeTestResults: true
|
||||||
|
testRunTitle: "Check-in Tests"
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- task: PublishCodeCoverageResults@1
|
||||||
|
displayName: "Publish Code Coverage Report"
|
||||||
|
inputs:
|
||||||
|
codeCoverageTool: Cobertura
|
||||||
|
summaryFileLocation: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/coverage/cobertura-coverage.xml"
|
||||||
|
pathToSources: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer"
|
||||||
|
reportDirectory: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/coverage/html"
|
||||||
|
- job: Build
|
||||||
|
steps:
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: 'dataexplorer | "$(Agent.OS)" |'
|
||||||
|
restoreKeys: 'dataexplorer | "$(Agent.OS)" |'
|
||||||
|
path: $(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/.cache
|
||||||
|
displayName: Restore Build Caches
|
||||||
|
- task: NodeTool@0
|
||||||
|
displayName: "Use Node 12.x"
|
||||||
|
inputs:
|
||||||
|
versionSpec: 12.x
|
||||||
|
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Install Dependencies"
|
||||||
|
inputs:
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Build Contracts"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run build:contracts"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Bundle - Production"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run pack:prod"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Copy Output Files to Consumers"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run copyToConsumers"
|
||||||
|
- powershell: |
|
||||||
|
$GitCommitSHA = $env:BUILD_SOURCEVERSION
|
||||||
|
$NuspecPath = "$env:BUILD_ARTIFACTSTAGINGDIRECTORY"
|
||||||
|
$VersionToReplace = "0.0.1-preview"
|
||||||
|
((Get-Content -path "$NuspecPath\DataExplorer.nuspec" -Raw) -replace $VersionToReplace ,("1.2.0-$GitCommitSHA")) | Set-Content -Path "$NuspecPath\DataExplorer.nuspec"
|
||||||
|
cat "$NuspecPath\DataExplorer.nuspec"
|
||||||
|
displayName: "Bump Package Version"
|
||||||
|
continueOnError: true
|
||||||
|
|
||||||
|
- task: NuGetCommand@2
|
||||||
|
displayName: "Create NuGet package"
|
||||||
|
inputs:
|
||||||
|
command: pack
|
||||||
|
packagesToPack: "$(Build.ArtifactStagingDirectory)/**/*.nuspec"
|
||||||
|
packDestination: '$(Build.ArtifactStagingDirectory)\NuGet'
|
||||||
|
|
||||||
|
- task: NuGetCommand@2
|
||||||
|
displayName: "NuGet push"
|
||||||
|
inputs:
|
||||||
|
command: push
|
||||||
|
publishVstsFeed: "4e0718b3-a885-4d77-b8c2-09bb2f6eecec"
|
||||||
|
allowPackageConflicts: true
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
$NuspecPath = "$env:BUILD_ARTIFACTSTAGINGDIRECTORY"
|
||||||
|
$PackageId= "Azure.Cosmos.DB.Data.Explorer"
|
||||||
|
((Get-Content -path "$NuspecPath\DataExplorer.nuspec" -Raw) -replace $PackageId,("$PackageId.MPAC")) | Set-Content -Path "$NuspecPath\DataExplorer.nuspec"
|
||||||
|
cat "$NuspecPath\DataExplorer.nuspec"
|
||||||
|
displayName: "Create MPAC nuspec"
|
||||||
|
continueOnError: true
|
||||||
|
|
||||||
|
- task: NuGetCommand@2
|
||||||
|
displayName: "Create NuGet MPAC package "
|
||||||
|
inputs:
|
||||||
|
command: pack
|
||||||
|
packagesToPack: "$(Build.ArtifactStagingDirectory)/**/*.nuspec"
|
||||||
|
packDestination: '$(Build.ArtifactStagingDirectory)\NuGet'
|
||||||
|
|
||||||
|
- task: NuGetCommand@2
|
||||||
|
displayName: "NuGet push MPAC"
|
||||||
|
inputs:
|
||||||
|
command: push
|
||||||
|
publishVstsFeed: "4e0718b3-a885-4d77-b8c2-09bb2f6eecec"
|
||||||
|
allowPackageConflicts: true
|
||||||
|
|
||||||
|
- task: PublishBuildArtifacts@1
|
||||||
|
displayName: "Publish Artifact: DataExplorer NuGet"
|
||||||
|
inputs:
|
||||||
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)\NuGet'
|
||||||
|
ArtifactName: DataExplorerNuGet
|
3
babel.config.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: [["@babel/preset-env", { targets: { node: "current" } }], "@babel/preset-react", "@babel/preset-typescript"]
|
||||||
|
};
|
24
copyToConsumers.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
const fs = require("fs-extra");
|
||||||
|
|
||||||
|
const dataExplorerLocalPath = process.env.BUILD_ARTIFACTSTAGINGDIRECTORY || process.env.DATAEXPLORER_PATH;
|
||||||
|
const dataExplorerEmulatorPath = process.env.ProgramFiles + "/Azure Cosmos DB Emulator/Packages/DataExplorer";
|
||||||
|
const newDataExplorerEmulatorPath = process.env.ProgramFiles + "/Azure Cosmos Emulator/Packages/DataExplorer";
|
||||||
|
|
||||||
|
console.log("Copying dist/ to portal and emulator");
|
||||||
|
cleanAndCopy(dataExplorerLocalPath);
|
||||||
|
cleanAndCopy(dataExplorerEmulatorPath);
|
||||||
|
cleanAndCopy(newDataExplorerEmulatorPath);
|
||||||
|
|
||||||
|
function cleanAndCopy(path) {
|
||||||
|
if (fs.existsSync(path)) {
|
||||||
|
fs.removeSync(path);
|
||||||
|
fs.copySync("dist", path);
|
||||||
|
if (fs.existsSync("Contracts")) {
|
||||||
|
fs.copySync("Contracts", path + "/contracts");
|
||||||
|
} else {
|
||||||
|
console.log("Contracts folder does not exist. Doing nothing.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(`Path: "${path}" does not exist. Doing nothing.`);
|
||||||
|
}
|
||||||
|
}
|
1
cypress/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
cypress.env.json
|
15
cypress/cypress.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"integrationFolder": "./integration",
|
||||||
|
"pluginsFile": false,
|
||||||
|
"fixturesFolder": false,
|
||||||
|
"supportFile": "./support/index.js",
|
||||||
|
"defaultCommandTimeout": 60000,
|
||||||
|
"chromeWebSecurity": false,
|
||||||
|
"reporter": "mochawesome",
|
||||||
|
"reporterOptions": {
|
||||||
|
"reportDir": "cypress/report",
|
||||||
|
"json": true,
|
||||||
|
"overwrite": false,
|
||||||
|
"html": false
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Cassandra API Test - createDatabase", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.cassandra);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new table in Cassandra API", () => {
|
||||||
|
const keyspaceId = `KeyspaceId${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const tableId = `TableId112`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Table"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[id="keyspace-id"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.type(keyspaceId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[class="textfontclr"]')
|
||||||
|
.type(tableId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('data-test="addCollection-createCollection"')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", tableId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
81
cypress/integration/dataexplorer/GRAPH/addCollection.spec.ts
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
// 1. Click on "New Graph" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Graph API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.graph);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new graph in Graph API", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const graphId = `TestGraph${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const partitionKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Graph"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(graphId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(partitionKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", graphId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
80
cypress/integration/dataexplorer/MONGO/addCollection.spec.ts
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// // 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Mongo API Test - createDatabase", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.mongo);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection in Mongo API", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,96 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Mongo API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.mongo);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection in Mongo API - Autopilot", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="throughputModeContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.and(input => {
|
||||||
|
expect(input.get(0).textContent, "first item").contains("Autopilot (preview)");
|
||||||
|
expect(input.get(1).textContent, "second item").contains("Manual");
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[id="newContainer-databaseThroughput-autoPilotRadio"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('select[name="autoPilotTiers"]')
|
||||||
|
// .eq(1).should('contain', '4,000 RU/s');
|
||||||
|
// // .select('4,000 RU/s').should('have.value', '1');
|
||||||
|
|
||||||
|
.find('option[value="2"]')
|
||||||
|
.then($element => $element.get(1).setAttribute("selected", "selected"));
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,67 @@
|
|||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Mongo API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.mongo);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection in existing database in Mongo API", () => {
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('span[class="nodeLabel"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.then($span => {
|
||||||
|
const dbId1 = $span.text();
|
||||||
|
cy.log("DBBB", dbId1);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-existingDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-existingDatabase"]')
|
||||||
|
.type(dbId1);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,203 @@
|
|||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Mongo API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.mongo);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection in Mongo API - Provision database throughput", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find(".createNewDatabaseOrUseExisting")
|
||||||
|
.should("have.length", 2)
|
||||||
|
.and(input => {
|
||||||
|
expect(input.get(0).textContent, "first item").contains("Create new");
|
||||||
|
expect(input.get(1).textContent, "second item").contains("Use existing");
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection - without provision database throughput", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionIdTitle = `Add Collection`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.uncheck();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[id="tab2"]')
|
||||||
|
.check({ force: true });
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection - without provision database throughput Fixed Storage Capacity", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.uncheck();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[id="tab1"]')
|
||||||
|
.check({ force: true });
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
78
cypress/integration/dataexplorer/SQL/addCollection.spec.ts
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("SQL API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.sql);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new container in SQL API", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Container"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
60
cypress/integration/dataexplorer/TABLE/addCollection.spec.ts
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Table API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.table);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new table in Table API", () => {
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Table"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,55 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Emulator - createDatabase", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit("http://localhost:1234/explorer.html");
|
||||||
|
});
|
||||||
|
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionIdTitle = `Add Collection`;
|
||||||
|
const partitionKey = `PartitionKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
it("Create a new collection", () => {
|
||||||
|
cy.contains("New Container").click();
|
||||||
|
|
||||||
|
// cy.contains(collectionIdTitle);
|
||||||
|
|
||||||
|
cy.get(".createNewDatabaseOrUseExisting")
|
||||||
|
.should("have.length", 2)
|
||||||
|
.and(input => {
|
||||||
|
expect(input.get(0).textContent, "first item").contains("Create new");
|
||||||
|
expect(input.get(1).textContent, "second item").contains("Use existing");
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-createNewDatabase"]').check();
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-newDatabaseId"]').type(dbId);
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-collectionId"]').type(collectionId);
|
||||||
|
|
||||||
|
cy.get('input[data-test="databaseThroughputValue"]').should("have.value", "400");
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-partitionKeyValue"]').type(partitionKey);
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-createCollection"]').click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="resourceTreeId"]').should("exist");
|
||||||
|
|
||||||
|
cy.get('div[data-test="resourceTree-collectionsTree"]').should("contain", dbId);
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseList"]').should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,65 @@
|
|||||||
|
// 1. Click on "New Database" on the command bar
|
||||||
|
// 2. a Pane with the title "Add Database" should appear on the right side of the screen
|
||||||
|
// i. It includes an input box for the database Id.
|
||||||
|
// ii. It includes a checkbox called "Provision throughput".
|
||||||
|
// iii. Whe the checkbox is marked, a new input with a throughput control let's you customize RU at the database level
|
||||||
|
// 3. Create a database WITHOUT "Provision throughput" checked.
|
||||||
|
// 4. It should appear in the Data Explorer list.
|
||||||
|
// 5. Repeat steps 1-3 but create a database WITH "Provision throughput" with the default RU value.
|
||||||
|
// 6. It should appear in the Data Explorer list.
|
||||||
|
// 7. If expanded, it should have the list item called "Scale", that once clicked, it should show the "Scale" tab.
|
||||||
|
// 8. Inside that tab, a throughput control will let you change the RU value within the permited range.
|
||||||
|
// 9. If you change the value, it should enable the "Save" button.
|
||||||
|
// 10. Click "Save" and verify that the process completes without error.
|
||||||
|
// 11. Close the tab and reopen it and verify that the input contains the last saved value.%
|
||||||
|
|
||||||
|
const crypto = require("crypto");
|
||||||
|
const client = require("../../../utilities/cosmosClient");
|
||||||
|
const randomString = crypto.randomBytes(2).toString("hex");
|
||||||
|
const databaseId = `TestDB-${randomString}`;
|
||||||
|
const collectionId = `TestColl-${randomString}`;
|
||||||
|
|
||||||
|
context("Emulator - Create database -> container -> item", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
const { resources } = await client.databases.readAll().fetchAll();
|
||||||
|
for (const database of resources) {
|
||||||
|
await client.database(database.id).delete();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it("creates a new database", () => {
|
||||||
|
cy.visit("https://0.0.0.0:1234/explorer.html?platform=Emulator");
|
||||||
|
cy.contains("New Container").click();
|
||||||
|
cy.get("[data-test=addCollection-newDatabaseId]").click();
|
||||||
|
cy.get("[data-test=addCollection-newDatabaseId]").type(databaseId);
|
||||||
|
cy.get("[data-test=addCollection-collectionId]").click();
|
||||||
|
cy.get("[data-test=addCollection-collectionId]").type(collectionId);
|
||||||
|
cy.get("[data-test=addCollection-partitionKeyValue]").click();
|
||||||
|
cy.get("[data-test=addCollection-partitionKeyValue]").type("/pk");
|
||||||
|
cy.get('input[name="createCollection"]').click();
|
||||||
|
cy.get(".dataResourceTree").should("contain", databaseId);
|
||||||
|
cy.get(".dataResourceTree")
|
||||||
|
.contains(databaseId)
|
||||||
|
.click();
|
||||||
|
cy.get(".dataResourceTree").should("contain", collectionId);
|
||||||
|
cy.get(".dataResourceTree")
|
||||||
|
.contains(collectionId)
|
||||||
|
.click();
|
||||||
|
cy.get(".dataResourceTree")
|
||||||
|
.contains("Items")
|
||||||
|
.click();
|
||||||
|
cy.get(".dataResourceTree")
|
||||||
|
.contains("Items")
|
||||||
|
.click();
|
||||||
|
cy.wait(1000); // React rendering inside KO causes some weird async rendering that makes this test flaky without waiting
|
||||||
|
cy.get(".commandBarContainer")
|
||||||
|
.contains("New Item")
|
||||||
|
.click();
|
||||||
|
cy.wait(1000); // React rendering inside KO causes some weird async rendering that makes this test flaky without waiting
|
||||||
|
cy.get(".commandBarContainer")
|
||||||
|
.contains("Save")
|
||||||
|
.click();
|
||||||
|
cy.wait(1000); // React rendering inside KO causes some weird async rendering that makes this test flaky without waiting
|
||||||
|
cy.get(".documentsGridHeaderContainer").should("contain", "replace_with_new_document_id");
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,46 @@
|
|||||||
|
// 1. Click last database in the resource tree
|
||||||
|
// 2. Click the last collection within the database
|
||||||
|
// 3. Select the context menu within the collection
|
||||||
|
// 4. Select "Delete Container" option in the dropdown
|
||||||
|
// 5. On Selection, Delete Container pane opens on the right side
|
||||||
|
// 6. Enter the same collection id that is to be deleted and click ok
|
||||||
|
// 7. Now, the resource tree refreshes, the deleted collection should not appear under the database
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Emulator - deleteCollection", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit("http://localhost:1234/explorer.html");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Delete a collection", () => {
|
||||||
|
cy.get(".databaseId")
|
||||||
|
.last()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.get(".collectionList")
|
||||||
|
.last()
|
||||||
|
.then($id => {
|
||||||
|
const collectionId = $id.text();
|
||||||
|
|
||||||
|
cy.get('span[data-test="collectionEllipsisMenu"]').should("exist");
|
||||||
|
|
||||||
|
cy.get('span[data-test="collectionEllipsisMenu"]')
|
||||||
|
.invoke("show")
|
||||||
|
.last()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="collectionContextMenu"]')
|
||||||
|
.contains("Delete Container")
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
cy.get('input[data-test="confirmCollectionId"]').type(collectionId.trim());
|
||||||
|
|
||||||
|
cy.get('input[data-test="deleteCollection"]').click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseList"]').should("not.contain", collectionId);
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseMenu"]').should("not.contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,83 @@
|
|||||||
|
// 1. Click last database in the resource tree
|
||||||
|
// 2. Select the context menu within the database
|
||||||
|
// 4. Select "Delete Database" option in the dropdown
|
||||||
|
// 5. On Selection, Delete Database pane opens on the right side
|
||||||
|
// 6. Enter the same database id that is to be deleted and click ok
|
||||||
|
// 7. Now, the resource tree refreshes, the deleted database should not appear in the resource tree
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Emulator - deleteDatabase", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
let db_rid = "";
|
||||||
|
const date = new Date().toUTCString();
|
||||||
|
let authToken = "";
|
||||||
|
cy.visit("http://localhost:1234/explorer.html");
|
||||||
|
|
||||||
|
// Creating auth token for collection creation
|
||||||
|
cy.request({
|
||||||
|
method: "GET",
|
||||||
|
url: "https://localhost:8081/_explorer/authorization/post/dbs/",
|
||||||
|
headers: {
|
||||||
|
"x-ms-date": date,
|
||||||
|
authorization: "-"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(response => {
|
||||||
|
authToken = response.body.Token; // Getting auth token for collection creation
|
||||||
|
return new Cypress.Promise((resolve, reject) => {
|
||||||
|
return resolve();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
cy.request({
|
||||||
|
method: "POST",
|
||||||
|
url: "https://localhost:8081/dbs",
|
||||||
|
headers: {
|
||||||
|
"x-ms-date": date,
|
||||||
|
authorization: authToken,
|
||||||
|
"x-ms-version": "2018-12-31"
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
id: dbId
|
||||||
|
}
|
||||||
|
}).then(response => {
|
||||||
|
cy.log("Response", response);
|
||||||
|
db_rid = response.body._rid;
|
||||||
|
return new Cypress.Promise((resolve, reject) => {
|
||||||
|
cy.log("Rid", db_rid);
|
||||||
|
return resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Delete a database", () => {
|
||||||
|
cy.get('span[data-test="refreshTree"]').click();
|
||||||
|
|
||||||
|
cy.get(".databaseId")
|
||||||
|
.last()
|
||||||
|
.then($id => {
|
||||||
|
const dbId = $id.text();
|
||||||
|
|
||||||
|
cy.get('span[data-test="databaseEllipsisMenu"]').should("exist");
|
||||||
|
|
||||||
|
cy.get('span[data-test="databaseEllipsisMenu"]')
|
||||||
|
.invoke("show")
|
||||||
|
.last()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseContextMenu"]')
|
||||||
|
.contains("Delete Database")
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
cy.get('input[data-test="confirmDatabaseId"]').type(dbId.trim());
|
||||||
|
|
||||||
|
cy.get('input[data-test="deleteDatabase"]').click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseList"]').should("not.contain", dbId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
35
cypress/integration/notebook/README.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Notebook end-to-end tests
|
||||||
|
This describes how to run the tests locally
|
||||||
|
|
||||||
|
## Stand up a local notebook container instance:
|
||||||
|
Instructions on how to build and run the container [here](https://microsoft.sharepoint.com/teams/DocDB/_layouts/OneNote.aspx?id=%2Fteams%2FDocDB%2FSiteAssets%2FDocDB%20Team%20Notebook&wd=target%28Tools%20_%20SDK%2FPortal%2FDevelopment.one%7CF800BE8E-1E31-48FE-90D7-EF698EF88112%2FHow%20to%20build%20notebook%20service%7C4BAA153B-422C-41E2-B997-F3FCE02CD743%2F%29)
|
||||||
|
|
||||||
|
## Run a local data explorer
|
||||||
|
Instructions are in [`DataExplorer/README.md`](https://msdata.visualstudio.com/CosmosDB/_git/cosmosdb-dataexplorer?path=%2FProduct%2FPortal%2FDataExplorer%2FREADME.md&_a=preview).
|
||||||
|
|
||||||
|
Make sure you can run Data Explorer locally from the web browser.
|
||||||
|
|
||||||
|
## Run cypress tests
|
||||||
|
1. Edit the URL for your DataExplorer in the `.spec.ts` file
|
||||||
|
2. Run the test:
|
||||||
|
```bash
|
||||||
|
cd DataExplorer/cypress
|
||||||
|
npm i
|
||||||
|
npm t -- --spec 'integration/notebook/newNotebook.spec.ts'
|
||||||
|
```
|
||||||
|
|
||||||
|
To run in Debug mode:
|
||||||
|
```
|
||||||
|
npm run test:debug
|
||||||
|
```
|
||||||
|
This opens Cypress UI
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
* The tests are recorded in the `videos` folder.
|
||||||
|
* Cypress does not support hover: workarounds [here](https://docs.cypress.io/api/commands/hover.html#Workarounds).
|
||||||
|
|
||||||
|
|
||||||
|
## References
|
||||||
|
* [Cypress API](https://docs.cypress.io/api/api/table-of-contents.html)
|
||||||
|
* [Cypress cookbook](https://docs.cypress.io/faq/questions/using-cypress-faq.html#How-do-I-get-an-element%E2%80%99s-text-contents)
|
||||||
|
* [Cypress best practices](https://docs.cypress.io/guides/references/best-practices.html#Selecting-Elements)
|
93
cypress/integration/notebook/newNotebook.spec.ts
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
// THIS ADDS A NEW NOTEBOOK TO YOUR NOTEBOOKS
|
||||||
|
context("New Notebook smoke test", () => {
|
||||||
|
const timeout = 15000; // in ms
|
||||||
|
const explorerUrl =
|
||||||
|
"https://localhost:1234/explorer.html?feature.notebookserverurl=https%3A%2F%2Flocalhost%3A10001%2F12345%2Fnotebook&feature.notebookServerToken=token&feature.enablenotebooks=true";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wait for UI to be ready
|
||||||
|
*/
|
||||||
|
const waitForReady = () => {
|
||||||
|
cy.get(".splashScreenContainer", { timeout }).should("be.visible");
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit(explorerUrl);
|
||||||
|
waitForReady();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new notebook and run some code", () => {
|
||||||
|
// Create new notebook
|
||||||
|
cy.contains("New Notebook").click();
|
||||||
|
|
||||||
|
// Check tab name
|
||||||
|
cy.get("li.tabList .tabNavText").should($span => {
|
||||||
|
const text = $span.text();
|
||||||
|
expect(text).to.match(/^Untitled.*\.ipynb$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Wait for python3 | idle status
|
||||||
|
cy.get('[data-test="notebookStatusBar"] [data-test="kernelStatus"]', { timeout }).should($p => {
|
||||||
|
const text = $p.text();
|
||||||
|
expect(text).to.match(/^python3.*idle$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Click on a cell
|
||||||
|
cy.get(".cell-container")
|
||||||
|
.as("cellContainer")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Type in some code
|
||||||
|
cy.get("@cellContainer").type("2+4");
|
||||||
|
|
||||||
|
// Execute
|
||||||
|
cy.get('[data-test="Run"]')
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Verify results
|
||||||
|
cy.get("@cellContainer").within(() => {
|
||||||
|
cy.get("pre code span").should("contain", "6");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Restart kernel
|
||||||
|
cy.get('[data-test="Run"] button')
|
||||||
|
.eq(-1)
|
||||||
|
.click();
|
||||||
|
cy.get("li")
|
||||||
|
.contains("Restart Kernel")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Wait for python3 | restarting status
|
||||||
|
cy.get('[data-test="notebookStatusBar"] [data-test="kernelStatus"]', { timeout }).should($p => {
|
||||||
|
const text = $p.text();
|
||||||
|
expect(text).to.match(/^python3.*restarting$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Wait for python3 | idle status
|
||||||
|
cy.get('[data-test="notebookStatusBar"] [data-test="kernelStatus"]', { timeout }).should($p => {
|
||||||
|
const text = $p.text();
|
||||||
|
expect(text).to.match(/^python3.*idle$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Click on a cell
|
||||||
|
cy.get(".cell-container")
|
||||||
|
.as("cellContainer")
|
||||||
|
.find(".input")
|
||||||
|
.as("codeInput")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Type in some code
|
||||||
|
cy.get("@codeInput").type("{backspace}{backspace}{backspace}4+5");
|
||||||
|
|
||||||
|
// Execute
|
||||||
|
cy.get('[data-test="Run"]')
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Verify results
|
||||||
|
cy.get("@cellContainer").within(() => {
|
||||||
|
cy.get("pre code span").should("contain", "9");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
172
cypress/integration/notebook/resourceTree.spec.ts
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
context("Resource tree notebook file manipulation", () => {
|
||||||
|
const timeout = 15000; // in ms
|
||||||
|
const explorerUrl =
|
||||||
|
"https://localhost:1234/explorer.html?feature.notebookserverurl=https%3A%2F%2Flocalhost%3A10001%2F12345%2Fnotebook&feature.notebookServerToken=token&feature.enablenotebooks=true";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wait for UI to be ready
|
||||||
|
*/
|
||||||
|
const waitForReady = () => {
|
||||||
|
cy.get(".splashScreenContainer", { timeout }).should("be.visible");
|
||||||
|
};
|
||||||
|
|
||||||
|
const clickContextMenuAndSelectOption = (nodeLabel, option) => {
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${nodeLabel}"]`)
|
||||||
|
.find("button.treeMenuEllipsis")
|
||||||
|
.click();
|
||||||
|
cy.get('[data-test="treeComponentMenuItemContainer"]')
|
||||||
|
.contains(option)
|
||||||
|
.click();
|
||||||
|
};
|
||||||
|
|
||||||
|
const createFolder = folder => {
|
||||||
|
clickContextMenuAndSelectOption("My Notebooks/", "New Directory");
|
||||||
|
|
||||||
|
cy.get("#stringInputPane").within(() => {
|
||||||
|
cy.get('input[name="collectionIdConfirmation"]').type(folder);
|
||||||
|
cy.get("form").submit();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteItem = nodeName => {
|
||||||
|
clickContextMenuAndSelectOption(`${nodeName}`, "Delete");
|
||||||
|
cy.get(".ms-Dialog-main")
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit(explorerUrl);
|
||||||
|
waitForReady();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create and remove a directory", () => {
|
||||||
|
const folder = "e2etest_folder1";
|
||||||
|
createFolder(folder);
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).should("exist");
|
||||||
|
deleteItem(`${folder}/`);
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).should("not.exist");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create and rename a directory", () => {
|
||||||
|
const folder = "e2etest_folder2";
|
||||||
|
const renamedFolder = "e2etest_folder2_renamed";
|
||||||
|
createFolder(folder);
|
||||||
|
|
||||||
|
// Rename
|
||||||
|
clickContextMenuAndSelectOption(`${folder}/`, "Rename");
|
||||||
|
cy.get("#stringInputPane").within(() => {
|
||||||
|
cy.get('input[name="collectionIdConfirmation"]')
|
||||||
|
.clear()
|
||||||
|
.type(renamedFolder);
|
||||||
|
cy.get("form").submit();
|
||||||
|
});
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${renamedFolder}/"]`).should("exist");
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).should("not.exist");
|
||||||
|
|
||||||
|
deleteItem(`${renamedFolder}/`);
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${renamedFolder}/"]`).should("not.exist");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a notebook inside a directory", () => {
|
||||||
|
const folder = "e2etest_folder3";
|
||||||
|
const newNotebookName = "Untitled.ipynb";
|
||||||
|
createFolder(folder);
|
||||||
|
clickContextMenuAndSelectOption(`${folder}/`, "New Notebook");
|
||||||
|
|
||||||
|
// Verify tab is open
|
||||||
|
cy.get(".tabList")
|
||||||
|
.contains(newNotebookName)
|
||||||
|
.should("exist");
|
||||||
|
|
||||||
|
// Close tab
|
||||||
|
cy.get(`.tabList[title="notebooks/${folder}/${newNotebookName}"]`)
|
||||||
|
.find(".cancelButton")
|
||||||
|
.click();
|
||||||
|
// When running from command line, closing the tab is too fast
|
||||||
|
cy.get("body").then($body => {
|
||||||
|
if ($body.find(".ms-Dialog-main").length) {
|
||||||
|
// For some reason, this does not work
|
||||||
|
// cy.get(".ms-Dialog-main").contains("Close").click();
|
||||||
|
cy.get(".ms-Dialog-main .ms-Button--primary").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Expand folder node
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).click();
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`).should("exist");
|
||||||
|
|
||||||
|
// Delete notebook
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`)
|
||||||
|
.find("button.treeMenuEllipsis")
|
||||||
|
.click();
|
||||||
|
cy.get('[data-test="treeComponentMenuItemContainer"]')
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Confirm
|
||||||
|
cy.get(".ms-Dialog-main")
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`).should("not.exist");
|
||||||
|
|
||||||
|
deleteItem(`${folder}/`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create and rename a notebook inside a directory", () => {
|
||||||
|
const folder = "e2etest_folder4";
|
||||||
|
const newNotebookName = "Untitled.ipynb";
|
||||||
|
const renamedNotebookName = "mynotebook.ipynb";
|
||||||
|
createFolder(folder);
|
||||||
|
clickContextMenuAndSelectOption(`${folder}/`, "New Notebook");
|
||||||
|
|
||||||
|
// Close tab
|
||||||
|
cy.get(`.tabList[title="notebooks/${folder}/${newNotebookName}"]`)
|
||||||
|
.find(".cancelButton")
|
||||||
|
.click();
|
||||||
|
cy.get("body").then($body => {
|
||||||
|
if ($body.find(".ms-Dialog-main").length) {
|
||||||
|
// For some reason, this does not work
|
||||||
|
// cy.get(".ms-Dialog-main").contains("Close").click();
|
||||||
|
cy.get(".ms-Dialog-main .ms-Button--primary").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Expand folder node
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).click();
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`).should("exist");
|
||||||
|
|
||||||
|
// Rename notebook
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`)
|
||||||
|
.find("button.treeMenuEllipsis")
|
||||||
|
.click();
|
||||||
|
cy.get('[data-test="treeComponentMenuItemContainer"]')
|
||||||
|
.contains("Rename")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.get("#stringInputPane").within(() => {
|
||||||
|
cy.get('input[name="collectionIdConfirmation"]')
|
||||||
|
.clear()
|
||||||
|
.type(renamedNotebookName);
|
||||||
|
cy.get("form").submit();
|
||||||
|
});
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`).should("not.exist");
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${renamedNotebookName}"]`).should("exist");
|
||||||
|
|
||||||
|
// Delete notebook
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${renamedNotebookName}"]`)
|
||||||
|
.find("button.treeMenuEllipsis")
|
||||||
|
.click();
|
||||||
|
cy.get('[data-test="treeComponentMenuItemContainer"]')
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Confirm
|
||||||
|
cy.get(".ms-Dialog-main")
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
// Give it time to settle
|
||||||
|
cy.wait(1000);
|
||||||
|
deleteItem(`${folder}/`);
|
||||||
|
});
|
||||||
|
});
|
3148
cypress/package-lock.json
generated
Normal file
23
cypress/package.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "cosmos-explorer-cypress",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "cypress run",
|
||||||
|
"test:ci": "wait-on -t 240000 -i 5000 -v https-get://0.0.0.0:1234/ https-get://0.0.0.0:8081/_explorer/index.html && cypress run --browser chrome --headless",
|
||||||
|
"test:debug": "cypress open"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"cypress": "^4.5.0",
|
||||||
|
"mocha": "^7.0.1",
|
||||||
|
"mochawesome": "^4.1.0",
|
||||||
|
"mochawesome-merge": "^4.0.1",
|
||||||
|
"mochawesome-report-generator": "^4.1.0",
|
||||||
|
"typescript": "3.4.3",
|
||||||
|
"wait-on": "^4.0.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@microsoft/applicationinsights-web": "^2.5.2"
|
||||||
|
}
|
||||||
|
}
|
23
cypress/support/index.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
let appInsightsLib = require("@microsoft/applicationinsights-web");
|
||||||
|
|
||||||
|
const appInsights = new appInsightsLib.ApplicationInsights({
|
||||||
|
config: {
|
||||||
|
instrumentationKey: "fe61c39f-7d32-4488-a191-b13621965315"
|
||||||
|
/* ...Other Configuration Options... */
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
appInsights.loadAppInsights();
|
||||||
|
|
||||||
|
Cypress.on("fail", (error, runnable) => {
|
||||||
|
// App Insights will record the fail tests for Create Collection
|
||||||
|
let message = JSON.stringify(runnable.title);
|
||||||
|
appInsights.trackTrace({
|
||||||
|
message: `${message}`,
|
||||||
|
properties: {
|
||||||
|
passed: false,
|
||||||
|
error: error
|
||||||
|
}
|
||||||
|
});
|
||||||
|
throw error; // throw error to have test still fail
|
||||||
|
});
|
11
cypress/tsconfig.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"module": "commonjs",
|
||||||
|
"target": "es5",
|
||||||
|
"lib": ["es5", "dom", "es6"],
|
||||||
|
"types": ["cypress", "node"]
|
||||||
|
},
|
||||||
|
"include": ["**/*.ts", "**/*.spec.ts"]
|
||||||
|
}
|
56
cypress/utilities/connectionString.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
module.exports = {
|
||||||
|
loginUsingConnectionString: function (api) {
|
||||||
|
|
||||||
|
|
||||||
|
const prodUrl = "https://cosmos.azure.com/";
|
||||||
|
const timeout = 15000;
|
||||||
|
|
||||||
|
cy.visit(prodUrl);
|
||||||
|
cy.get('iframe[id="explorerMenu"]').should("be.visible");
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find("#connectExplorer")
|
||||||
|
.should("exist")
|
||||||
|
.find("div[class='connectExplorer']")
|
||||||
|
.should("exist")
|
||||||
|
.find("p[class='welcomeText']")
|
||||||
|
.should("exist");
|
||||||
|
|
||||||
|
cy.wrap($body.find("div > p.switchConnectTypeText"))
|
||||||
|
.should("exist")
|
||||||
|
.last()
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
const secret = Cypress.env('connectionString')[api];
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find("input[class='inputToken']")
|
||||||
|
.should("exist")
|
||||||
|
.type(secret, {
|
||||||
|
force: true
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.wrap($body.find("input[value='Connect']"), { timeout })
|
||||||
|
.first()
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
cy.wait(15000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find(".connectExplorer > p:nth-child(3)")
|
||||||
|
.should("be.visible");
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
constants:{
|
||||||
|
sql: "sql",
|
||||||
|
mongo: "mongo",
|
||||||
|
table: "table",
|
||||||
|
graph: "graph",
|
||||||
|
cassandra: "cassandra"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
6
cypress/utilities/cosmosClient.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
const { CosmosClient } = require("@azure/cosmos");
|
||||||
|
|
||||||
|
module.exports = new CosmosClient({
|
||||||
|
endpoint: "https://0.0.0.0:8081",
|
||||||
|
key: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
|
||||||
|
});
|
1963
externals/adal.js
vendored
Normal file
7
externals/bootstrap.js
vendored
Normal file
7
externals/bootstrap.min.js
vendored
Normal file
6
externals/bootstrap_ase.css
vendored
Normal file
595
externals/bops.js
vendored
Normal file
@ -0,0 +1,595 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
(function(e){if("function"==typeof bootstrap)bootstrap("bops",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeBops=e}else"undefined"!=typeof window?window.bops=e():global.bops=e()})(function(){var define,ses,bootstrap,module,exports;
|
||||||
|
return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){
|
||||||
|
var proto = {}
|
||||||
|
module.exports = proto
|
||||||
|
|
||||||
|
proto.from = require('./from.js')
|
||||||
|
proto.to = require('./to.js')
|
||||||
|
proto.is = require('./is.js')
|
||||||
|
proto.subarray = require('./subarray.js')
|
||||||
|
proto.join = require('./join.js')
|
||||||
|
proto.copy = require('./copy.js')
|
||||||
|
proto.create = require('./create.js')
|
||||||
|
|
||||||
|
mix(require('./read.js'), proto)
|
||||||
|
mix(require('./write.js'), proto)
|
||||||
|
|
||||||
|
function mix(from, into) {
|
||||||
|
for(var key in from) {
|
||||||
|
into[key] = from[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"./from.js":2,"./to.js":3,"./is.js":4,"./subarray.js":5,"./join.js":6,"./copy.js":7,"./create.js":8,"./read.js":9,"./write.js":10}],4:[function(require,module,exports){
|
||||||
|
|
||||||
|
module.exports = function(buffer) {
|
||||||
|
return buffer instanceof Uint8Array;
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],5:[function(require,module,exports){
|
||||||
|
module.exports = subarray
|
||||||
|
|
||||||
|
function subarray(buf, from, to) {
|
||||||
|
return buf.subarray(from || 0, to || buf.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],6:[function(require,module,exports){
|
||||||
|
module.exports = join
|
||||||
|
|
||||||
|
function join(targets, hint) {
|
||||||
|
if(!targets.length) {
|
||||||
|
return new Uint8Array(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
var len = hint !== undefined ? hint : get_length(targets)
|
||||||
|
, out = new Uint8Array(len)
|
||||||
|
, cur = targets[0]
|
||||||
|
, curlen = cur.length
|
||||||
|
, curidx = 0
|
||||||
|
, curoff = 0
|
||||||
|
, i = 0
|
||||||
|
|
||||||
|
while(i < len) {
|
||||||
|
if(curoff === curlen) {
|
||||||
|
curoff = 0
|
||||||
|
++curidx
|
||||||
|
cur = targets[curidx]
|
||||||
|
curlen = cur && cur.length
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
out[i++] = cur[curoff++]
|
||||||
|
}
|
||||||
|
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_length(targets) {
|
||||||
|
var size = 0
|
||||||
|
for(var i = 0, len = targets.length; i < len; ++i) {
|
||||||
|
size += targets[i].byteLength
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],7:[function(require,module,exports){
|
||||||
|
module.exports = copy
|
||||||
|
|
||||||
|
var slice = [].slice
|
||||||
|
|
||||||
|
function copy(source, target, target_start, source_start, source_end) {
|
||||||
|
target_start = arguments.length < 3 ? 0 : target_start
|
||||||
|
source_start = arguments.length < 4 ? 0 : source_start
|
||||||
|
source_end = arguments.length < 5 ? source.length : source_end
|
||||||
|
|
||||||
|
if(source_end === source_start) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(target.length === 0 || source.length === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(source_end > source.length) {
|
||||||
|
source_end = source.length
|
||||||
|
}
|
||||||
|
|
||||||
|
if(target.length - target_start < source_end - source_start) {
|
||||||
|
source_end = target.length - target_start + start
|
||||||
|
}
|
||||||
|
|
||||||
|
if(source.buffer !== target.buffer) {
|
||||||
|
return fast_copy(source, target, target_start, source_start, source_end)
|
||||||
|
}
|
||||||
|
return slow_copy(source, target, target_start, source_start, source_end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function fast_copy(source, target, target_start, source_start, source_end) {
|
||||||
|
var len = (source_end - source_start) + target_start
|
||||||
|
|
||||||
|
for(var i = target_start, j = source_start;
|
||||||
|
i < len;
|
||||||
|
++i,
|
||||||
|
++j) {
|
||||||
|
target[i] = source[j]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function slow_copy(from, to, j, i, jend) {
|
||||||
|
// the buffers could overlap.
|
||||||
|
var iend = jend + i
|
||||||
|
, tmp = new Uint8Array(slice.call(from, i, iend))
|
||||||
|
, x = 0
|
||||||
|
|
||||||
|
for(; i < iend; ++i, ++x) {
|
||||||
|
to[j++] = tmp[x]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],8:[function(require,module,exports){
|
||||||
|
module.exports = function(size) {
|
||||||
|
return new Uint8Array(size)
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],9:[function(require,module,exports){
|
||||||
|
module.exports = {
|
||||||
|
readUInt8: read_uint8
|
||||||
|
, readInt8: read_int8
|
||||||
|
, readUInt16LE: read_uint16_le
|
||||||
|
, readUInt32LE: read_uint32_le
|
||||||
|
, readInt16LE: read_int16_le
|
||||||
|
, readInt32LE: read_int32_le
|
||||||
|
, readFloatLE: read_float_le
|
||||||
|
, readDoubleLE: read_double_le
|
||||||
|
, readUInt16BE: read_uint16_be
|
||||||
|
, readUInt32BE: read_uint32_be
|
||||||
|
, readInt16BE: read_int16_be
|
||||||
|
, readInt32BE: read_int32_be
|
||||||
|
, readFloatBE: read_float_be
|
||||||
|
, readDoubleBE: read_double_be
|
||||||
|
}
|
||||||
|
|
||||||
|
var map = require('./mapped.js')
|
||||||
|
|
||||||
|
function read_uint8(target, at) {
|
||||||
|
return target[at]
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int8(target, at) {
|
||||||
|
var v = target[at];
|
||||||
|
return v < 0x80 ? v : v - 0x100
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_uint16_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getUint16(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_uint32_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getUint32(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int16_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getInt16(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int32_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getInt32(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_float_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getFloat32(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_double_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getFloat64(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_uint16_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getUint16(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_uint32_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getUint32(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int16_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getInt16(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int32_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getInt32(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_float_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getFloat32(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_double_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getFloat64(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"./mapped.js":11}],10:[function(require,module,exports){
|
||||||
|
module.exports = {
|
||||||
|
writeUInt8: write_uint8
|
||||||
|
, writeInt8: write_int8
|
||||||
|
, writeUInt16LE: write_uint16_le
|
||||||
|
, writeUInt32LE: write_uint32_le
|
||||||
|
, writeInt16LE: write_int16_le
|
||||||
|
, writeInt32LE: write_int32_le
|
||||||
|
, writeFloatLE: write_float_le
|
||||||
|
, writeDoubleLE: write_double_le
|
||||||
|
, writeUInt16BE: write_uint16_be
|
||||||
|
, writeUInt32BE: write_uint32_be
|
||||||
|
, writeInt16BE: write_int16_be
|
||||||
|
, writeInt32BE: write_int32_be
|
||||||
|
, writeFloatBE: write_float_be
|
||||||
|
, writeDoubleBE: write_double_be
|
||||||
|
}
|
||||||
|
|
||||||
|
var map = require('./mapped.js')
|
||||||
|
|
||||||
|
function write_uint8(target, value, at) {
|
||||||
|
return target[at] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int8(target, value, at) {
|
||||||
|
return target[at] = value < 0 ? value + 0x100 : value
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_uint16_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setUint16(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_uint32_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setUint32(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int16_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setInt16(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int32_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setInt32(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_float_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setFloat32(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_double_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setFloat64(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_uint16_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setUint16(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_uint32_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setUint32(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int16_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setInt16(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int32_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setInt32(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_float_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setFloat32(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_double_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setFloat64(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"./mapped.js":11}],11:[function(require,module,exports){
|
||||||
|
var proto
|
||||||
|
, map
|
||||||
|
|
||||||
|
module.exports = proto = {}
|
||||||
|
|
||||||
|
map = typeof WeakMap === 'undefined' ? null : new WeakMap
|
||||||
|
|
||||||
|
proto.get = !map ? no_weakmap_get : get
|
||||||
|
|
||||||
|
function no_weakmap_get(target) {
|
||||||
|
return new DataView(target.buffer, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
function get(target) {
|
||||||
|
var out = map.get(target.buffer)
|
||||||
|
if(!out) {
|
||||||
|
map.set(target.buffer, out = new DataView(target.buffer, 0))
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],2:[function(require,module,exports){
|
||||||
|
module.exports = from
|
||||||
|
|
||||||
|
var base64 = require('base64-js')
|
||||||
|
|
||||||
|
var decoders = {
|
||||||
|
hex: from_hex
|
||||||
|
, utf8: from_utf
|
||||||
|
, base64: from_base64
|
||||||
|
}
|
||||||
|
|
||||||
|
function from(source, encoding) {
|
||||||
|
if(Array.isArray(source)) {
|
||||||
|
return new Uint8Array(source)
|
||||||
|
}
|
||||||
|
|
||||||
|
return decoders[encoding || 'utf8'](source)
|
||||||
|
}
|
||||||
|
|
||||||
|
function from_hex(str) {
|
||||||
|
var size = str.length / 2
|
||||||
|
, buf = new Uint8Array(size)
|
||||||
|
, character = ''
|
||||||
|
|
||||||
|
for(var i = 0, len = str.length; i < len; ++i) {
|
||||||
|
character += str.charAt(i)
|
||||||
|
|
||||||
|
if(i > 0 && (i % 2) === 1) {
|
||||||
|
buf[i>>>1] = parseInt(character, 16)
|
||||||
|
character = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf
|
||||||
|
}
|
||||||
|
|
||||||
|
function from_utf(str) {
|
||||||
|
var bytes = []
|
||||||
|
, tmp
|
||||||
|
, ch
|
||||||
|
|
||||||
|
for(var i = 0, len = str.length; i < len; ++i) {
|
||||||
|
ch = str.charCodeAt(i)
|
||||||
|
if(ch & 0x80) {
|
||||||
|
tmp = encodeURIComponent(str.charAt(i)).substr(1).split('%')
|
||||||
|
for(var j = 0, jlen = tmp.length; j < jlen; ++j) {
|
||||||
|
bytes[bytes.length] = parseInt(tmp[j], 16)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bytes[bytes.length] = ch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Uint8Array(bytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
function from_base64(str) {
|
||||||
|
return new Uint8Array(base64.toByteArray(str))
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"base64-js":12}],3:[function(require,module,exports){
|
||||||
|
module.exports = to
|
||||||
|
|
||||||
|
var base64 = require('base64-js')
|
||||||
|
, toutf8 = require('to-utf8')
|
||||||
|
|
||||||
|
var encoders = {
|
||||||
|
hex: to_hex
|
||||||
|
, utf8: to_utf
|
||||||
|
, base64: to_base64
|
||||||
|
}
|
||||||
|
|
||||||
|
function to(buf, encoding) {
|
||||||
|
return encoders[encoding || 'utf8'](buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
function to_hex(buf) {
|
||||||
|
var str = ''
|
||||||
|
, byt
|
||||||
|
|
||||||
|
for(var i = 0, len = buf.length; i < len; ++i) {
|
||||||
|
byt = buf[i]
|
||||||
|
str += ((byt & 0xF0) >>> 4).toString(16)
|
||||||
|
str += (byt & 0x0F).toString(16)
|
||||||
|
}
|
||||||
|
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
function to_utf(buf) {
|
||||||
|
return toutf8(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
function to_base64(buf) {
|
||||||
|
return base64.fromByteArray(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
},{"base64-js":12,"to-utf8":13}],12:[function(require,module,exports){
|
||||||
|
(function (exports) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||||
|
|
||||||
|
function b64ToByteArray(b64) {
|
||||||
|
var i, j, l, tmp, placeHolders, arr;
|
||||||
|
|
||||||
|
if (b64.length % 4 > 0) {
|
||||||
|
throw 'Invalid string. Length must be a multiple of 4';
|
||||||
|
}
|
||||||
|
|
||||||
|
// the number of equal signs (place holders)
|
||||||
|
// if there are two placeholders, than the two characters before it
|
||||||
|
// represent one byte
|
||||||
|
// if there is only one, then the three characters before it represent 2 bytes
|
||||||
|
// this is just a cheap hack to not do indexOf twice
|
||||||
|
placeHolders = b64.indexOf('=');
|
||||||
|
placeHolders = placeHolders > 0 ? b64.length - placeHolders : 0;
|
||||||
|
|
||||||
|
// base64 is 4/3 + up to two characters of the original data
|
||||||
|
arr = [];//new Uint8Array(b64.length * 3 / 4 - placeHolders);
|
||||||
|
|
||||||
|
// if there are placeholders, only get up to the last complete 4 chars
|
||||||
|
l = placeHolders > 0 ? b64.length - 4 : b64.length;
|
||||||
|
|
||||||
|
for (i = 0, j = 0; i < l; i += 4, j += 3) {
|
||||||
|
tmp = (lookup.indexOf(b64[i]) << 18) | (lookup.indexOf(b64[i + 1]) << 12) | (lookup.indexOf(b64[i + 2]) << 6) | lookup.indexOf(b64[i + 3]);
|
||||||
|
arr.push((tmp & 0xFF0000) >> 16);
|
||||||
|
arr.push((tmp & 0xFF00) >> 8);
|
||||||
|
arr.push(tmp & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (placeHolders === 2) {
|
||||||
|
tmp = (lookup.indexOf(b64[i]) << 2) | (lookup.indexOf(b64[i + 1]) >> 4);
|
||||||
|
arr.push(tmp & 0xFF);
|
||||||
|
} else if (placeHolders === 1) {
|
||||||
|
tmp = (lookup.indexOf(b64[i]) << 10) | (lookup.indexOf(b64[i + 1]) << 4) | (lookup.indexOf(b64[i + 2]) >> 2);
|
||||||
|
arr.push((tmp >> 8) & 0xFF);
|
||||||
|
arr.push(tmp & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
function uint8ToBase64(uint8) {
|
||||||
|
var i,
|
||||||
|
extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
|
||||||
|
output = "",
|
||||||
|
temp, length;
|
||||||
|
|
||||||
|
function tripletToBase64 (num) {
|
||||||
|
return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];
|
||||||
|
};
|
||||||
|
|
||||||
|
// go through the array every three bytes, we'll deal with trailing stuff later
|
||||||
|
for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
|
||||||
|
temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
|
||||||
|
output += tripletToBase64(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
// pad the end with zeros, but make sure to not forget the extra bytes
|
||||||
|
switch (extraBytes) {
|
||||||
|
case 1:
|
||||||
|
temp = uint8[uint8.length - 1];
|
||||||
|
output += lookup[temp >> 2];
|
||||||
|
output += lookup[(temp << 4) & 0x3F];
|
||||||
|
output += '==';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]);
|
||||||
|
output += lookup[temp >> 10];
|
||||||
|
output += lookup[(temp >> 4) & 0x3F];
|
||||||
|
output += lookup[(temp << 2) & 0x3F];
|
||||||
|
output += '=';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.toByteArray = b64ToByteArray;
|
||||||
|
module.exports.fromByteArray = uint8ToBase64;
|
||||||
|
}());
|
||||||
|
|
||||||
|
},{}],13:[function(require,module,exports){
|
||||||
|
module.exports = to_utf8
|
||||||
|
|
||||||
|
var out = []
|
||||||
|
, col = []
|
||||||
|
, fcc = String.fromCharCode
|
||||||
|
, mask = [0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01]
|
||||||
|
, unmask = [
|
||||||
|
0x00
|
||||||
|
, 0x01
|
||||||
|
, 0x02 | 0x01
|
||||||
|
, 0x04 | 0x02 | 0x01
|
||||||
|
, 0x08 | 0x04 | 0x02 | 0x01
|
||||||
|
, 0x10 | 0x08 | 0x04 | 0x02 | 0x01
|
||||||
|
, 0x20 | 0x10 | 0x08 | 0x04 | 0x02 | 0x01
|
||||||
|
, 0x40 | 0x20 | 0x10 | 0x08 | 0x04 | 0x02 | 0x01
|
||||||
|
]
|
||||||
|
|
||||||
|
function to_utf8(bytes, start, end) {
|
||||||
|
start = start === undefined ? 0 : start
|
||||||
|
end = end === undefined ? bytes.length : end
|
||||||
|
|
||||||
|
var idx = 0
|
||||||
|
, hi = 0x80
|
||||||
|
, collecting = 0
|
||||||
|
, pos
|
||||||
|
, by
|
||||||
|
|
||||||
|
col.length =
|
||||||
|
out.length = 0
|
||||||
|
|
||||||
|
while(idx < bytes.length) {
|
||||||
|
by = bytes[idx]
|
||||||
|
if(!collecting && by & hi) {
|
||||||
|
pos = find_pad_position(by)
|
||||||
|
collecting += pos
|
||||||
|
if(pos < 8) {
|
||||||
|
col[col.length] = by & unmask[6 - pos]
|
||||||
|
}
|
||||||
|
} else if(collecting) {
|
||||||
|
col[col.length] = by & unmask[6]
|
||||||
|
--collecting
|
||||||
|
if(!collecting && col.length) {
|
||||||
|
out[out.length] = fcc(reduced(col, pos))
|
||||||
|
col.length = 0
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out[out.length] = fcc(by)
|
||||||
|
}
|
||||||
|
++idx
|
||||||
|
}
|
||||||
|
if(col.length && !collecting) {
|
||||||
|
out[out.length] = fcc(reduced(col, pos))
|
||||||
|
col.length = 0
|
||||||
|
}
|
||||||
|
return out.join('')
|
||||||
|
}
|
||||||
|
|
||||||
|
function find_pad_position(byt) {
|
||||||
|
for(var i = 0; i < 7; ++i) {
|
||||||
|
if(!(byt & mask[i])) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
function reduced(list) {
|
||||||
|
var out = 0
|
||||||
|
for(var i = 0, len = list.length; i < len; ++i) {
|
||||||
|
out |= list[i] << ((len - i - 1) * 6)
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}]},{},[1])(1)
|
||||||
|
});
|
||||||
|
;
|
723
externals/crossroads.js
vendored
Normal file
@ -0,0 +1,723 @@
|
|||||||
|
/** @license
|
||||||
|
* crossroads <http://millermedeiros.github.com/crossroads.js/>
|
||||||
|
* Author: Miller Medeiros | MIT License
|
||||||
|
* v0.12.2 (2015/07/31 18:37)
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var factory = function (signals) {
|
||||||
|
|
||||||
|
var crossroads,
|
||||||
|
_hasOptionalGroupBug,
|
||||||
|
UNDEF;
|
||||||
|
|
||||||
|
// Helpers -----------
|
||||||
|
//====================
|
||||||
|
|
||||||
|
// IE 7-8 capture optional groups as empty strings while other browsers
|
||||||
|
// capture as `undefined`
|
||||||
|
_hasOptionalGroupBug = (/t(.+)?/).exec('t')[1] === '';
|
||||||
|
|
||||||
|
function arrayIndexOf(arr, val) {
|
||||||
|
if (arr.indexOf) {
|
||||||
|
return arr.indexOf(val);
|
||||||
|
} else {
|
||||||
|
//Array.indexOf doesn't work on IE 6-7
|
||||||
|
var n = arr.length;
|
||||||
|
while (n--) {
|
||||||
|
if (arr[n] === val) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function arrayRemove(arr, item) {
|
||||||
|
var i = arrayIndexOf(arr, item);
|
||||||
|
if (i !== -1) {
|
||||||
|
arr.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isKind(val, kind) {
|
||||||
|
return '[object '+ kind +']' === Object.prototype.toString.call(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isRegExp(val) {
|
||||||
|
return isKind(val, 'RegExp');
|
||||||
|
}
|
||||||
|
|
||||||
|
function isArray(val) {
|
||||||
|
return isKind(val, 'Array');
|
||||||
|
}
|
||||||
|
|
||||||
|
function isFunction(val) {
|
||||||
|
return typeof val === 'function';
|
||||||
|
}
|
||||||
|
|
||||||
|
//borrowed from AMD-utils
|
||||||
|
function typecastValue(val) {
|
||||||
|
var r;
|
||||||
|
if (val === null || val === 'null') {
|
||||||
|
r = null;
|
||||||
|
} else if (val === 'true') {
|
||||||
|
r = true;
|
||||||
|
} else if (val === 'false') {
|
||||||
|
r = false;
|
||||||
|
} else if (val === UNDEF || val === 'undefined') {
|
||||||
|
r = UNDEF;
|
||||||
|
} else if (val === '' || isNaN(val)) {
|
||||||
|
r = val;
|
||||||
|
} else {
|
||||||
|
r = parseFloat(val);
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function typecastArrayValues(values) {
|
||||||
|
var n = values.length,
|
||||||
|
result = [];
|
||||||
|
while (n--) {
|
||||||
|
result[n] = typecastValue(values[n]);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// borrowed from MOUT
|
||||||
|
function decodeQueryString(queryStr, shouldTypecast) {
|
||||||
|
var queryArr = (queryStr || '').replace('?', '').split('&'),
|
||||||
|
reg = /([^=]+)=(.+)/,
|
||||||
|
i = -1,
|
||||||
|
obj = {},
|
||||||
|
equalIndex, cur, pValue, pName;
|
||||||
|
|
||||||
|
while ((cur = queryArr[++i])) {
|
||||||
|
equalIndex = cur.indexOf('=');
|
||||||
|
pName = cur.substring(0, equalIndex);
|
||||||
|
pValue = decodeURIComponent(cur.substring(equalIndex + 1));
|
||||||
|
if (shouldTypecast !== false) {
|
||||||
|
pValue = typecastValue(pValue);
|
||||||
|
}
|
||||||
|
if (pName in obj){
|
||||||
|
if(isArray(obj[pName])){
|
||||||
|
obj[pName].push(pValue);
|
||||||
|
} else {
|
||||||
|
obj[pName] = [obj[pName], pValue];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
obj[pName] = pValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Crossroads --------
|
||||||
|
//====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
function Crossroads() {
|
||||||
|
this.bypassed = new signals.Signal();
|
||||||
|
this.routed = new signals.Signal();
|
||||||
|
this._routes = [];
|
||||||
|
this._prevRoutes = [];
|
||||||
|
this._piped = [];
|
||||||
|
this.resetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
Crossroads.prototype = {
|
||||||
|
|
||||||
|
greedy : false,
|
||||||
|
|
||||||
|
greedyEnabled : true,
|
||||||
|
|
||||||
|
ignoreCase : true,
|
||||||
|
|
||||||
|
ignoreState : false,
|
||||||
|
|
||||||
|
shouldTypecast : false,
|
||||||
|
|
||||||
|
normalizeFn : null,
|
||||||
|
|
||||||
|
resetState : function(){
|
||||||
|
this._prevRoutes.length = 0;
|
||||||
|
this._prevMatchedRequest = null;
|
||||||
|
this._prevBypassedRequest = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
create : function () {
|
||||||
|
return new Crossroads();
|
||||||
|
},
|
||||||
|
|
||||||
|
addRoute : function (pattern, callback, priority) {
|
||||||
|
var route = new Route(pattern, callback, priority, this);
|
||||||
|
this._sortedInsert(route);
|
||||||
|
return route;
|
||||||
|
},
|
||||||
|
|
||||||
|
removeRoute : function (route) {
|
||||||
|
arrayRemove(this._routes, route);
|
||||||
|
route._destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
removeAllRoutes : function () {
|
||||||
|
var n = this.getNumRoutes();
|
||||||
|
while (n--) {
|
||||||
|
this._routes[n]._destroy();
|
||||||
|
}
|
||||||
|
this._routes.length = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
parse : function (request, defaultArgs) {
|
||||||
|
request = request || '';
|
||||||
|
defaultArgs = defaultArgs || [];
|
||||||
|
|
||||||
|
// should only care about different requests if ignoreState isn't true
|
||||||
|
if ( !this.ignoreState &&
|
||||||
|
(request === this._prevMatchedRequest ||
|
||||||
|
request === this._prevBypassedRequest) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var routes = this._getMatchedRoutes(request),
|
||||||
|
i = 0,
|
||||||
|
n = routes.length,
|
||||||
|
cur;
|
||||||
|
|
||||||
|
if (n) {
|
||||||
|
this._prevMatchedRequest = request;
|
||||||
|
|
||||||
|
this._notifyPrevRoutes(routes, request);
|
||||||
|
this._prevRoutes = routes;
|
||||||
|
//should be incremental loop, execute routes in order
|
||||||
|
while (i < n) {
|
||||||
|
cur = routes[i];
|
||||||
|
cur.route.matched.dispatch.apply(cur.route.matched, defaultArgs.concat(cur.params));
|
||||||
|
cur.isFirst = !i;
|
||||||
|
this.routed.dispatch.apply(this.routed, defaultArgs.concat([request, cur]));
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this._prevBypassedRequest = request;
|
||||||
|
this.bypassed.dispatch.apply(this.bypassed, defaultArgs.concat([request]));
|
||||||
|
}
|
||||||
|
|
||||||
|
this._pipeParse(request, defaultArgs);
|
||||||
|
},
|
||||||
|
|
||||||
|
_notifyPrevRoutes : function(matchedRoutes, request) {
|
||||||
|
var i = 0, prev;
|
||||||
|
while (prev = this._prevRoutes[i++]) {
|
||||||
|
//check if switched exist since route may be disposed
|
||||||
|
if(prev.route.switched && this._didSwitch(prev.route, matchedRoutes)) {
|
||||||
|
prev.route.switched.dispatch(request);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_didSwitch : function (route, matchedRoutes){
|
||||||
|
var matched,
|
||||||
|
i = 0;
|
||||||
|
while (matched = matchedRoutes[i++]) {
|
||||||
|
// only dispatch switched if it is going to a different route
|
||||||
|
if (matched.route === route) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_pipeParse : function(request, defaultArgs) {
|
||||||
|
var i = 0, route;
|
||||||
|
while (route = this._piped[i++]) {
|
||||||
|
route.parse(request, defaultArgs);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getNumRoutes : function () {
|
||||||
|
return this._routes.length;
|
||||||
|
},
|
||||||
|
|
||||||
|
_sortedInsert : function (route) {
|
||||||
|
//simplified insertion sort
|
||||||
|
var routes = this._routes,
|
||||||
|
n = routes.length;
|
||||||
|
do { --n; } while (routes[n] && route._priority <= routes[n]._priority);
|
||||||
|
routes.splice(n+1, 0, route);
|
||||||
|
},
|
||||||
|
|
||||||
|
_getMatchedRoutes : function (request) {
|
||||||
|
var res = [],
|
||||||
|
routes = this._routes,
|
||||||
|
n = routes.length,
|
||||||
|
route;
|
||||||
|
//should be decrement loop since higher priorities are added at the end of array
|
||||||
|
while (route = routes[--n]) {
|
||||||
|
if ((!res.length || this.greedy || route.greedy) && route.match(request)) {
|
||||||
|
res.push({
|
||||||
|
route : route,
|
||||||
|
params : route._getParamsArray(request)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!this.greedyEnabled && res.length) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
},
|
||||||
|
|
||||||
|
pipe : function (otherRouter) {
|
||||||
|
this._piped.push(otherRouter);
|
||||||
|
},
|
||||||
|
|
||||||
|
unpipe : function (otherRouter) {
|
||||||
|
arrayRemove(this._piped, otherRouter);
|
||||||
|
},
|
||||||
|
|
||||||
|
toString : function () {
|
||||||
|
return '[crossroads numRoutes:'+ this.getNumRoutes() +']';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//"static" instance
|
||||||
|
crossroads = new Crossroads();
|
||||||
|
crossroads.VERSION = '0.12.2';
|
||||||
|
|
||||||
|
crossroads.NORM_AS_ARRAY = function (req, vals) {
|
||||||
|
return [vals.vals_];
|
||||||
|
};
|
||||||
|
|
||||||
|
crossroads.NORM_AS_OBJECT = function (req, vals) {
|
||||||
|
return [vals];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Route --------------
|
||||||
|
//=====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
function Route(pattern, callback, priority, router) {
|
||||||
|
var isRegexPattern = isRegExp(pattern),
|
||||||
|
patternLexer = router.patternLexer;
|
||||||
|
this._router = router;
|
||||||
|
this._pattern = pattern;
|
||||||
|
this._paramsIds = isRegexPattern? null : patternLexer.getParamIds(pattern);
|
||||||
|
this._optionalParamsIds = isRegexPattern? null : patternLexer.getOptionalParamsIds(pattern);
|
||||||
|
this._matchRegexp = isRegexPattern? pattern : patternLexer.compilePattern(pattern, router.ignoreCase);
|
||||||
|
this.matched = new signals.Signal();
|
||||||
|
this.switched = new signals.Signal();
|
||||||
|
if (callback) {
|
||||||
|
this.matched.add(callback);
|
||||||
|
}
|
||||||
|
this._priority = priority || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Route.prototype = {
|
||||||
|
|
||||||
|
greedy : false,
|
||||||
|
|
||||||
|
rules : void(0),
|
||||||
|
|
||||||
|
match : function (request) {
|
||||||
|
request = request || '';
|
||||||
|
return this._matchRegexp.test(request) && this._validateParams(request); //validate params even if regexp because of `request_` rule.
|
||||||
|
},
|
||||||
|
|
||||||
|
_validateParams : function (request) {
|
||||||
|
var rules = this.rules,
|
||||||
|
values = this._getParamsObject(request),
|
||||||
|
key;
|
||||||
|
for (key in rules) {
|
||||||
|
// normalize_ isn't a validation rule... (#39)
|
||||||
|
if(key !== 'normalize_' && rules.hasOwnProperty(key) && ! this._isValidParam(request, key, values)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_isValidParam : function (request, prop, values) {
|
||||||
|
var validationRule = this.rules[prop],
|
||||||
|
val = values[prop],
|
||||||
|
isValid = false,
|
||||||
|
isQuery = (prop.indexOf('?') === 0);
|
||||||
|
|
||||||
|
if (val == null && this._optionalParamsIds && arrayIndexOf(this._optionalParamsIds, prop) !== -1) {
|
||||||
|
isValid = true;
|
||||||
|
}
|
||||||
|
else if (isRegExp(validationRule)) {
|
||||||
|
if (isQuery) {
|
||||||
|
val = values[prop +'_']; //use raw string
|
||||||
|
}
|
||||||
|
isValid = validationRule.test(val);
|
||||||
|
}
|
||||||
|
else if (isArray(validationRule)) {
|
||||||
|
if (isQuery) {
|
||||||
|
val = values[prop +'_']; //use raw string
|
||||||
|
}
|
||||||
|
isValid = this._isValidArrayRule(validationRule, val);
|
||||||
|
}
|
||||||
|
else if (isFunction(validationRule)) {
|
||||||
|
isValid = validationRule(val, request, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
return isValid; //fail silently if validationRule is from an unsupported type
|
||||||
|
},
|
||||||
|
|
||||||
|
_isValidArrayRule : function (arr, val) {
|
||||||
|
if (! this._router.ignoreCase) {
|
||||||
|
return arrayIndexOf(arr, val) !== -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof val === 'string') {
|
||||||
|
val = val.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = arr.length,
|
||||||
|
item,
|
||||||
|
compareVal;
|
||||||
|
|
||||||
|
while (n--) {
|
||||||
|
item = arr[n];
|
||||||
|
compareVal = (typeof item === 'string')? item.toLowerCase() : item;
|
||||||
|
if (compareVal === val) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_getParamsObject : function (request) {
|
||||||
|
var shouldTypecast = this._router.shouldTypecast,
|
||||||
|
values = this._router.patternLexer.getParamValues(request, this._matchRegexp, shouldTypecast),
|
||||||
|
o = {},
|
||||||
|
n = values.length,
|
||||||
|
param, val;
|
||||||
|
while (n--) {
|
||||||
|
val = values[n];
|
||||||
|
if (this._paramsIds) {
|
||||||
|
param = this._paramsIds[n];
|
||||||
|
if (param.indexOf('?') === 0 && val) {
|
||||||
|
//make a copy of the original string so array and
|
||||||
|
//RegExp validation can be applied properly
|
||||||
|
o[param +'_'] = val;
|
||||||
|
//update vals_ array as well since it will be used
|
||||||
|
//during dispatch
|
||||||
|
val = decodeQueryString(val, shouldTypecast);
|
||||||
|
values[n] = val;
|
||||||
|
}
|
||||||
|
// IE will capture optional groups as empty strings while other
|
||||||
|
// browsers will capture `undefined` so normalize behavior.
|
||||||
|
// see: #gh-58, #gh-59, #gh-60
|
||||||
|
if ( _hasOptionalGroupBug && val === '' && arrayIndexOf(this._optionalParamsIds, param) !== -1 ) {
|
||||||
|
val = void(0);
|
||||||
|
values[n] = val;
|
||||||
|
}
|
||||||
|
o[param] = val;
|
||||||
|
}
|
||||||
|
//alias to paths and for RegExp pattern
|
||||||
|
o[n] = val;
|
||||||
|
}
|
||||||
|
o.request_ = shouldTypecast? typecastValue(request) : request;
|
||||||
|
o.vals_ = values;
|
||||||
|
return o;
|
||||||
|
},
|
||||||
|
|
||||||
|
_getParamsArray : function (request) {
|
||||||
|
var norm = this.rules? this.rules.normalize_ : null,
|
||||||
|
params;
|
||||||
|
norm = norm || this._router.normalizeFn; // default normalize
|
||||||
|
if (norm && isFunction(norm)) {
|
||||||
|
params = norm(request, this._getParamsObject(request));
|
||||||
|
} else {
|
||||||
|
params = this._getParamsObject(request).vals_;
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
},
|
||||||
|
|
||||||
|
interpolate : function(replacements) {
|
||||||
|
var str = this._router.patternLexer.interpolate(this._pattern, replacements);
|
||||||
|
if (! this._validateParams(str) ) {
|
||||||
|
throw new Error('Generated string doesn\'t validate against `Route.rules`.');
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
dispose : function () {
|
||||||
|
this._router.removeRoute(this);
|
||||||
|
},
|
||||||
|
|
||||||
|
_destroy : function () {
|
||||||
|
this.matched.dispose();
|
||||||
|
this.switched.dispose();
|
||||||
|
this.matched = this.switched = this._pattern = this._matchRegexp = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
toString : function () {
|
||||||
|
return '[Route pattern:"'+ this._pattern +'", numListeners:'+ this.matched.getNumListeners() +']';
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Pattern Lexer ------
|
||||||
|
//=====================
|
||||||
|
|
||||||
|
Crossroads.prototype.patternLexer = (function () {
|
||||||
|
|
||||||
|
var
|
||||||
|
//match chars that should be escaped on string regexp
|
||||||
|
ESCAPE_CHARS_REGEXP = /[\\.+*?\^$\[\](){}\/'#]/g,
|
||||||
|
|
||||||
|
//trailing slashes (begin/end of string)
|
||||||
|
LOOSE_SLASHES_REGEXP = /^\/|\/$/g,
|
||||||
|
LEGACY_SLASHES_REGEXP = /\/$/g,
|
||||||
|
|
||||||
|
//params - everything between `{ }` or `: :`
|
||||||
|
PARAMS_REGEXP = /(?:\{|:)([^}:]+)(?:\}|:)/g,
|
||||||
|
|
||||||
|
//used to save params during compile (avoid escaping things that
|
||||||
|
//shouldn't be escaped).
|
||||||
|
TOKENS = {
|
||||||
|
'OS' : {
|
||||||
|
//optional slashes
|
||||||
|
//slash between `::` or `}:` or `\w:` or `:{?` or `}{?` or `\w{?`
|
||||||
|
rgx : /([:}]|\w(?=\/))\/?(:|(?:\{\?))/g,
|
||||||
|
save : '$1{{id}}$2',
|
||||||
|
res : '\\/?'
|
||||||
|
},
|
||||||
|
'RS' : {
|
||||||
|
//required slashes
|
||||||
|
//used to insert slash between `:{` and `}{`
|
||||||
|
rgx : /([:}])\/?(\{)/g,
|
||||||
|
save : '$1{{id}}$2',
|
||||||
|
res : '\\/'
|
||||||
|
},
|
||||||
|
'RQ' : {
|
||||||
|
//required query string - everything in between `{? }`
|
||||||
|
rgx : /\{\?([^}]+)\}/g,
|
||||||
|
//everything from `?` till `#` or end of string
|
||||||
|
res : '\\?([^#]+)'
|
||||||
|
},
|
||||||
|
'OQ' : {
|
||||||
|
//optional query string - everything in between `:? :`
|
||||||
|
rgx : /:\?([^:]+):/g,
|
||||||
|
//everything from `?` till `#` or end of string
|
||||||
|
res : '(?:\\?([^#]*))?'
|
||||||
|
},
|
||||||
|
'OR' : {
|
||||||
|
//optional rest - everything in between `: *:`
|
||||||
|
rgx : /:([^:]+)\*:/g,
|
||||||
|
res : '(.*)?' // optional group to avoid passing empty string as captured
|
||||||
|
},
|
||||||
|
'RR' : {
|
||||||
|
//rest param - everything in between `{ *}`
|
||||||
|
rgx : /\{([^}]+)\*\}/g,
|
||||||
|
res : '(.+)'
|
||||||
|
},
|
||||||
|
// required/optional params should come after rest segments
|
||||||
|
'RP' : {
|
||||||
|
//required params - everything between `{ }`
|
||||||
|
rgx : /\{([^}]+)\}/g,
|
||||||
|
res : '([^\\/?]+)'
|
||||||
|
},
|
||||||
|
'OP' : {
|
||||||
|
//optional params - everything between `: :`
|
||||||
|
rgx : /:([^:]+):/g,
|
||||||
|
res : '([^\\/?]+)?\/?'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
LOOSE_SLASH = 1,
|
||||||
|
STRICT_SLASH = 2,
|
||||||
|
LEGACY_SLASH = 3,
|
||||||
|
|
||||||
|
_slashMode = LOOSE_SLASH;
|
||||||
|
|
||||||
|
|
||||||
|
function precompileTokens(){
|
||||||
|
var key, cur;
|
||||||
|
for (key in TOKENS) {
|
||||||
|
if (TOKENS.hasOwnProperty(key)) {
|
||||||
|
cur = TOKENS[key];
|
||||||
|
cur.id = '__CR_'+ key +'__';
|
||||||
|
cur.save = ('save' in cur)? cur.save.replace('{{id}}', cur.id) : cur.id;
|
||||||
|
cur.rRestore = new RegExp(cur.id, 'g');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
precompileTokens();
|
||||||
|
|
||||||
|
|
||||||
|
function captureVals(regex, pattern) {
|
||||||
|
var vals = [], match;
|
||||||
|
// very important to reset lastIndex since RegExp can have "g" flag
|
||||||
|
// and multiple runs might affect the result, specially if matching
|
||||||
|
// same string multiple times on IE 7-8
|
||||||
|
regex.lastIndex = 0;
|
||||||
|
while (match = regex.exec(pattern)) {
|
||||||
|
vals.push(match[1]);
|
||||||
|
}
|
||||||
|
return vals;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getParamIds(pattern) {
|
||||||
|
return captureVals(PARAMS_REGEXP, pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getOptionalParamsIds(pattern) {
|
||||||
|
return captureVals(TOKENS.OP.rgx, pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
function compilePattern(pattern, ignoreCase) {
|
||||||
|
pattern = pattern || '';
|
||||||
|
|
||||||
|
if(pattern){
|
||||||
|
if (_slashMode === LOOSE_SLASH) {
|
||||||
|
pattern = pattern.replace(LOOSE_SLASHES_REGEXP, '');
|
||||||
|
}
|
||||||
|
else if (_slashMode === LEGACY_SLASH) {
|
||||||
|
pattern = pattern.replace(LEGACY_SLASHES_REGEXP, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
//save tokens
|
||||||
|
pattern = replaceTokens(pattern, 'rgx', 'save');
|
||||||
|
//regexp escape
|
||||||
|
pattern = pattern.replace(ESCAPE_CHARS_REGEXP, '\\$&');
|
||||||
|
//restore tokens
|
||||||
|
pattern = replaceTokens(pattern, 'rRestore', 'res');
|
||||||
|
|
||||||
|
if (_slashMode === LOOSE_SLASH) {
|
||||||
|
pattern = '\\/?'+ pattern;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_slashMode !== STRICT_SLASH) {
|
||||||
|
//single slash is treated as empty and end slash is optional
|
||||||
|
pattern += '\\/?';
|
||||||
|
}
|
||||||
|
return new RegExp('^'+ pattern + '$', ignoreCase? 'i' : '');
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceTokens(pattern, regexpName, replaceName) {
|
||||||
|
var cur, key;
|
||||||
|
for (key in TOKENS) {
|
||||||
|
if (TOKENS.hasOwnProperty(key)) {
|
||||||
|
cur = TOKENS[key];
|
||||||
|
pattern = pattern.replace(cur[regexpName], cur[replaceName]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pattern;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getParamValues(request, regexp, shouldTypecast) {
|
||||||
|
var vals = regexp.exec(request);
|
||||||
|
if (vals) {
|
||||||
|
vals.shift();
|
||||||
|
if (shouldTypecast) {
|
||||||
|
vals = typecastArrayValues(vals);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vals;
|
||||||
|
}
|
||||||
|
|
||||||
|
function interpolate(pattern, replacements) {
|
||||||
|
// default to an empty object because pattern might have just
|
||||||
|
// optional arguments
|
||||||
|
replacements = replacements || {};
|
||||||
|
if (typeof pattern !== 'string') {
|
||||||
|
throw new Error('Route pattern should be a string.');
|
||||||
|
}
|
||||||
|
|
||||||
|
var replaceFn = function(match, prop){
|
||||||
|
var val;
|
||||||
|
prop = (prop.substr(0, 1) === '?')? prop.substr(1) : prop;
|
||||||
|
if (replacements[prop] != null) {
|
||||||
|
if (typeof replacements[prop] === 'object') {
|
||||||
|
var queryParts = [], rep;
|
||||||
|
for(var key in replacements[prop]) {
|
||||||
|
rep = replacements[prop][key];
|
||||||
|
if (isArray(rep)) {
|
||||||
|
for (var k in rep) {
|
||||||
|
if ( key.slice(-2) == '[]' ) {
|
||||||
|
queryParts.push(encodeURI(key.slice(0, -2)) + '[]=' + encodeURI(rep[k]));
|
||||||
|
} else {
|
||||||
|
queryParts.push(encodeURI(key + '=' + rep[k]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
queryParts.push(encodeURI(key + '=' + rep));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val = '?' + queryParts.join('&');
|
||||||
|
} else {
|
||||||
|
// make sure value is a string see #gh-54
|
||||||
|
val = String(replacements[prop]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (match.indexOf('*') === -1 && val.indexOf('/') !== -1) {
|
||||||
|
throw new Error('Invalid value "'+ val +'" for segment "'+ match +'".');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (match.indexOf('{') !== -1) {
|
||||||
|
throw new Error('The segment '+ match +' is required.');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
val = '';
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (! TOKENS.OS.trail) {
|
||||||
|
TOKENS.OS.trail = new RegExp('(?:'+ TOKENS.OS.id +')+$');
|
||||||
|
}
|
||||||
|
|
||||||
|
return pattern
|
||||||
|
.replace(TOKENS.OS.rgx, TOKENS.OS.save)
|
||||||
|
.replace(PARAMS_REGEXP, replaceFn)
|
||||||
|
.replace(TOKENS.OS.trail, '') // remove trailing
|
||||||
|
.replace(TOKENS.OS.rRestore, '/'); // add slash between segments
|
||||||
|
}
|
||||||
|
|
||||||
|
//API
|
||||||
|
return {
|
||||||
|
strict : function(){
|
||||||
|
_slashMode = STRICT_SLASH;
|
||||||
|
},
|
||||||
|
loose : function(){
|
||||||
|
_slashMode = LOOSE_SLASH;
|
||||||
|
},
|
||||||
|
legacy : function(){
|
||||||
|
_slashMode = LEGACY_SLASH;
|
||||||
|
},
|
||||||
|
getParamIds : getParamIds,
|
||||||
|
getOptionalParamsIds : getOptionalParamsIds,
|
||||||
|
getParamValues : getParamValues,
|
||||||
|
compilePattern : compilePattern,
|
||||||
|
interpolate : interpolate
|
||||||
|
};
|
||||||
|
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
return crossroads;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
define(['signals'], factory);
|
||||||
|
} else if (typeof module !== 'undefined' && module.exports) { //Node
|
||||||
|
module.exports = factory(require('signals'));
|
||||||
|
} else {
|
||||||
|
/*jshint sub:true */
|
||||||
|
window['crossroads'] = factory(window['signals']);
|
||||||
|
}
|
||||||
|
|
||||||
|
}());
|
||||||
|
|
1254
externals/dataTables.colReorder.js
vendored
Normal file
846
externals/dataTables.colResize.js
vendored
Normal file
@ -0,0 +1,846 @@
|
|||||||
|
/*! ColResize 0.0.10
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @summary ColResize
|
||||||
|
* @description Provide the ability to resize columns in a DataTable
|
||||||
|
* @version 0.0.10
|
||||||
|
* @file dataTables.colResize.js
|
||||||
|
* @author Silvacom Ltd.
|
||||||
|
*
|
||||||
|
* For details please refer to: http://www.datatables.net
|
||||||
|
*
|
||||||
|
* Special thank to everyone who has contributed to this plug in
|
||||||
|
* - dykstrad
|
||||||
|
* - tdillan (for 0.0.3 and 0.0.5 bug fixes)
|
||||||
|
* - kylealonius (for 0.0.8 bug fix)
|
||||||
|
* - the86freak (for 0.0.9 bug fix)
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (window, document, undefined) {
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* DataTables plug-in API functions test
|
||||||
|
*
|
||||||
|
* This are required by ColResize in order to perform the tasks required, and also keep this
|
||||||
|
* code portable, to be used for other column resize projects with DataTables, if needed.
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
var factory = function ($, DataTable) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plug-in for DataTables which will resize the columns depending on the handle clicked
|
||||||
|
* @method $.fn.dataTableExt.oApi.fnColResize
|
||||||
|
* @param object oSettings DataTables settings object - automatically added by DataTables!
|
||||||
|
* @param int iCol Take the column to be resized
|
||||||
|
* @returns void
|
||||||
|
*/
|
||||||
|
$.fn.dataTableExt.oApi.fnColResize = function (oSettings, iCol) {
|
||||||
|
var v110 = $.fn.dataTable.Api ? true : false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update DataTables' event handlers
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fire an event so other plug-ins can update */
|
||||||
|
$(oSettings.oInstance).trigger('column-resize', [ oSettings, {
|
||||||
|
"iCol": iCol
|
||||||
|
} ]);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ColResize provides column resize control for DataTables
|
||||||
|
* @class ColResize
|
||||||
|
* @constructor
|
||||||
|
* @param {object} dt DataTables settings object
|
||||||
|
* @param {object} opts ColResize options
|
||||||
|
*/
|
||||||
|
var ColResize = function (dt, opts) {
|
||||||
|
var oDTSettings;
|
||||||
|
|
||||||
|
if ($.fn.dataTable.Api) {
|
||||||
|
oDTSettings = new $.fn.dataTable.Api(dt).settings()[0];
|
||||||
|
}
|
||||||
|
// 1.9 compatibility
|
||||||
|
else if (dt.fnSettings) {
|
||||||
|
// DataTables object, convert to the settings object
|
||||||
|
oDTSettings = dt.fnSettings();
|
||||||
|
}
|
||||||
|
else if (typeof dt === 'string') {
|
||||||
|
// jQuery selector
|
||||||
|
if ($.fn.dataTable.fnIsDataTable($(dt)[0])) {
|
||||||
|
oDTSettings = $(dt).eq(0).dataTable().fnSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dt.nodeName && dt.nodeName.toLowerCase() === 'table') {
|
||||||
|
// Table node
|
||||||
|
if ($.fn.dataTable.fnIsDataTable(dt.nodeName)) {
|
||||||
|
oDTSettings = $(dt.nodeName).dataTable().fnSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dt instanceof jQuery) {
|
||||||
|
// jQuery object
|
||||||
|
if ($.fn.dataTable.fnIsDataTable(dt[0])) {
|
||||||
|
oDTSettings = dt.eq(0).dataTable().fnSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// DataTables settings object
|
||||||
|
oDTSettings = dt;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert from camelCase to Hungarian, just as DataTables does
|
||||||
|
if ($.fn.dataTable.camelToHungarian) {
|
||||||
|
$.fn.dataTable.camelToHungarian(ColResize.defaults, opts || {});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Public class variables
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @namespace Settings object which contains customizable information for ColResize instance
|
||||||
|
*/
|
||||||
|
this.s = {
|
||||||
|
/**
|
||||||
|
* DataTables settings object
|
||||||
|
* @property dt
|
||||||
|
* @type Object
|
||||||
|
* @default null
|
||||||
|
*/
|
||||||
|
"dt": null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialisation object used for this instance
|
||||||
|
* @property init
|
||||||
|
* @type object
|
||||||
|
* @default {}
|
||||||
|
*/
|
||||||
|
"init": $.extend(true, {}, ColResize.defaults, opts),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @namespace Information used for the mouse drag
|
||||||
|
*/
|
||||||
|
"mouse": {
|
||||||
|
"startX": -1,
|
||||||
|
"startY": -1,
|
||||||
|
"targetIndex": -1,
|
||||||
|
"targetColumn": -1,
|
||||||
|
"neighbourIndex": -1,
|
||||||
|
"neighbourColumn": -1
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Status variable keeping track of mouse down status
|
||||||
|
* @property isMousedown
|
||||||
|
* @type boolean
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
"isMousedown": false
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @namespace Common and useful DOM elements for the class instance
|
||||||
|
*/
|
||||||
|
this.dom = {
|
||||||
|
/**
|
||||||
|
* Resizing element (the one the mouse is resizing)
|
||||||
|
* @property resize
|
||||||
|
* @type element
|
||||||
|
* @default null
|
||||||
|
*/
|
||||||
|
"resizeCol": null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resizing element neighbour (the column next to the one the mouse is resizing)
|
||||||
|
* This is for fixed table resizing.
|
||||||
|
* @property resize
|
||||||
|
* @type element
|
||||||
|
* @default null
|
||||||
|
*/
|
||||||
|
"resizeColNeighbour": null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of events to be restored, used for overriding existing events from other plugins for a time.
|
||||||
|
* @property restoreEvents
|
||||||
|
* @type array
|
||||||
|
* @default []
|
||||||
|
*/
|
||||||
|
"restoreEvents": []
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Constructor logic */
|
||||||
|
this.s.dt = oDTSettings.oInstance.fnSettings();
|
||||||
|
this.s.dt._colResize = this;
|
||||||
|
this._fnConstruct();
|
||||||
|
|
||||||
|
/* Add destroy callback */
|
||||||
|
oDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', $.proxy(this._fnDestroy, this), 'ColResize');
|
||||||
|
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ColResize.prototype = {
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Public methods
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset the column widths to the original widths that was detected on
|
||||||
|
* start up.
|
||||||
|
* @return {this} Returns `this` for chaining.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* // DataTables initialisation with ColResize
|
||||||
|
* var table = $('#example').dataTable( {
|
||||||
|
* "sDom": 'Zlfrtip'
|
||||||
|
* } );
|
||||||
|
*
|
||||||
|
* // Add click event to a button to reset the ordering
|
||||||
|
* $('#resetOrdering').click( function (e) {
|
||||||
|
* e.preventDefault();
|
||||||
|
* $.fn.dataTable.ColResize( table ).fnReset();
|
||||||
|
* } );
|
||||||
|
*/
|
||||||
|
"fnReset": function () {
|
||||||
|
var a = [];
|
||||||
|
for (var i = 0, iLen = this.s.dt.aoColumns.length; i < iLen; i++) {
|
||||||
|
this.s.dt.aoColumns[i].width = this.s.dt.aoColumns[i]._ColResize_iOrigWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.s.dt.adjust().draw();
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Private methods (they are of course public in JS, but recommended as private)
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor logic
|
||||||
|
* @method _fnConstruct
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnConstruct": function () {
|
||||||
|
var that = this;
|
||||||
|
var iLen = that.s.dt.aoColumns.length;
|
||||||
|
var i;
|
||||||
|
|
||||||
|
that._fnSetupMouseListeners();
|
||||||
|
|
||||||
|
/* Add event handlers for the resize handles */
|
||||||
|
for (i = 0; i < iLen; i++) {
|
||||||
|
/* Mark the original column width for later reference */
|
||||||
|
this.s.dt.aoColumns[i]._ColResize_iOrigWidth = this.s.dt.aoColumns[i].width;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._fnSetColumnIndexes();
|
||||||
|
|
||||||
|
/* State saving */
|
||||||
|
this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {
|
||||||
|
that._fnStateSave.call(that, oData);
|
||||||
|
}, "ColResize_State" );
|
||||||
|
|
||||||
|
// State loading
|
||||||
|
this._fnStateLoad();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method _fnStateSave
|
||||||
|
* @param object oState DataTables state
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnStateSave": function (oState) {
|
||||||
|
this.s.dt.aoColumns.forEach(function(col, index) {
|
||||||
|
oState.columns[index].width = col.sWidthOrig;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If state has been loaded, apply the saved widths to the columns
|
||||||
|
* @method _fnStateLoad
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnStateLoad": function() {
|
||||||
|
var that = this,
|
||||||
|
loadedState = this.s.dt.oLoadedState;
|
||||||
|
if (loadedState && loadedState.columns) {
|
||||||
|
var colStates = loadedState.columns,
|
||||||
|
currCols = this.s.dt.aoColumns;
|
||||||
|
// Only apply the saved widths if the number of columns is the same.
|
||||||
|
// Otherwise, we don't know if we're applying the width to the correct column.
|
||||||
|
if (colStates.length > 0 && colStates.length === currCols.length) {
|
||||||
|
colStates.forEach(function(state, index) {
|
||||||
|
var col = that.s.dt.aoColumns[index];
|
||||||
|
if (state.width) {
|
||||||
|
col.sWidthOrig = col.sWidth = state.width;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove events of type from obj add it to restoreEvents array to be restored at a later time
|
||||||
|
* @param until string flag when to restore the event
|
||||||
|
* @param obj Object to remove events from
|
||||||
|
* @param type type of event to remove
|
||||||
|
* @param namespace namespace of the event being removed
|
||||||
|
*/
|
||||||
|
"_fnDelayEvents": function (until, obj, type, namespace) {
|
||||||
|
var that = this;
|
||||||
|
//Get the events for the object
|
||||||
|
var events = $._data($(obj).get(0), 'events');
|
||||||
|
$.each(events, function (i, o) {
|
||||||
|
//If the event type matches
|
||||||
|
if (i == type) {
|
||||||
|
//Loop through the possible many events with that type
|
||||||
|
$.each(o, function (k, v) {
|
||||||
|
//Somehow it is possible for the event to be undefined make sure it is defined first
|
||||||
|
if (v) {
|
||||||
|
if (namespace) {
|
||||||
|
//Add the event to the array of events to be restored later
|
||||||
|
that.dom.restoreEvents.push({"until": until, "obj": obj, "type": v.type, "namespace": v.namespace, "handler": v.handler});
|
||||||
|
//If the namespace matches
|
||||||
|
if (v.namespace == namespace) {
|
||||||
|
//Turn off/unbind the event
|
||||||
|
$(obj).off(type + "." + namespace);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//Add the event to the array of events to be restored later
|
||||||
|
that.dom.restoreEvents.push({"until": until, "obj": obj, "type": v.type, "namespace": null, "handler": v.handler});
|
||||||
|
//Turn off/unbind the event
|
||||||
|
$(obj).off(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loop through restoreEvents array and restore the events on the elements provided
|
||||||
|
*/
|
||||||
|
"_fnRestoreEvents": function (until) {
|
||||||
|
var that = this;
|
||||||
|
//Loop through the events to be restored
|
||||||
|
var i;
|
||||||
|
for (i = that.dom.restoreEvents.length; i--;) {
|
||||||
|
if (that.dom.restoreEvents[i].until == undefined || that.dom.restoreEvents[i].until == null || that.dom.restoreEvents[i].until == until) {
|
||||||
|
if (that.dom.restoreEvents[i].namespace) {
|
||||||
|
//Turn on the event for the object provided
|
||||||
|
$(that.dom.restoreEvents[i].obj).off(that.dom.restoreEvents[i].type + "." + that.dom.restoreEvents[i].namespace).on(that.dom.restoreEvents[i].type + "." + that.dom.restoreEvents[i].namespace, that.dom.restoreEvents[i].handler);
|
||||||
|
that.dom.restoreEvents.splice(i, 1);
|
||||||
|
} else {
|
||||||
|
//Turn on the event for the object provided
|
||||||
|
$(that.dom.restoreEvents[i].obj).off(that.dom.restoreEvents[i].type).on(that.dom.restoreEvents[i].type, that.dom.restoreEvents[i].handler);
|
||||||
|
that.dom.restoreEvents.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Mouse drop and drag
|
||||||
|
*/
|
||||||
|
|
||||||
|
"_fnSetupMouseListeners":function() {
|
||||||
|
var that = this;
|
||||||
|
$(that.s.dt.nTableWrapper).off("mouseenter.ColResize").on("mouseenter.ColResize","th",function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseEnter.call(that, e, this);
|
||||||
|
});
|
||||||
|
$(that.s.dt.nTableWrapper).off("mouseleave.ColResize").on("mouseleave.ColResize","th",function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseLeave.call(that, e, this);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add mouse listeners to the resize handle on TH element
|
||||||
|
* @method _fnMouseListener
|
||||||
|
* @param i Column index
|
||||||
|
* @param nTh TH resize handle element clicked on
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnMouseListener": function (i, nTh) {
|
||||||
|
var that = this;
|
||||||
|
$(nTh).off('mouseenter.ColResize').on('mouseenter.ColResize', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseEnter.call(that, e, nTh);
|
||||||
|
});
|
||||||
|
$(nTh).off('mouseleave.ColResize').on('mouseleave.ColResize', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseLeave.call(that, e, nTh);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param e Mouse event
|
||||||
|
* @param nTh TH element that the mouse is over
|
||||||
|
*/
|
||||||
|
"_fnMouseEnter": function (e, nTh) {
|
||||||
|
var that = this;
|
||||||
|
if(!that.s.isMousedown) {
|
||||||
|
//Once the mouse has entered the cell add mouse move event to see if the mouse is over resize handle
|
||||||
|
$(nTh).off('mousemove.ColResizeHandle').on('mousemove.ColResizeHandle', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnResizeHandleCheck.call(that, e, nTh);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear mouse events when the mouse has left the th
|
||||||
|
* @param e Mouse event
|
||||||
|
* @param nTh TH element that the mouse has just left
|
||||||
|
*/
|
||||||
|
"_fnMouseLeave": function (e, nTh) {
|
||||||
|
//Once the mouse has left the TH make suure to remove the mouse move listener
|
||||||
|
$(nTh).off('mousemove.ColResizeHandle');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mouse down on a TH element in the table header
|
||||||
|
* @method _fnMouseDown
|
||||||
|
* @param event e Mouse event
|
||||||
|
* @param element nTh TH element to be resized
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnMouseDown": function (e, nTh) {
|
||||||
|
var that = this;
|
||||||
|
|
||||||
|
that.s.isMousedown = true;
|
||||||
|
|
||||||
|
/* Store information about the mouse position */
|
||||||
|
var target = $(e.target).closest('th, td');
|
||||||
|
var offset = target.offset();
|
||||||
|
|
||||||
|
/* Store information about the mouse position for resize calculations in mouse move function */
|
||||||
|
this.s.mouse.startX = e.pageX;
|
||||||
|
this.s.mouse.startY = e.pageY;
|
||||||
|
|
||||||
|
//Store the indexes of the columns the mouse is down on
|
||||||
|
var idx = that.dom.resizeCol[0].cellIndex;
|
||||||
|
|
||||||
|
// the last column has no 'right-side' neighbour
|
||||||
|
// with fixed this can make the table smaller
|
||||||
|
if (that.dom.resizeColNeighbour[0] === undefined){
|
||||||
|
var idxNeighbour = 0;
|
||||||
|
} else {
|
||||||
|
var idxNeighbour = that.dom.resizeColNeighbour[0].cellIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (idx === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.s.mouse.targetIndex = idx;
|
||||||
|
this.s.mouse.targetColumn = this.s.dt.aoColumns[ idx ];
|
||||||
|
|
||||||
|
this.s.mouse.neighbourIndex = idxNeighbour;
|
||||||
|
this.s.mouse.neighbourColumn = this.s.dt.aoColumns[ idxNeighbour ];
|
||||||
|
|
||||||
|
/* Add event handlers to the document */
|
||||||
|
$(document)
|
||||||
|
.off('mousemove.ColResize').on('mousemove.ColResize', function (e) {
|
||||||
|
that._fnMouseMove.call(that, e);
|
||||||
|
})
|
||||||
|
.off('mouseup.ColResize').on('mouseup.ColResize', function (e) {
|
||||||
|
that._fnMouseUp.call(that, e);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deal with a mouse move event while dragging to resize a column
|
||||||
|
* @method _fnMouseMove
|
||||||
|
* @param e Mouse event
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnMouseMove": function (e) {
|
||||||
|
var that = this;
|
||||||
|
|
||||||
|
var offset = $(that.s.mouse.targetColumn.nTh).offset();
|
||||||
|
var relativeX = (e.pageX - offset.left);
|
||||||
|
var distFromLeft = relativeX;
|
||||||
|
var distFromRight = $(that.s.mouse.targetColumn.nTh).outerWidth() - relativeX - 1;
|
||||||
|
|
||||||
|
//Change in mouse x position
|
||||||
|
var dx = e.pageX - that.s.mouse.startX;
|
||||||
|
//Get the minimum width of the column (default minimum 10px)
|
||||||
|
var minColumnWidth = Math.max(parseInt($(that.s.mouse.targetColumn.nTh).css('min-width')), 10);
|
||||||
|
//Store the previous width of the column
|
||||||
|
var prevWidth = $(that.s.mouse.targetColumn.nTh).width();
|
||||||
|
//As long as the cursor is past the handle, resize the columns
|
||||||
|
if ((dx > 0 && distFromRight <= 0) || (dx < 0 && distFromRight >= 0)) {
|
||||||
|
if (!that.s.init.tableWidthFixed) {
|
||||||
|
//As long as the width is larger than the minimum
|
||||||
|
var newColWidth = Math.max(minColumnWidth, prevWidth + dx);
|
||||||
|
//Get the width difference (take into account the columns minimum width)
|
||||||
|
var widthDiff = newColWidth - prevWidth;
|
||||||
|
var colResizeIdx = parseInt(that.dom.resizeCol.attr("data-column-index"));
|
||||||
|
//Set datatable column widths
|
||||||
|
that.s.mouse.targetColumn.sWidthOrig = that.s.mouse.targetColumn.sWidth = that.s.mouse.targetColumn.width = newColWidth + "px";
|
||||||
|
var domCols = $(that.s.dt.nTableWrapper).find("th[data-column-index='"+colResizeIdx+"']");
|
||||||
|
//For each table expand the width by the same amount as the column
|
||||||
|
//This accounts for other datatable plugins like FixedColumns
|
||||||
|
domCols.parents("table").each(function() {
|
||||||
|
if(!$(this).parent().hasClass("DTFC_LeftBodyLiner")) {
|
||||||
|
var newWidth = $(this).width() + widthDiff;
|
||||||
|
$(this).width(newWidth);
|
||||||
|
} else {
|
||||||
|
var newWidth =$(that.s.dt.nTableWrapper).find(".DTFC_LeftHeadWrapper").children("table").width();
|
||||||
|
$(this).parents(".DTFC_LeftWrapper").width(newWidth);
|
||||||
|
$(this).parent().width(newWidth+15);
|
||||||
|
$(this).width(newWidth);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//Apply the new width to the columns after the table has been resized
|
||||||
|
domCols.width(that.s.mouse.targetColumn.width);
|
||||||
|
} else {
|
||||||
|
//A neighbour column must exist in order to resize a column in a table with a fixed width
|
||||||
|
if (that.s.mouse.neighbourColumn) {
|
||||||
|
//Get the minimum width of the neighbor column (default minimum 10px)
|
||||||
|
var minColumnNeighbourWidth = Math.max(parseInt($(that.s.mouse.neighbourColumn.nTh).css('min-width')), 10);
|
||||||
|
//Store the previous width of the neighbour column
|
||||||
|
var prevNeighbourWidth = $(that.s.mouse.neighbourColumn.nTh).width();
|
||||||
|
//As long as the width is larger than the minimum
|
||||||
|
var newColWidth = Math.max(minColumnWidth, prevWidth + dx);
|
||||||
|
var newColNeighbourWidth = Math.max(minColumnNeighbourWidth, prevNeighbourWidth - dx);
|
||||||
|
//Get the width difference (take into account the columns minimum width)
|
||||||
|
var widthDiff = newColWidth - prevWidth;
|
||||||
|
var widthDiffNeighbour = newColNeighbourWidth - prevNeighbourWidth;
|
||||||
|
//Get the column index for the column being changed
|
||||||
|
var colResizeIdx = parseInt(that.dom.resizeCol.attr("data-column-index"));
|
||||||
|
var neighbourColResizeIdx = parseInt(that.dom.resizeColNeighbour.attr("data-column-index"));
|
||||||
|
//Set datatable column widths
|
||||||
|
that.s.mouse.neighbourColumn.sWidthOrig = that.s.mouse.neighbourColumn.sWidth = that.s.mouse.neighbourColumn.width = newColNeighbourWidth + "px";
|
||||||
|
that.s.mouse.targetColumn.sWidthOrig = that.s.mouse.targetColumn.sWidth = that.s.mouse.targetColumn.width = newColWidth + "px";
|
||||||
|
//Get list of columns based on column index in all affected tables tables. This accounts for other plugins like FixedColumns
|
||||||
|
var domNeighbourCols = $(that.s.dt.nTableWrapper).find("th[data-column-index='" + neighbourColResizeIdx + "']");
|
||||||
|
var domCols = $(that.s.dt.nTableWrapper).find("th[data-column-index='" + colResizeIdx + "']");
|
||||||
|
//If dx if positive (the width is getting larger) shrink the neighbour columns first
|
||||||
|
if(dx>0) {
|
||||||
|
domNeighbourCols.width(that.s.mouse.neighbourColumn.width);
|
||||||
|
domCols.width(that.s.mouse.targetColumn.width);
|
||||||
|
} else {
|
||||||
|
//Apply the new width to the columns then to the neighbour columns
|
||||||
|
domCols.width(that.s.mouse.targetColumn.width);
|
||||||
|
domNeighbourCols.width(that.s.mouse.neighbourColumn.width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
that.s.mouse.startX = e.pageX;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check to see if the mouse is over the resize handle area
|
||||||
|
* @param e
|
||||||
|
* @param nTh
|
||||||
|
*/
|
||||||
|
"_fnResizeHandleCheck": function (e, nTh) {
|
||||||
|
var that = this;
|
||||||
|
|
||||||
|
var offset = $(nTh).offset();
|
||||||
|
var relativeX = (e.pageX - offset.left);
|
||||||
|
var relativeY = (e.pageY - offset.top);
|
||||||
|
var distFromLeft = relativeX;
|
||||||
|
var distFromRight = $(nTh).outerWidth() - relativeX - 1;
|
||||||
|
|
||||||
|
var handleBuffer = this.s.init.handleWidth / 2;
|
||||||
|
var leftHandleOn = distFromLeft < handleBuffer;
|
||||||
|
var rightHandleOn = distFromRight < handleBuffer;
|
||||||
|
|
||||||
|
//If this is the first table cell
|
||||||
|
if ($(nTh).prev("th").length == 0) {
|
||||||
|
if(this.s.init.rtl)
|
||||||
|
rightHandleOn = false;
|
||||||
|
else
|
||||||
|
leftHandleOn = false;
|
||||||
|
}
|
||||||
|
//If this is the last cell and the table is fixed width don't let them expand the last cell directly
|
||||||
|
if ($(nTh).next("th").length == 0 && this.s.init.tableWidthFixed) {
|
||||||
|
if(this.s.init.rtl)
|
||||||
|
leftHandleOn = false;
|
||||||
|
else
|
||||||
|
rightHandleOn = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var resizeAvailable = leftHandleOn||rightHandleOn;
|
||||||
|
|
||||||
|
//If table is in right to left mode flip which TH is being resized
|
||||||
|
if (that.s.init.rtl) {
|
||||||
|
//Handle is to the left
|
||||||
|
if (leftHandleOn) {
|
||||||
|
that.dom.resizeCol = $(nTh);
|
||||||
|
that.dom.resizeColNeighbour = $(nTh).next();
|
||||||
|
} else if (rightHandleOn) {
|
||||||
|
that.dom.resizeCol = $(nTh).prev();
|
||||||
|
that.dom.resizeColNeighbour = $(nTh);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//Handle is to the right
|
||||||
|
if (rightHandleOn) {
|
||||||
|
that.dom.resizeCol = $(nTh);
|
||||||
|
that.dom.resizeColNeighbour = $(nTh).next();
|
||||||
|
} else if (leftHandleOn) {
|
||||||
|
that.dom.resizeCol = $(nTh).prev();
|
||||||
|
that.dom.resizeColNeighbour = $(nTh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//If table width is fixed make sure both columns are resizable else just check the one.
|
||||||
|
if(this.s.init.tableWidthFixed)
|
||||||
|
resizeAvailable &= this.s.init.exclude.indexOf(parseInt($(that.dom.resizeCol).attr("data-column-index"))) == -1 && this.s.init.exclude.indexOf(parseInt($(that.dom.resizeColNeighbour).attr("data-column-index"))) == -1;
|
||||||
|
else
|
||||||
|
resizeAvailable &= this.s.init.exclude.indexOf(parseInt($(that.dom.resizeCol).attr("data-column-index"))) == -1;
|
||||||
|
|
||||||
|
$(nTh).off('mousedown.ColResize');
|
||||||
|
if (resizeAvailable) {
|
||||||
|
$(nTh).css("cursor", "ew-resize");
|
||||||
|
|
||||||
|
//Delay other mousedown events from the Reorder plugin
|
||||||
|
that._fnDelayEvents(null, nTh, "mousedown", "ColReorder");
|
||||||
|
that._fnDelayEvents("click", nTh, "click", "DT");
|
||||||
|
|
||||||
|
$(nTh).off('mousedown.ColResize').on('mousedown.ColResize', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseDown.call(that, e, nTh);
|
||||||
|
})
|
||||||
|
.off('click.ColResize').on('click.ColResize', function (e) {
|
||||||
|
that._fnClick.call(that, e);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$(nTh).css("cursor", "pointer");
|
||||||
|
$(nTh).off('mousedown.ColResize click.ColResize');
|
||||||
|
//Restore any events that were removed
|
||||||
|
that._fnRestoreEvents();
|
||||||
|
//This is to restore column sorting on click functionality
|
||||||
|
if (!that.s.isMousedown)
|
||||||
|
//Restore click event if mouse is not down
|
||||||
|
this._fnRestoreEvents("click");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"_fnClick": function (e) {
|
||||||
|
var that = this;
|
||||||
|
that.s.isMousedown = false;
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finish off the mouse drag
|
||||||
|
* @method _fnMouseUp
|
||||||
|
* @param e Mouse event
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnMouseUp": function (e) {
|
||||||
|
var that = this;
|
||||||
|
that.s.isMousedown = false;
|
||||||
|
|
||||||
|
//Fix width of column to be the size the dom is limited to (for when user sets min-width on a column)
|
||||||
|
that.s.mouse.targetColumn.width = that.dom.resizeCol.width();
|
||||||
|
|
||||||
|
$(document).off('mousemove.ColResize mouseup.ColResize');
|
||||||
|
this.s.dt.oInstance.fnAdjustColumnSizing();
|
||||||
|
//Table width fix, prevents extra gaps between tables
|
||||||
|
var LeftWrapper = $(that.s.dt.nTableWrapper).find(".DTFC_LeftWrapper");
|
||||||
|
var DTFC_LeftWidth = LeftWrapper.width();
|
||||||
|
LeftWrapper.children(".DTFC_LeftHeadWrapper").children("table").width(DTFC_LeftWidth);
|
||||||
|
|
||||||
|
if (that.s.init.resizeCallback) {
|
||||||
|
that.s.init.resizeCallback.call(that, that.s.mouse.targetColumn);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean up ColResize memory references and event handlers
|
||||||
|
* @method _fnDestroy
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnDestroy": function () {
|
||||||
|
var i, iLen;
|
||||||
|
|
||||||
|
for (i = 0, iLen = this.s.dt.aoDrawCallback.length; i < iLen; i++) {
|
||||||
|
if (this.s.dt.aoDrawCallback[i].sName === 'ColResize_Pre') {
|
||||||
|
this.s.dt.aoDrawCallback.splice(i, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this.s.dt.nTHead).find('*').off('.ColResize');
|
||||||
|
|
||||||
|
$.each(this.s.dt.aoColumns, function (i, column) {
|
||||||
|
$(column.nTh).removeAttr('data-column-index');
|
||||||
|
});
|
||||||
|
|
||||||
|
this.s.dt._colResize = null;
|
||||||
|
this.s = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a data attribute to the column headers, so we know the index of
|
||||||
|
* the row to be reordered. This allows fast detection of the index, and
|
||||||
|
* for this plug-in to work with FixedHeader which clones the nodes.
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnSetColumnIndexes": function () {
|
||||||
|
$.each(this.s.dt.aoColumns, function (i, column) {
|
||||||
|
$(column.nTh).attr('data-column-index', i);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Static parameters
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ColResize default settings for initialisation
|
||||||
|
* @namespace
|
||||||
|
* @static
|
||||||
|
*/
|
||||||
|
ColResize.defaults = {
|
||||||
|
/**
|
||||||
|
* Callback function that is fired when columns are resized
|
||||||
|
* @type function():void
|
||||||
|
* @default null
|
||||||
|
* @static
|
||||||
|
*/
|
||||||
|
"resizeCallback": null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude array for columns that are not resizable
|
||||||
|
* @property exclude
|
||||||
|
* @type array of indexes that are excluded from resizing
|
||||||
|
* @default []
|
||||||
|
*/
|
||||||
|
"exclude": [],
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check to see if user is using a fixed table width or dynamic
|
||||||
|
* if true:
|
||||||
|
* -Columns will resize themselves and their neighbour
|
||||||
|
* -If neighbour is excluded resize will not occur
|
||||||
|
* if false:
|
||||||
|
* -Columns will resize themselves and increase or decrease the width of the table accordingly
|
||||||
|
*/
|
||||||
|
"tableWidthFixed": true,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Width of the resize handle in pixels
|
||||||
|
* @property handleWidth
|
||||||
|
* @type int (pixels)
|
||||||
|
* @default 10
|
||||||
|
*/
|
||||||
|
"handleWidth": 10,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Right to left support, when true flips which column they are resizing on mouse down
|
||||||
|
* @property rtl
|
||||||
|
* @type bool
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
"rtl": false
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Constants
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ColResize version
|
||||||
|
* @constant version
|
||||||
|
* @type String
|
||||||
|
* @default As code
|
||||||
|
*/
|
||||||
|
ColResize.version = "0.0.10";
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* DataTables interfaces
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
// Expose
|
||||||
|
$.fn.dataTable.ColResize = ColResize;
|
||||||
|
$.fn.DataTable.ColResize = ColResize;
|
||||||
|
|
||||||
|
|
||||||
|
// Register a new feature with DataTables
|
||||||
|
if (typeof $.fn.dataTable == "function" &&
|
||||||
|
typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
|
||||||
|
$.fn.dataTableExt.fnVersionCheck('1.9.3')) {
|
||||||
|
$.fn.dataTableExt.aoFeatures.push({
|
||||||
|
"fnInit": function (settings) {
|
||||||
|
var table = settings.oInstance;
|
||||||
|
|
||||||
|
if (!settings._colResize) {
|
||||||
|
var dtInit = settings.oInit;
|
||||||
|
var opts = dtInit.colResize || dtInit.oColResize || {};
|
||||||
|
|
||||||
|
new ColResize(settings, opts);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
table.oApi._fnLog(settings, 1, "ColResize attempted to initialise twice. Ignoring second");
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
/* No node for DataTables to insert */
|
||||||
|
},
|
||||||
|
"cFeature": "Z",
|
||||||
|
"sFeature": "ColResize"
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alert("Warning: ColResize requires DataTables 1.9.3 or greater - www.datatables.net/download");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// API augmentation
|
||||||
|
if ($.fn.dataTable.Api) {
|
||||||
|
$.fn.dataTable.Api.register('colResize.reset()', function () {
|
||||||
|
return this.iterator('table', function (ctx) {
|
||||||
|
ctx._colResize.fnReset();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return ColResize;
|
||||||
|
}; // /factory
|
||||||
|
|
||||||
|
|
||||||
|
// Define as an AMD module if possible
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
define( ['jquery', 'datatables'], factory );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// Node/CommonJS
|
||||||
|
factory( require('jquery'), require('datatables') );
|
||||||
|
}
|
||||||
|
else if (jQuery && !jQuery.fn.dataTable.ColResize) {
|
||||||
|
// Otherwise simply initialise as normal, stopping multiple evaluation
|
||||||
|
factory(jQuery, jQuery.fn.dataTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
})(window, document);
|
15321
externals/datatables.js
vendored
Normal file
BIN
externals/images/cut.png
vendored
Normal file
After Width: | Height: | Size: 648 B |
BIN
externals/images/door.png
vendored
Normal file
After Width: | Height: | Size: 412 B |
BIN
externals/images/page_white_add.png
vendored
Normal file
After Width: | Height: | Size: 442 B |
BIN
externals/images/page_white_copy.png
vendored
Normal file
After Width: | Height: | Size: 309 B |
BIN
externals/images/page_white_delete.png
vendored
Normal file
After Width: | Height: | Size: 536 B |
BIN
externals/images/page_white_edit.png
vendored
Normal file
After Width: | Height: | Size: 618 B |
BIN
externals/images/page_white_paste.png
vendored
Normal file
After Width: | Height: | Size: 620 B |
BIN
externals/images/sort_both.png
vendored
Normal file
After Width: | Height: | Size: 201 B |
BIN
externals/images/ui-bg_flat_0_aaaaaa_40x100.png
vendored
Normal file
After Width: | Height: | Size: 86 B |
BIN
externals/images/ui-icons_444444_256x240.png
vendored
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_555555_256x240.png
vendored
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_777620_256x240.png
vendored
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_777777_256x240.png
vendored
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_cc0000_256x240.png
vendored
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_ffffff_256x240.png
vendored
Normal file
After Width: | Height: | Size: 3.7 KiB |
7
externals/jquery-ui.min.css
vendored
Normal file
13
externals/jquery-ui.min.js
vendored
Normal file
5
externals/jquery-ui.structure.min.css
vendored
Normal file
5
externals/jquery-ui.theme.min.css
vendored
Normal file
177
externals/jquery.contextMenu.css
vendored
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery contextMenu - Plugin for simple contextMenu handling
|
||||||
|
*
|
||||||
|
* Version: 1.6.6
|
||||||
|
*
|
||||||
|
* Authors: Rodney Rehm, Addy Osmani (patches for FF)
|
||||||
|
* Web: http://medialize.github.com/jQuery-contextMenu/
|
||||||
|
*
|
||||||
|
* Licensed under
|
||||||
|
* MIT License http://www.opensource.org/licenses/mit-license
|
||||||
|
* GPL v3 http://opensource.org/licenses/GPL-3.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
.context-menu-list {
|
||||||
|
z-index: 1001;
|
||||||
|
position: fixed;
|
||||||
|
background: white;
|
||||||
|
border: solid 1px gainsboro;
|
||||||
|
box-shadow: 4px 4px 4px -2px #888888;
|
||||||
|
padding: 8px 0px 8px 0px;
|
||||||
|
line-height: 25px;
|
||||||
|
width: 254px;
|
||||||
|
list-style: none;
|
||||||
|
margin-left: -10px;
|
||||||
|
outline: 0px #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item {
|
||||||
|
padding: 2px 2px 2px 31px;
|
||||||
|
background-color: #fff;
|
||||||
|
position: relative;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: -moz-none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-separator {
|
||||||
|
padding-bottom: 0;
|
||||||
|
border-bottom: 1px solid #DDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item>label>input,
|
||||||
|
.context-menu-item>label>textarea {
|
||||||
|
-webkit-user-select: text;
|
||||||
|
-moz-user-select: text;
|
||||||
|
-ms-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
margin-left: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.disabled {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input.hover,
|
||||||
|
.context-menu-item.disabled.hover {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #EEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-submenu:after {
|
||||||
|
content: ">";
|
||||||
|
color: #666;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 3px;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* icons
|
||||||
|
#protip:
|
||||||
|
In case you want to use sprites for icons (which I would suggest you do) have a look at
|
||||||
|
http://css-tricks.com/13224-pseudo-spriting/ to get an idea of how to implement
|
||||||
|
.context-menu-item.icon:before {}
|
||||||
|
*/
|
||||||
|
|
||||||
|
.context-menu-item.icon {
|
||||||
|
min-height: 18px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 10px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon:hover {
|
||||||
|
min-height: 18px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 10px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*.context-menu-item.icon-edit {
|
||||||
|
background-image: url(images/page_white_edit.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-cut {
|
||||||
|
background-image: url(images/cut.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-copy {
|
||||||
|
background-image: url(images/page_white_copy.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-paste {
|
||||||
|
background-image: url(images/page_white_paste.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-delete {
|
||||||
|
background-image: url(images/page_white_delete.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-add {
|
||||||
|
background-image: url(images/page_white_add.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-quit {
|
||||||
|
background-image: url(images/door.png);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
/* vertically align inside labels */
|
||||||
|
|
||||||
|
.context-menu-input>label>* {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* position checkboxes and radios as icons */
|
||||||
|
|
||||||
|
.context-menu-input>label>input[type="checkbox"],
|
||||||
|
.context-menu-input>label>input[type="radio"] {
|
||||||
|
margin-left: -17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input>label>span {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input>label,
|
||||||
|
.context-menu-input>label>input[type="text"],
|
||||||
|
.context-menu-input>label>textarea,
|
||||||
|
.context-menu-input>label>select {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-ms-box-sizing: border-box;
|
||||||
|
-o-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input>label>textarea {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item>.context-menu-list {
|
||||||
|
display: none;
|
||||||
|
/* re-positioned by js */
|
||||||
|
right: -5px;
|
||||||
|
top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*.context-menu-item.hover>.context-menu-list {
|
||||||
|
display: block;
|
||||||
|
padding-left: 5px;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
.context-menu-accesskey {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
1686
externals/jquery.contextMenu.js
vendored
Normal file
1
externals/jquery.dataTables.min.css
vendored
Normal file
163
externals/jquery.dataTables.min.js
vendored
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
/*!
|
||||||
|
DataTables 1.10.9
|
||||||
|
©2008-2015 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(Fa,T,k){var S=function(h){function X(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),d[c]=e,"o"===b[1]&&X(a[e])});a._hungarianMap=d}function I(a,b,c){a._hungarianMap||X(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),I(a[d],b[d],c)):b[d]=b[e]})}function S(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;
|
||||||
|
!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");
|
||||||
|
A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&I(m.models.oSearch,a[b])}function eb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function fb(a){if(!m.__browser){var b={};m.__browser=b;var c=
|
||||||
|
h("<div/>").css({position:"fixed",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,
|
||||||
|
m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function gb(a,b,c,d,e,f){var g,i=!1;c!==k&&(g=c,i=!0);for(;d!==e;)a.hasOwnProperty(d)&&(g=i?b(g,a[d],d,a):a[d],i=!0,d+=f);return g}function Ga(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:T.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);
|
||||||
|
la(a,d,h(b).data())}function la(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(eb(c),I(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));
|
||||||
|
var g=b.mData,i=P(g),j=b.mRender?P(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var d=i(a,b,k,c);return j&&b?j(d,b,a,c):d};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?
|
||||||
|
(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Z(a);w(a,null,"column-sizing",[a])}function $(a,b){var c=
|
||||||
|
aa(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function ba(a,b){var c=aa(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function ca(a){return aa(a,"bVisible").length}function aa(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ia(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,i,j,h,l,r,q;e=0;for(f=b.length;e<f;e++)if(l=b[e],q=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(i=d.length;g<i;g++){j=0;for(h=c.length;j<
|
||||||
|
h;j++){q[j]===k&&(q[j]=B(a,j,e,"type"));r=d[g](q[j],a);if(!r&&g!==d.length-1)break;if("html"===r)break}if(r){l.sType=r;break}}l.sType||(l.sType="string")}}function hb(a,b,c,d){var e,f,g,i,j,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var r=n.targets!==k?n.targets:n.aTargets;h.isArray(r)||(r=[r]);f=0;for(g=r.length;f<g;f++)if("number"===typeof r[f]&&0<=r[f]){for(;l.length<=r[f];)Ga(a);d(r[f],n)}else if("number"===typeof r[f]&&0>r[f])d(l.length+r[f],n);else if("string"===typeof r[f]){i=0;
|
||||||
|
for(j=l.length;i<j;i++)("_all"==r[f]||h(l[i].nTh).hasClass(r[f]))&&d(i,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function L(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,i=0,j=g.length;i<j;i++)g[i].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ja(a,e,c,d);return e}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=
|
||||||
|
Ka(a,e);return L(a,c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,i=f.sDefaultContent,c=f.fnGetData(g,d,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!=e&&null===i&&(J(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=e),i;if((c===g||null===c)&&null!==i)c=i;else if("function"===typeof c)return c.call(g);return null===c&&"display"==d?"":c}function ib(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,
|
||||||
|
d,{settings:a,row:b,col:c})}function La(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\./g,".")})}function P(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=P(c))});return function(a,c,f,g){var i=b[c]||b._;return i!==k?i(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,
|
||||||
|
f){var g,i;if(""!==f){i=La(f);for(var j=0,n=i.length;j<n;j++){f=i[j].match(da);g=i[j].match(U);if(f){i[j]=i[j].replace(da,"");""!==i[j]&&(a=a[i[j]]);g=[];i.splice(0,j+1);i=i.join(".");if(h.isArray(a)){j=0;for(n=a.length;j<n;j++)g.push(c(a[j],b,i))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){i[j]=i[j].replace(U,"");a=a[i[j]]();continue}if(null===a||a[i[j]]===k)return k;a=a[i[j]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function Q(a){if(h.isPlainObject(a))return Q(a._);
|
||||||
|
if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=La(e),f;f=e[e.length-1];for(var g,i,j=0,n=e.length-1;j<n;j++){g=e[j].match(da);i=e[j].match(U);if(g){e[j]=e[j].replace(da,"");a[e[j]]=[];f=e.slice();f.splice(0,j+1);g=f.join(".");if(h.isArray(d)){i=0;for(n=d.length;i<n;i++)f={},b(f,d[i],g),a[e[j]].push(f)}else a[e[j]]=d;return}i&&(e[j]=e[j].replace(U,
|
||||||
|
""),a=a[e[j]](d));if(null===a[e[j]]||a[e[j]]===k)a[e[j]]={};a=a[e[j]]}if(f.match(U))a[f.replace(U,"")](d);else a[f.replace(da,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ma(a){return D(a.aoData,"_aData")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function oa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);
|
||||||
|
c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ka(a,e,d,d===k?k:e._aData).data;else{var i=e.anCells;if(i)if(d!==k)g(i[d],d);else{c=0;for(f=i.length;c<f;c++)g(i[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Na(a,e)}}function Ka(a,b,c,d){var e=[],f=b.firstChild,g,i,j=0,n,l=a.aoColumns,r=a._rowReadObject,d=d!==k?d:r?{}:[],q=function(a,b){if("string"===typeof a){var c=a.indexOf("@");
|
||||||
|
-1!==c&&(c=a.substring(c+1),Q(a)(d,b.getAttribute(c)))}},jb=function(a){if(c===k||c===j)i=l[j],n=h.trim(a.innerHTML),i&&i._bAttrSrc?(Q(i.mData._)(d,n),q(i.mData.sort,a),q(i.mData.type,a),q(i.mData.filter,a)):r?(i._setter||(i._setter=Q(i.mData)),i._setter(d,n)):d[j]=n;j++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)jb(f),e.push(f);f=f.nextSibling}else{e=b.anCells;g=0;for(var o=e.length;g<o;g++)jb(e[g])}if(b=f?b:b.nTr)(b=b.getAttribute("id"))&&Q(a.rowId)(d,b);return{data:d,cells:e}}
|
||||||
|
function Ja(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],i,j,h,l,r;if(null===e.nTr){i=c||T.createElement("tr");e.nTr=i;e.anCells=g;i._DT_RowIndex=b;Na(a,e);l=0;for(r=a.aoColumns.length;l<r;l++){h=a.aoColumns[l];j=c?d[l]:T.createElement(h.sCellType);g.push(j);if(!c||h.mRender||h.mData!==l)j.innerHTML=B(a,b,l,"display");h.sClass&&(j.className+=" "+h.sClass);h.bVisible&&!c?i.appendChild(j):!h.bVisible&&c&&j.parentNode.removeChild(j);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,j,B(a,b,l),f,b,l)}w(a,
|
||||||
|
"aoRowCreatedCallback",null,[i,f,b])}e.nTr.setAttribute("role","row")}function Na(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?pa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function kb(a){var b,c,d,e,f,g=a.nTHead,i=a.nTFoot,j=0===h("th, td",g).length,n=a.oClasses,l=a.aoColumns;j&&(e=h("<tr/>").appendTo(g));
|
||||||
|
b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),j&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Pa(a,"header")(a,d,f,n);j&&fa(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(i).find(">tr>th, >tr>td").addClass(n.sFooterTH);if(null!==i){a=a.aoFooter[0];b=0;for(c=a.length;b<
|
||||||
|
c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ga(a,b,c){var d,e,f,g=[],i=[],j=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=j-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);i.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=j=1,i[d][f]===k){a.appendChild(g[d][f].cell);for(i[d][f]=1;g[d+j]!==k&&g[d][f].cell==g[d+j][f].cell;)i[d+
|
||||||
|
j][f]=1,j++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<j;c++)i[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",j).attr("colspan",n)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,i="ssp"==y(a),j=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=i?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();
|
||||||
|
if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(i){if(!a.bDestroying&&!lb(a))return}else a.iDraw++;if(0!==j.length){f=i?a.aoData.length:n;for(i=i?0:g;i<f;i++){var l=j[i],r=a.aoData[l];null===r.nTr&&Ja(a,l);l=r.nTr;if(0!==e){var q=d[c%e];r._sRowStripe!=q&&(h(l).removeClass(r._sRowStripe).addClass(q),r._sRowStripe=q)}w(a,"aoRowCallback",null,[l,r._aData,c,i]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),
|
||||||
|
b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:ca(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,n,j]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,n,j]);d=h(a.nTBody);d.children().detach();d.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function R(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&mb(a);d?ha(a,a.oPreviousSearch):a.aiDisplay=
|
||||||
|
a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function nb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,i,j,n,l,r,q=0;q<f.length;q++){g=null;i=f[q];if("<"==i){j=h("<div/>")[0];n=f[q+1];if("'"==n||'"'==n){l="";for(r=2;f[q+r]!=n;)l+=
|
||||||
|
f[q+r],r++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),j.id=n[0].substr(1,n[0].length-1),j.className=n[1]):"#"==l.charAt(0)?j.id=l.substr(1,l.length-1):j.className=l;q+=r}e.append(j);e=h(j)}else if(">"==i)e=e.parent();else if("l"==i&&d.bPaginate&&d.bLengthChange)g=ob(a);else if("f"==i&&d.bFilter)g=pb(a);else if("r"==i&&d.bProcessing)g=qb(a);else if("t"==i)g=rb(a);else if("i"==i&&d.bInfo)g=sb(a);else if("p"==i&&d.bPaginate)g=tb(a);else if(0!==m.ext.feature.length){j=
|
||||||
|
m.ext.feature;r=0;for(n=j.length;r<n;r++)if(i==j[r].cFeature){g=j[r].fnInit(a);break}}g&&(j=a.aanFeatures,j[i]||(j[i]=[]),j[i].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function fa(a,b){var c=h(b).children("tr"),d,e,f,g,i,j,n,l,r,q;a.splice(0,a.length);f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan");r=1*e.getAttribute("rowspan");l=!l||0===l||
|
||||||
|
1===l?1:l;r=!r||0===r||1===r?1:r;g=0;for(i=a[f];i[g];)g++;n=g;q=1===l?!0:!1;for(i=0;i<l;i++)for(g=0;g<r;g++)a[f+g][n+i]={cell:e,unique:q},a[f+g].nTr=d}e=e.nextSibling}}}function qa(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],fa(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=
|
||||||
|
b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,i=a.oInstance,j=function(b){w(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&J(a,0,c);a.json=b;j(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=w(a,null,"xhr",[a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==
|
||||||
|
c?J(a,0,"Invalid JSON response",1):4===b.readyState&&J(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(i,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),j,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(i,b,j,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function lb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,!0),ra(a,ub(a),function(b){vb(a,b)}),!1):!0}function ub(a){var b=
|
||||||
|
a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,i=[],j,n,l,r=V(a);g=a._iDisplayStart;j=!1!==d.bPaginate?a._iDisplayLength:-1;var q=function(a,b){i.push({name:a,value:b})};q("sEcho",a.iDraw);q("iColumns",c);q("sColumns",D(b,"sName").join(","));q("iDisplayStart",g);q("iDisplayLength",j);var k={draw:a.iDraw,columns:[],order:[],start:g,length:j,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g],l=f[g],j="function"==typeof n.mData?"function":n.mData,k.columns.push({data:j,
|
||||||
|
name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),q("mDataProp_"+g,j),d.bFilter&&(q("sSearch_"+g,l.sSearch),q("bRegex_"+g,l.bRegex),q("bSearchable_"+g,n.bSearchable)),d.bSort&&q("bSortable_"+g,n.bSortable);d.bFilter&&(q("sSearch",e.sSearch),q("bRegex",e.bRegex));d.bSort&&(h.each(r,function(a,b){k.order.push({column:b.col,dir:b.dir});q("iSortCol_"+a,b.col);q("sSortDir_"+a,b.dir)}),q("iSortingCols",r.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?
|
||||||
|
i:k:b?i:k}function vb(a,b){var c=sa(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)L(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&
|
||||||
|
a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?P(c)(b):b}function pb(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',i=d.sSearch,i=i.match(/_INPUT_/)?i.replace("_INPUT_",g):i+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(i)),f=function(){var b=!this.value?"":this.value;b!=e.sSearch&&(ha(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,
|
||||||
|
bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,M(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,j=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{j[0]!==T.activeElement&&j.val(e.sSearch)}catch(d){}});return b[0]}function ha(a,b,c){var d=a.oPreviousSearch,
|
||||||
|
e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Ia(a);if("ssp"!=y(a)){wb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)xb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);yb(a)}else f(b);a.bFiltered=!0;w(a,null,"search",[a])}function yb(a){for(var b=m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<
|
||||||
|
g;f++){for(var i=[],j=0,n=c.length;j<n;j++)e=c[j],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,j)&&i.push(e);c.length=0;h.merge(c,i)}}function xb(a,b,c,d,e,f){if(""!==b)for(var g=a.aiDisplay,d=Qa(b,d,e,f),e=g.length-1;0<=e;e--)b=a.aoData[g[e]]._aFilterData[c],d.test(b)||g.splice(e,1)}function wb(a,b,c,d,e,f){var d=Qa(b,d,e,f),e=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&&(c=!0);g=zb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||e.length>b.length||0!==b.indexOf(e)||
|
||||||
|
a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)d.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,d){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function va(a){return a.replace(Yb,"\\$1")}function zb(a){var b=a.aoColumns,c,d,e,f,g,i,j,h,l=m.ext.type.search;c=!1;d=0;for(f=a.aoData.length;d<
|
||||||
|
f;d++)if(h=a.aoData[d],!h._aFilterData){i=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(j=B(a,d,e,"filter"),l[c.sType]&&(j=l[c.sType](j)),null===j&&(j=""),"string"!==typeof j&&j.toString&&(j=j.toString())):j="",j.indexOf&&-1!==j.indexOf("&")&&(wa.innerHTML=j,j=Zb?wa.textContent:wa.innerText),j.replace&&(j=j.replace(/[\r\n]/g,"")),i.push(j);h._aFilterData=i;h._sFilterRow=i.join(" ");c=!0}return c}function Ab(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}
|
||||||
|
function Bb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function sb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Cb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Cb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),
|
||||||
|
g=a.fnRecordsDisplay(),i=g?c.sInfo:c.sInfoEmpty;g!==f&&(i+=" "+c.sInfoFiltered);i+=c.sInfoPostFix;i=Db(a,i);c=c.fnInfoCallback;null!==c&&(i=c.call(a.oInstance,a,d,e,f,g,i));h(b).html(i)}}function Db(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/
|
||||||
|
e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ia(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){nb(a);kb(a);ga(a,a.aoHeader);ga(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ha(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=u(f.sWidth));w(a,null,"preInit",[a]);R(a);e=y(a);if("ssp"!=e||g)"ajax"==e?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)L(a,f[b]);a.iInitDisplayStart=d;R(a);C(a,!1);ta(a,c)},a):(C(a,!1),
|
||||||
|
ta(a))}else setTimeout(function(){ia(a)},200)}function ta(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Y(a);w(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);w(a,null,"length",[a,c])}function ob(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,i=f.length;g<i;g++)e[0][g]=new Option(d[g],f[g]);var j=h("<div><label/></div>").addClass(b.sLength);
|
||||||
|
a.aanFeatures.l||(j[0].id=c+"_length");j.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",j).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,d){a===c&&h("select",j).val(d)});return j[0]}function tb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){M(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+
|
||||||
|
"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,j=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===j,b=l?0:Math.ceil(b/j),j=l?1:Math.ceil(h/j),h=c(b,j),k,l=0;for(k=f.p.length;l<k;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,j)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Ta(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==
|
||||||
|
b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:J(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(w(a,null,"page",[a]),c&&M(a));return b}function qb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a,null,"processing",[a,b])}function rb(a){var b=h(a.nTable);b.attr("role",
|
||||||
|
"grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),i=g.length?g[0]._captionSide:null,j=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);j=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:u(d):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",
|
||||||
|
width:c.sXInner||"100%"}).append(j.removeAttr("id").css("margin-left",0).append("top"===i?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:u(d)}).append(b));l&&j.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:u(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===i?g:null).append(b.children("tfoot")))));
|
||||||
|
var b=j.children(),k=b[0],f=b[1],q=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(q.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=q;a.aoDrawCallback.push({fn:Z,sName:"scrolling"});return j[0]}function Z(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,i=f.children("div"),j=i[0].style,n=i.children("table"),i=a.nScrollBody,l=h(i),k=i.style,q=h(a.nScrollFoot).children("div"),
|
||||||
|
m=q.children("table"),o=h(a.nTHead),E=h(a.nTable),p=E[0],t=p.style,N=a.nTFoot?h(a.nTFoot):null,Eb=a.oBrowser,w=Eb.bScrollOversize,s,v,O,x,y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};E.children("thead, tfoot").remove();x=o.clone().prependTo(E);o=o.find("tr");v=x.find("tr");x.find("th, td").removeAttr("tabindex");N&&(O=N.clone().prependTo(E),s=N.find("tr"),O=O.find("tr"));c||(k.width="100%",f[0].style.width="100%");
|
||||||
|
h.each(qa(a,x),function(b,c){B=$(a,b);c.style.width=a.aoColumns[B].sWidth});N&&H(function(a){a.style.width=""},O);f=E.outerWidth();if(""===c){t.width="100%";if(w&&(E.find("tbody").height()>i.offsetHeight||"scroll"==l.css("overflow-y")))t.width=u(E.outerWidth()-b);f=E.outerWidth()}else""!==d&&(t.width=u(d),f=E.outerWidth());H(C,v);H(function(a){A.push(a.innerHTML);y.push(u(h(a).css("width")))},v);H(function(a,b){a.style.width=y[b]},o);h(v).height(0);N&&(H(C,O),H(function(a){z.push(u(h(a).css("width")))},
|
||||||
|
O),H(function(a,b){a.style.width=z[b]},s),h(O).height(0));H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+A[b]+"</div>";a.style.width=y[b]},v);N&&H(function(a,b){a.innerHTML="";a.style.width=z[b]},O);if(E.outerWidth()<f){s=i.scrollHeight>i.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==l.css("overflow-y")))t.width=u(s-b);(""===c||""!==d)&&J(a,1,"Possible column misalignment",6)}else s="100%";k.width=
|
||||||
|
u(s);g.width=u(s);N&&(a.nScrollFoot.style.width=u(s));!e&&w&&(k.height=u(p.offsetHeight+b));c=E.outerWidth();n[0].style.width=u(c);j.width=u(c);d=E.height()>i.clientHeight||"scroll"==l.css("overflow-y");e="padding"+(Eb.bScrollbarLeft?"Left":"Right");j[e]=d?b+"px":"0px";N&&(m[0].style.width=u(c),q[0].style.width=u(c),q[0].style[e]=d?b+"px":"0px");l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function H(a,b,c){for(var d=0,e=0,f=b.length,g,i;e<f;){g=b[e].firstChild;for(i=c?c[e].firstChild:
|
||||||
|
null;g;)1===g.nodeType&&(c?a(g,i,d):a(g,d),d++),g=g.nextSibling,i=c?i.nextSibling:null;e++}}function Ha(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,f=d.sX,g=d.sXInner,i=c.length,j=aa(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,q=!1,m,o,p;p=a.oBrowser;d=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<j.length;m++)o=c[j[m]],null!==o.sWidth&&(o.sWidth=Fb(o.sWidthOrig,k),q=!0);if(d||!q&&!f&&!e&&i==ca(a)&&i==n.length)for(m=0;m<i;m++){if(j=
|
||||||
|
$(a,m))c[j].sWidth=u(n.eq(m).width())}else{i=h(b).clone().css("visibility","hidden").removeAttr("id");i.find("tbody tr").remove();var t=h("<tr/>").appendTo(i.find("tbody"));i.find("thead, tfoot").remove();i.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());i.find("tfoot th, tfoot td").css("width","");n=qa(a,i.find("thead")[0]);for(m=0;m<j.length;m++)o=c[j[m]],n[m].style.width=null!==o.sWidthOrig&&""!==o.sWidthOrig?u(o.sWidthOrig):"";if(a.aoData.length)for(m=0;m<j.length;m++)q=j[m],o=c[q],h(Gb(a,
|
||||||
|
q)).clone(!1).append(o.sContentPadding).appendTo(t);q=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(i).appendTo(k);f&&g?i.width(g):f?(i.css("width","auto"),i.width()<k.clientWidth&&i.width(k.clientWidth)):e?i.width(k.clientWidth):l&&i.width(l);if(f){for(m=g=0;m<j.length;m++)o=c[j[m]],e=p.bBounding?n[m].getBoundingClientRect().width:h(n[m]).outerWidth(),g+=null===o.sWidthOrig?e:parseInt(o.sWidth,10)+e-h(n[m]).width();i.width(u(g));b.style.width=
|
||||||
|
u(g)}for(m=0;m<j.length;m++)if(o=c[j[m]],p=h(n[m]).width())o.sWidth=u(p);b.style.width=u(i.css("width"));q.remove()}l&&(b.style.width=u(l));if((l||f)&&!a._reszEvt)b=function(){h(Fa).bind("resize.DT-"+a.sInstance,ua(function(){Y(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,i=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=k;a.apply(b,i)},c)):(d=g,a.apply(b,i))}}function Fb(a,b){if(!a)return 0;var c=h("<div/>").css("width",
|
||||||
|
u(a)).appendTo(b||T.body),d=c[0].offsetWidth;c.remove();return d}function Gb(a,b){var c=Hb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Hb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace($b,""),c.length>d&&(d=c.length,e=f);return e}function u(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function V(a){var b,c,d=[],e=a.aoColumns,f,g,i,j;b=a.aaSortingFixed;
|
||||||
|
c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){j=n[a][0];f=e[j].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],i=e[g].sType||"string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:j,col:g,dir:n[a][1],index:n[a]._idx,type:i,formatter:m.ext.type.order[i+"-pre"]})}return d}function mb(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=
|
||||||
|
0,i,j=a.aiDisplayMaster,h;Ia(a);h=V(a);b=0;for(c=h.length;b<c;b++)i=h[b],i.formatter&&g++,Ib(a,i.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=j.length;b<c;b++)d[j[b]]=b;g===h.length?j.sort(function(a,b){var c,e,g,i,j=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=0;g<j;g++)if(i=h[g],c=k[i.col],e=m[i.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===i.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):j.sort(function(a,b){var c,g,i,j,k=h.length,m=f[a]._aSortData,p=f[b]._aSortData;for(i=0;i<k;i++)if(j=h[i],
|
||||||
|
c=m[j.col],g=p[j.col],j=e[j.type+"-"+j.dir]||e["string-"+j.dir],c=j(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,d=a.aoColumns,e=V(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var i=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var j=c.nTh;j.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(j.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=i[e[0].index+1]||i[0]):c=i[0],b+="asc"===c?a.sSortAscending:
|
||||||
|
a.sSortDescending);j.setAttribute("aria-label",b)}}function Ua(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],
|
||||||
|
e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);R(a);"function"==typeof d&&d(a)}function Oa(a,b,c,d){var e=a.aoColumns[c];Va(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,d))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=V(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;
|
||||||
|
for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Ib(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ba(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],i=0,h=a.aoData.length;i<h;i++)if(c=a.aoData[i],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[i]:B(a,i,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,
|
||||||
|
length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:Ab(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Ab(a.aoPreSearchCols[d])}})};w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,d=a.aoColumns;if(a.oFeatures.bStateSave){var e=a.fnStateLoadCallback.call(a.oInstance,a);if(e&&e.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,e]),-1===h.inArray(!1,b)&&(b=
|
||||||
|
a.iStateDuration,!(0<b&&e.time<+new Date-1E3*b)&&d.length===e.columns.length))){a.oLoadedState=h.extend(!0,{},e);e.start!==k&&(a._iDisplayStart=e.start,a.iInitDisplayStart=e.start);e.length!==k&&(a._iDisplayLength=e.length);e.order!==k&&(a.aaSorting=[],h.each(e.order,function(b,c){a.aaSorting.push(c[0]>=d.length?[0,c[1]]:c)}));e.search!==k&&h.extend(a.oPreviousSearch,Bb(e.search));b=0;for(c=e.columns.length;b<c;b++){var f=e.columns[b];f.visible!==k&&(d[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],
|
||||||
|
Bb(f.search))}w(a,"aoStateLoaded","stateLoaded",[a,e])}}}function za(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function J(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)Fa.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&w(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&
|
||||||
|
b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Lb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Va(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",
|
||||||
|
function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function w(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===
|
||||||
|
typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Aa(a,b){var c=[],c=Mb.numbers_length,d=Math.floor(c/2);b<=c?c=W(0,b):a<=d?(c=W(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=W(b-(c-2),b):(c=W(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){h.each({num:function(b){return Ba(b,a)},"num-fmt":function(b){return Ba(b,a,Wa)},"html-num":function(b){return Ba(b,
|
||||||
|
a,Ca)},"html-num-fmt":function(b){return Ba(b,a,Ca,Wa)}},function(b,c){v.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(v.type.search[b+a]=v.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,v,t,p,s,Xa={},Ob=/[\r\n]/g,Ca=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Wa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,
|
||||||
|
K=function(a){return!a||!0===a||"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Xa[b]||(Xa[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Xa[b],"."):a},Ya=function(a,b,c){var d="string"===typeof a;if(K(a))return!0;b&&d&&(a=Qb(a,b));c&&d&&(a=a.replace(Wa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return K(a)?!0:!(K(a)||"string"===typeof a)?null:Ya(a.replace(Ca,""),b,c)?!0:null},D=function(a,
|
||||||
|
b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},ja=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},W=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Sb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},pa=function(a){var b=[],c,d,e=a.length,f,g=0;
|
||||||
|
d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},da=/\[.*?\]$/,U=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[v.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?
|
||||||
|
c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&Z(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);
|
||||||
|
(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);
|
||||||
|
return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=
|
||||||
|
function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[v.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=v.fnVersionCheck;var b=this,c=a===k,d=this.length;
|
||||||
|
c&&(a={});this.oApi=this.internal=v.internal;for(var e in m.ext.internal)e&&(this[e]=Nb(e));this.each(function(){var e={},e=1<d?Lb(e,a,!0):a,g=0,i,j=this.getAttribute("id"),n=!1,l=m.defaults,r=h(this);if("table"!=this.nodeName.toLowerCase())J(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{db(l);eb(l.column);I(l,l,!0);I(l.column,l.column,!0);I(l,h.extend(e,r.data()));var q=m.settings,g=0;for(i=q.length;g<i;g++){var p=q[g];if(p.nTable==this||p.nTHead.parentNode==this||p.nTFoot&&
|
||||||
|
p.nTFoot.parentNode==this){g=e.bRetrieve!==k?e.bRetrieve:l.bRetrieve;if(c||g)return p.oInstance;if(e.bDestroy!==k?e.bDestroy:l.bDestroy){p.oInstance.fnDestroy();break}else{J(p,0,"Cannot reinitialise DataTable",3);return}}if(p.sTableId==this.id){q.splice(g,1);break}}if(null===j||""===j)this.id=j="DataTables_Table_"+m.ext._unique++;var o=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:r[0].style.width,sInstance:j,sTableId:j});o.nTable=this;o.oApi=b.internal;o.oInit=e;q.push(o);o.oInstance=1===b.length?
|
||||||
|
b:r.dataTable();db(e);e.oLanguage&&S(e.oLanguage);e.aLengthMenu&&!e.iDisplayLength&&(e.iDisplayLength=h.isArray(e.aLengthMenu[0])?e.aLengthMenu[0][0]:e.aLengthMenu[0]);e=Lb(h.extend(!0,{},l),e);F(o.oFeatures,e,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));F(o,e,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp",
|
||||||
|
"iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);F(o.oScroll,e,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(o.oLanguage,e,"fnInfoCallback");z(o,"aoDrawCallback",e.fnDrawCallback,"user");z(o,"aoServerParams",
|
||||||
|
e.fnServerParams,"user");z(o,"aoStateSaveParams",e.fnStateSaveParams,"user");z(o,"aoStateLoadParams",e.fnStateLoadParams,"user");z(o,"aoStateLoaded",e.fnStateLoaded,"user");z(o,"aoRowCallback",e.fnRowCallback,"user");z(o,"aoRowCreatedCallback",e.fnCreatedRow,"user");z(o,"aoHeaderCallback",e.fnHeaderCallback,"user");z(o,"aoFooterCallback",e.fnFooterCallback,"user");z(o,"aoInitComplete",e.fnInitComplete,"user");z(o,"aoPreDrawCallback",e.fnPreDrawCallback,"user");o.rowIdFn=P(e.rowId);fb(o);j=o.oClasses;
|
||||||
|
e.bJQueryUI?(h.extend(j,m.ext.oJUIClasses,e.oClasses),e.sDom===l.sDom&&"lfrtip"===l.sDom&&(o.sDom='<"H"lfr>t<"F"ip>'),o.renderer)?h.isPlainObject(o.renderer)&&!o.renderer.header&&(o.renderer.header="jqueryui"):o.renderer="jqueryui":h.extend(j,m.ext.classes,e.oClasses);r.addClass(j.sTable);o.iInitDisplayStart===k&&(o.iInitDisplayStart=e.iDisplayStart,o._iDisplayStart=e.iDisplayStart);null!==e.iDeferLoading&&(o.bDeferLoading=!0,g=h.isArray(e.iDeferLoading),o._iRecordsDisplay=g?e.iDeferLoading[0]:e.iDeferLoading,
|
||||||
|
o._iRecordsTotal=g?e.iDeferLoading[1]:e.iDeferLoading);var t=o.oLanguage;h.extend(!0,t,e.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){S(a);I(l.oLanguage,a);h.extend(true,t,a);ia(o)},error:function(){ia(o)}}),n=!0);null===e.asStripeClasses&&(o.asStripeClasses=[j.sStripeOdd,j.sStripeEven]);var g=o.asStripeClasses,s=r.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),o.asDestroyStripes=
|
||||||
|
g.slice());q=[];g=this.getElementsByTagName("thead");0!==g.length&&(fa(o.aoHeader,g[0]),q=qa(o));if(null===e.aoColumns){p=[];g=0;for(i=q.length;g<i;g++)p.push(null)}else p=e.aoColumns;g=0;for(i=p.length;g<i;g++)Ga(o,q?q[g]:null);hb(o,e.aoColumnDefs,p,function(a,b){la(o,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(s[0]).children("th, td").each(function(a,b){var c=o.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");
|
||||||
|
if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};la(o,a)}}})}var v=o.oFeatures;e.bStateSave&&(v.bStateSave=!0,Kb(o,e),z(o,"aoDrawCallback",ya,"state_save"));if(e.aaSorting===k){q=o.aaSorting;g=0;for(i=q.length;g<i;g++)q[g][1]=o.aoColumns[g].asSorting[0]}xa(o);v.bSort&&z(o,"aoDrawCallback",function(){if(o.bSorted){var a=V(o),b={};h.each(a,function(a,c){b[c.src]=c.dir});w(o,null,"order",[o,a,b]);Jb(o)}});z(o,
|
||||||
|
"aoDrawCallback",function(){(o.bSorted||y(o)==="ssp"||v.bDeferRender)&&xa(o)},"sc");g=r.children("caption").each(function(){this._captionSide=r.css("caption-side")});i=r.children("thead");0===i.length&&(i=h("<thead/>").appendTo(this));o.nTHead=i[0];i=r.children("tbody");0===i.length&&(i=h("<tbody/>").appendTo(this));o.nTBody=i[0];i=r.children("tfoot");if(0===i.length&&0<g.length&&(""!==o.oScroll.sX||""!==o.oScroll.sY))i=h("<tfoot/>").appendTo(this);0===i.length||0===i.children().length?r.addClass(j.sNoFooter):
|
||||||
|
0<i.length&&(o.nTFoot=i[0],fa(o.aoFooter,o.nTFoot));if(e.aaData)for(g=0;g<e.aaData.length;g++)L(o,e.aaData[g]);else(o.bDeferLoading||"dom"==y(o))&&ma(o,h(o.nTBody).children("tr"));o.aiDisplay=o.aiDisplayMaster.slice();o.bInitialised=!0;!1===n&&ia(o)}});b=null;return this};var Tb=[],x=Array.prototype,cc=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:
|
||||||
|
null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a,b);var c=[],d=function(a){(a=cc(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=pa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};t.extend(this,this,Tb)};
|
||||||
|
m.Api=t;h.extend(t.prototype,{any:function(){return 0!==this.count()},concat:x.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(x.filter)b=x.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=
|
||||||
|
[];return new t(this.context,a.concat.apply(a,this.toArray()))},join:x.join,indexOf:x.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,h,j,n,l=this.context,m,q,p=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var o=new t(l[g]);if("table"===b)f=c.call(o,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(o,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===
|
||||||
|
b||"row"===b||"cell"===b){q=this[g];"column-rows"===b&&(m=Da(l[g],p.opts));j=0;for(n=q.length;j<n;j++)f=q[j],f="cell"===b?c.call(o,l[g],f.row,f.column,g,j):c.call(o,l[g],f,g,j,m),f!==k&&e.push(f)}}return e.length||d?(a=new t(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=p.rows,b.cols=p.cols,b.opts=p.opts,a):this},lastIndexOf:x.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(x.map)b=x.map.call(this,a,this);else for(var c=
|
||||||
|
0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:x.pop,push:x.push,reduce:x.reduce||function(a,b){return gb(this,a,b,0,this.length,1)},reduceRight:x.reduceRight||function(a,b){return gb(this,a,b,this.length-1,-1,-1)},reverse:x.reverse,selector:null,shift:x.shift,sort:x.sort,splice:x.splice,toArray:function(){return x.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},
|
||||||
|
unique:function(){return new t(this.context,pa(this))},unshift:x.unshift});t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);t.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=p=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<
|
||||||
|
d;c++)t.register(a[c],b);else for(var e=a.split("."),f=Tb,g,i,c=0,d=e.length;c<d;c++){g=(i=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var j;a:{j=0;for(var n=f.length;j<n;j++)if(f[j].name===g){j=f[j];break a}j=null}j||(j={name:g,val:{},methodExt:[],propExt:[]},f.push(j));c===d-1?j.val=b:f=i?j.methodExt:j.propExt}};t.registerPlural=s=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?new t(a.context,
|
||||||
|
a[0]):a[0]:k:a})};p("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});p("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});s("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});s("tables().body()","table().body()",
|
||||||
|
function(){return this.iterator("table",function(a){return a.nTBody},1)});s("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});s("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});s("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});p("draw()",function(a){return this.iterator("table",function(b){"page"===
|
||||||
|
a?M(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),R(b,!1===a))})});p("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});p("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===y(a)}});
|
||||||
|
p("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var d=new t(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))R(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();ra(a,[],function(c){na(a);for(var c=sa(a,c),d=0,e=c.length;d<e;d++)L(a,c[d]);R(a,b);C(a,!1)})}};p("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});p("ajax.params()",
|
||||||
|
function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});p("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});p("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});p("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});
|
||||||
|
var Za=function(a,b,c,d,e){var f=[],g,i,j,n,l,m;j=typeof b;if(!b||"string"===j||"function"===j||b.length===k)b=[b];j=0;for(n=b.length;j<n;j++){i=b[j]&&b[j].split?b[j].split(","):[b[j]];l=0;for(m=i.length;l<m;l++)(g=c("string"===typeof i[l]?h.trim(i[l]):i[l]))&&g.length&&(f=f.concat(g))}a=v.selector[a];if(a.length){j=0;for(n=a.length;j<n;j++)f=a[j](d,e,f)}return pa(f)},$a=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},
|
||||||
|
ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Da=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var i=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===i?[]:W(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==i?c.slice():"applied"==i?g.slice():h.map(c,function(a){return-1===h.inArray(a,
|
||||||
|
g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==i?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==i||0<=e&&"applied"==i)&&f.push(c))}return f};p("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b;return Za("row",a,function(a){var b=Pb(a);if(b!==null&&!e)return[b];var i=Da(c,e);if(b!==null&&h.inArray(b,i)!==-1)return[b];if(!a)return i;if(typeof a==="function")return h.map(i,function(b){var e=
|
||||||
|
c.aoData[b];return a(b,e._aData,e.nTr)?b:null});b=Sb(ja(c.aoData,i,"nTr"));if(a.nodeName&&h.inArray(a,b)!==-1)return[a._DT_RowIndex];if(typeof a==="string"&&a.charAt(0)==="#"){i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});p("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});p("rows().data()",function(){return this.iterator(!0,
|
||||||
|
"rows",function(a,b){return ja(a.aoData,b,"_aData")},1)});s("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});s("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ea(b,c,a)})});s("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});s("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,
|
||||||
|
d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new t(c,b)});s("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c];e.splice(c,1);for(var g=0,h=e.length;g<h;g++)null!==e[g].nTr&&(e[g].nTr._DT_RowIndex=g);oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[d],c,!1);Sa(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=
|
||||||
|
0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});p("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(L(b,c));return h},1),c=this.rows(-1);c.pop();h.merge(c,b);return c});p("row()",function(a,b){return ab(this.rows(a,b))});p("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=
|
||||||
|
a;ea(b[0],this[0],"data");return this});p("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});p("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:L(b,a)});return this.row(b[0])});var bb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Vb=function(a,
|
||||||
|
b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new t(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===
|
||||||
|
b)for(var c,d=ca(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&bb(f,c)}))}}};p("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)bb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||
|
||||||
|
a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=ca(d),e.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});p(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});p(["row().child.remove()",
|
||||||
|
"row().child().remove()"],function(){bb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};p("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,i=D(g,"sName"),j=D(g,"nTh");return Za("column",
|
||||||
|
e,function(a){var b=Pb(a);if(a==="")return W(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Da(c,f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,e),j[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[$(c,b)];case "name":return h.map(i,function(a,b){return a===k[1]?b:null})}else return h(j).filter(a).map(function(){return h.inArray(this,
|
||||||
|
j)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});s("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});s("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});s("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});s("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",
|
||||||
|
function(a,b){return a.aoColumns[b].mData},1)});s("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ja(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});s("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ja(a.aoData,e,"anCells",b)},1)});s("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,d){if(a===k)return c.aoColumns[d].bVisible;
|
||||||
|
var e=c.aoColumns,f=e[d],g=c.aoData,i,j,m;if(a!==k&&f.bVisible!==a){if(a){var l=h.inArray(!0,D(e,"bVisible"),d+1);i=0;for(j=g.length;i<j;i++)m=g[i].nTr,e=g[i].anCells,m&&m.insertBefore(e[d],e[l]||null)}else h(D(c.aoData,"anCells",d)).detach();f.bVisible=a;ga(c,c.aoHeader);ga(c,c.aoFooter);if(b===k||b)Y(c),(c.oScroll.sX||c.oScroll.sY)&&Z(c);w(c,null,"column-visibility",[c,d,a]);ya(c)}})});s("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===
|
||||||
|
a?ba(b,c):c},1)});p("columns.adjust()",function(){return this.iterator("table",function(a){Y(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return $(c,b);if("fromData"===a||"toVisible"===a)return ba(c,b)}});p("column()",function(a,b){return ab(this.columns(a,b))});p("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",
|
||||||
|
function(b){var d=a,e=$a(c),f=b.aoData,g=Da(b,e),i=Sb(ja(f,g,"anCells")),j=h([].concat.apply([],i)),l,m=b.aoColumns.length,n,p,t,s,u,v;return Za("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){n=[];p=0;for(t=g.length;p<t;p++){l=g[p];for(s=0;s<m;s++){u={row:l,column:s};if(c){v=f[l];a(u,B(b,l,s),v.anCells?v.anCells[s]:null)&&n.push(u)}else n.push(u)}}return n}return h.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){if(b.parentNode)l=b.parentNode._DT_RowIndex;else{a=0;for(t=
|
||||||
|
f.length;a<t;a++)if(h.inArray(b,f[a].anCells)!==-1){l=a;break}}return{row:l,column:h.inArray(b,f[l].anCells)}}).toArray()},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,i,j,m,l=this.iterator("table",function(a,b){f=[];g=0;for(i=e[b].length;g<i;g++){j=0;for(m=d[b].length;j<m;j++)f.push({row:e[b][g],column:d[b][j]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});s("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?
|
||||||
|
a[c]:k},1)});p("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});s("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});s("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});s("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,
|
||||||
|
column:c,columnVisible:ba(a,c)}},1)});s("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ea(b,c,a,d)})});p("cell()",function(a,b,c){return ab(this.cells(a,b,c))});p("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;ib(b[0],c[0].row,c[0].column,a);ea(b[0],c[0].row,"data",c[0].column);return this});p("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:
|
||||||
|
k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});p("order.listener()",function(a,b,c){return this.iterator("table",function(d){Oa(d,a,b,c)})});p(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});p("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?
|
||||||
|
e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&ha(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});s("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ha(e,
|
||||||
|
e.oPreviousSearch,1))})});p("state()",function(){return this.context.length?this.context[0].oSavedState:null});p("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});p("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});p("state.save()",function(){return this.iterator("table",function(a){ya(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=
|
||||||
|
a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});
|
||||||
|
return b?new t(c):c};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=I;p("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});p("clear()",function(){return this.iterator("table",function(a){na(a)})});p("settings()",function(){return new t(this.context,
|
||||||
|
this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,i=b.nTFoot,j=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||
|
||||||
|
(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Fa).unbind(".DT-"+b.sInstance);e!=g.parentNode&&(j.children("thead").detach(),j.append(g));i&&e!=i.parentNode&&(j.children("tfoot").detach(),j.append(i));b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",
|
||||||
|
g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);g=a?"remove":"detach";j[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),j.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%p])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){p(b+"s().every()",
|
||||||
|
function(a){return this.iterator(b,function(d,e,f,g,h){a.call((new t(d))[b](e,"cell"===b?f:k),e,f,g,h)})})});p("i18n()",function(a,b,c){var d=this.context[0],a=P(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.9";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,
|
||||||
|
idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,
|
||||||
|
25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,
|
||||||
|
fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},
|
||||||
|
fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",
|
||||||
|
sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};X(m.defaults);m.defaults.column={aDataSort:null,
|
||||||
|
iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,
|
||||||
|
iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],
|
||||||
|
aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,
|
||||||
|
iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=
|
||||||
|
this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=v={buttons:{},classes:{},errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,
|
||||||
|
iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(v,{afnFiltering:v.search,aTypes:v.type.detect,ofnSearch:v.type.search,oSort:v.type.order,afnSortData:v.order,aoFeatures:v.feature,oApi:v.internal,oStdClasses:v.classes,oPagination:v.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",
|
||||||
|
sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",
|
||||||
|
sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ea="",Ea="",G=Ea+"ui-state-default",ka=Ea+"css_right ui-icon ui-icon-",Xb=Ea+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,m.ext.classes,{sPageButton:"fg-button ui-button "+G,sPageButtonActive:"ui-state-disabled",
|
||||||
|
sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:G+" sorting_asc",sSortDesc:G+" sorting_desc",sSortable:G+" sorting",sSortableAsc:G+" sorting_asc_disabled",sSortableDesc:G+" sorting_desc_disabled",sSortableNone:G+" sorting_disabled",sSortJUIAsc:ka+"triangle-1-n",sSortJUIDesc:ka+"triangle-1-s",sSortJUI:ka+"carat-2-n-s",sSortJUIAscAllowed:ka+"carat-1-n",sSortJUIDescAllowed:ka+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",
|
||||||
|
sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+G,sScrollFoot:"dataTables_scrollFoot "+G,sHeaderTH:G,sFooterTH:G,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[Aa(a,b)]},simple_numbers:function(a,b){return["previous",Aa(a,b),"next"]},full_numbers:function(a,b){return["first",
|
||||||
|
"previous",Aa(a,b),"next","last"]},_numbers:Aa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,i=a.oLanguage.oPaginate,j,k,l=0,m=function(b,d){var p,q,t,s,u=function(b){Ta(a,b.data.action,true)};p=0;for(q=d.length;p<q;p++){s=d[p];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);m(t,s)}else{j=null;k="";switch(s){case "ellipsis":b.append('<span class="ellipsis">…</span>');break;case "first":j=i.sFirst;k=s+(e>0?"":" "+g.sPageButtonDisabled);
|
||||||
|
break;case "previous":j=i.sPrevious;k=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":j=i.sNext;k=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":j=i.sLast;k=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:j=s+1;k=e===s?g.sPageButtonActive:""}if(j!==null){t=h("<a>",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(j).appendTo(b);Va(t,{action:s},u);l++}}}},p;try{p=h(b).find(T.activeElement).data("dt-idx")}catch(t){}m(h(b).empty(),
|
||||||
|
d);p&&h(b).find("[data-dt-idx="+p+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||K(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,
|
||||||
|
!0)?"html-num-fmt"+c:null},function(a){return K(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return K(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ca,""):""},string:function(a){return K(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Ba=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(v.type.order,{"date-pre":function(a){return Date.parse(a)||
|
||||||
|
0},"html-pre":function(a){return K(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return K(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});cb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]==
|
||||||
|
"asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+
|
||||||
|
d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",f=Math.abs(parseFloat(f)),h=parseInt(f,10),f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:lb,
|
||||||
|
_fnAjaxParameters:ub,_fnAjaxUpdateDraw:vb,_fnAjaxDataSrc:sa,_fnAddColumn:Ga,_fnColumnOptions:la,_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:$,_fnColumnIndexToVisible:ba,_fnVisbleColumns:ca,_fnGetColumns:aa,_fnColumnTypes:Ia,_fnApplyColumnDefs:hb,_fnHungarianMap:X,_fnCamelToHungarian:I,_fnLanguageCompat:S,_fnBrowserDetect:fb,_fnAddData:L,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},
|
||||||
|
_fnGetCellData:B,_fnSetCellData:ib,_fnSplitObjNotation:La,_fnGetObjectDataFn:P,_fnSetObjectDataFn:Q,_fnGetDataMaster:Ma,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ea,_fnGetRowElements:Ka,_fnCreateTr:Ja,_fnBuildHead:kb,_fnDrawHead:ga,_fnDraw:M,_fnReDraw:R,_fnAddOptionsHtml:nb,_fnDetectHeader:fa,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:pb,_fnFilterComplete:ha,_fnFilterCustom:yb,_fnFilterColumn:xb,_fnFilter:wb,_fnFilterCreateSearch:Qa,_fnEscapeRegex:va,_fnFilterData:zb,_fnFeatureHtmlInfo:sb,_fnUpdateInfo:Cb,
|
||||||
|
_fnInfoMacros:Db,_fnInitialise:ia,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:ob,_fnFeatureHtmlPaginate:tb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:qb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:rb,_fnScrollDraw:Z,_fnApplyToChildren:H,_fnCalculateColumnWidths:Ha,_fnThrottle:ua,_fnConvertToWidth:Fb,_fnGetWidestNode:Gb,_fnGetMaxLenString:Hb,_fnStringToCss:u,_fnSortFlatten:V,_fnSort:mb,_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,
|
||||||
|
_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:J,_fnMap:F,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnCalculateEnd:function(){}});h.fn.dataTable=m;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],S):"object"===
|
||||||
|
typeof exports?module.exports=S(require("jquery")):jQuery&&!jQuery.fn.dataTable&&S(jQuery)})(window,document);
|
1
externals/jquery.dataTables.min_ase.css
vendored
Normal file
160
externals/jquery.dataTables.min_ase.js
vendored
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
/*! DataTables 1.10.7
|
||||||
|
* ©2008-2015 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(Ea,Q,k){var P=function(h){function W(a){var b,c,e={};h.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&W(a[d])});a._hungarianMap=e}function H(a,b,c){a._hungarianMap||W(a);var e;h.each(b,function(d){e=a._hungarianMap[d];if(e!==k&&(c||b[e]===k))"o"===e.charAt(0)?(b[e]||(b[e]={}),h.extend(!0,b[e],b[d]),H(a[e],b[e],c)):b[e]=b[d]})}function P(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;
|
||||||
|
!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");
|
||||||
|
A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&H(m.models.oSearch,a[b])}function fb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function gb(a){var a=a.oBrowser,b=h("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",
|
||||||
|
top:1,left:1,width:100,overflow:"scroll"}).append(h('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==Math.round(c.offset().left);b.remove()}function hb(a,b,c,e,d,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;e!==d;)a.hasOwnProperty(e)&&(g=j?b(g,a[e],e,a):a[e],j=!0,e+=f);return g}function Fa(a,b){var c=m.defaults.column,e=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:Q.createElement("th"),sTitle:c.sTitle?
|
||||||
|
c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=h.extend({},m.models.oSearch,c[e]);ka(a,e,h(b).data())}function ka(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),H(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&
|
||||||
|
(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=R(g),i=b.mRender?R(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var e=j(a,b,k,c);return i&&b?i(e,b,a,c):e};b.fnSetData=function(a,b,c){return S(g)(a,b,c)};"number"!==typeof g&&
|
||||||
|
(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b=
|
||||||
|
a.aoColumns;Ga(a);for(var c=0,e=b.length;c<e;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Y(a);w(a,null,"column-sizing",[a])}function la(a,b){var c=Z(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=Z(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){return Z(a,"bVisible").length}function Z(a,b){var c=[];h.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ha(a){var b=a.aoColumns,c=a.aoData,e=m.ext.type.detect,d,
|
||||||
|
f,g,j,i,h,l,q,n;d=0;for(f=b.length;d<f;d++)if(l=b[d],n=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=e.length;g<j;g++){i=0;for(h=c.length;i<h;i++){n[i]===k&&(n[i]=x(a,i,d,"type"));q=e[g](n[i],a);if(!q&&g!==e.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function ib(a,b,c,e){var d,f,g,j,i,o,l=a.aoColumns;if(b)for(d=b.length-1;0<=d;d--){o=b[d];var q=o.targets!==k?o.targets:o.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<
|
||||||
|
g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Fa(a);e(q[f],o)}else if("number"===typeof q[f]&&0>q[f])e(l.length+q[f],o);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&e(j,o)}}if(c){d=0;for(a=c.length;d<a;d++)e(d,c[d])}}function K(a,b,c,e){var d=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,g=b.length;f<g;f++)c&&Ia(a,d,f,x(a,d,f)),b[f].sType=null;a.aiDisplayMaster.push(d);
|
||||||
|
(c||!a.oFeatures.bDeferRender)&&Ja(a,d,c,e);return d}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,d){c=na(a,d);return K(a,c.data,d,c.cells)})}function x(a,b,c,e){var d=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,c=f.fnGetData(g,e,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!=d&&null===j&&(I(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=d),j;if((c===g||null===c)&&
|
||||||
|
null!==j)c=j;else if("function"===typeof c)return c.call(g);return null===c&&"display"==e?"":c}function Ia(a,b,c,e){a.aoColumns[c].fnSetData(a.aoData[b]._aData,e,{settings:a,row:b,col:c})}function Ka(a){return h.map(a.match(/(\\.|[^\.])+/g),function(a){return a.replace(/\\./g,".")})}function R(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=R(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,
|
||||||
|
c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=Ka(f);for(var i=0,h=j.length;i<h;i++){f=j[i].match(ba);g=j[i].match(T);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");i=0;for(h=a.length;i<h;i++)g.push(c(a[i],b,j));a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(T,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===
|
||||||
|
k)return k;a=a[j[i]]}}return a};return function(b,d){return c(b,d,a)}}return function(b){return b[a]}}function S(a){if(h.isPlainObject(a))return S(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,e,d){a(b,"set",e,d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,e,d){var d=Ka(d),f;f=d[d.length-1];for(var g,j,i=0,h=d.length-1;i<h;i++){g=d[i].match(ba);j=d[i].match(T);if(g){d[i]=d[i].replace(ba,"");a[d[i]]=[];
|
||||||
|
f=d.slice();f.splice(0,i+1);g=f.join(".");j=0;for(h=e.length;j<h;j++)f={},b(f,e[j],g),a[d[i]].push(f);return}j&&(d[i]=d[i].replace(T,""),a=a[d[i]](e));if(null===a[d[i]]||a[d[i]]===k)a[d[i]]={};a=a[d[i]]}if(f.match(T))a[f.replace(T,"")](e);else a[f.replace(ba,"")]=e};return function(c,e){return b(c,e,a)}}return function(b,e){b[a]=e}}function La(a){return D(a.aoData,"_aData")}function oa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function pa(a,b,c){for(var e=-1,d=0,f=a.length;d<
|
||||||
|
f;d++)a[d]==b?e=d:a[d]>b&&a[d]--; -1!=e&&c===k&&a.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,g=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=x(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=na(a,d,e,e===k?k:d._aData).data;else{var j=d.anCells;if(j)if(e!==k)g(j[e],e);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}d._aSortData=null;d._aFilterData=null;g=a.aoColumns;if(e!==k)g[e].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;
|
||||||
|
Ma(d)}}function na(a,b,c,e){var d=[],f=b.firstChild,g,j=0,i,o=a.aoColumns,l=a._rowReadObject,e=e||l?{}:[],q=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),S(a)(e,b.getAttribute(c)))}},a=function(a){if(c===k||c===j)g=o[j],i=h.trim(a.innerHTML),g&&g._bAttrSrc?(S(g.mData._)(e,i),q(g.mData.sort,a),q(g.mData.type,a),q(g.mData.filter,a)):l?(g._setter||(g._setter=S(g.mData)),g._setter(e,i)):e[j]=i;j++};if(f)for(;f;){b=f.nodeName.toUpperCase();if("TD"==b||"TH"==b)a(f),
|
||||||
|
d.push(f);f=f.nextSibling}else{d=b.anCells;f=0;for(b=d.length;f<b;f++)a(d[f])}return{data:e,cells:d}}function Ja(a,b,c,e){var d=a.aoData[b],f=d._aData,g=[],j,i,h,l,q;if(null===d.nTr){j=c||Q.createElement("tr");d.nTr=j;d.anCells=g;j._DT_RowIndex=b;Ma(d);l=0;for(q=a.aoColumns.length;l<q;l++){h=a.aoColumns[l];i=c?e[l]:Q.createElement(h.sCellType);g.push(i);if(!c||h.mRender||h.mData!==l)i.innerHTML=x(a,b,l,"display");h.sClass&&(i.className+=" "+h.sClass);h.bVisible&&!c?j.appendChild(i):!h.bVisible&&c&&
|
||||||
|
i.parentNode.removeChild(i);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,i,x(a,b,l),f,b,l)}w(a,"aoRowCreatedCallback",null,[j,f,b])}d.nTr.setAttribute("role","row")}function Ma(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var e=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?Na(a.__rowc.concat(e)):e;h(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowAttr&&h(b).attr(c.DT_RowAttr);c.DT_RowData&&h(b).data(c.DT_RowData)}}function jb(a){var b,c,e,d,
|
||||||
|
f,g=a.nTHead,j=a.nTFoot,i=0===h("th, td",g).length,o=a.oClasses,l=a.aoColumns;i&&(d=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],e=h(f.nTh).addClass(f.sClass),i&&e.appendTo(d),a.oFeatures.bSort&&(e.addClass(f.sSortingClass),!1!==f.bSortable&&(e.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=e.html()&&e.html(f.sTitle),Pa(a,"header")(a,e,f,o);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(o.sHeaderTH);
|
||||||
|
h(j).find(">tr>th, >tr>td").addClass(o.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var e,d,f,g=[],j=[],i=a.aoColumns.length,o;if(b){c===k&&(c=!1);e=0;for(d=b.length;e<d;e++){g[e]=b[e].slice();g[e].nTr=b[e].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[e].splice(f,1);j.push([])}e=0;for(d=g.length;e<d;e++){if(a=g[e].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[e].length;f<b;f++)if(o=
|
||||||
|
i=1,j[e][f]===k){a.appendChild(g[e][f].cell);for(j[e][f]=1;g[e+i]!==k&&g[e][f].cell==g[e+i][f].cell;)j[e+i][f]=1,i++;for(;g[e][f+o]!==k&&g[e][f].cell==g[e][f+o].cell;){for(c=0;c<i;c++)j[e+c][f+o]=1;o++}h(g[e][f].cell).attr("rowspan",i).attr("colspan",o)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,e=a.asStripeClasses,d=e.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==B(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=
|
||||||
|
j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,o=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:o;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ja(a,l);l=q.nTr;if(0!==d){var n=e[c%d];q._sRowStripe!=n&&(h(l).removeClass(q._sRowStripe).addClass(n),q._sRowStripe=n)}w(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,
|
||||||
|
1==a.iDraw&&"ajax"==B(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":d?e[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],La(a),g,o,i]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],La(a),g,o,i]);e=h(a.nTBody);e.children().detach();e.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=
|
||||||
|
!1}}function N(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&lb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),e=a.oFeatures,d=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,o,l,q,n=0;n<f.length;n++){g=
|
||||||
|
null;j=f[n];if("<"==j){i=h("<div/>")[0];o=f[n+1];if("'"==o||'"'==o){l="";for(q=2;f[n+q]!=o;)l+=f[n+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(o=l.split("."),i.id=o[0].substr(1,o[0].length-1),i.className=o[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;n+=q}d.append(i);d=h(i)}else if(">"==j)d=d.parent();else if("l"==j&&e.bPaginate&&e.bLengthChange)g=nb(a);else if("f"==j&&e.bFilter)g=ob(a);else if("r"==j&&e.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==
|
||||||
|
j&&e.bInfo)g=rb(a);else if("p"==j&&e.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(o=i.length;q<o;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),d.append(g))}c.replaceWith(d)}function da(a,b){var c=h(b).children("tr"),e,d,f,g,j,i,o,l,q,n;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){e=c[f];for(d=e.firstChild;d;){if("TD"==d.nodeName.toUpperCase()||"TH"==d.nodeName.toUpperCase()){l=
|
||||||
|
1*d.getAttribute("colspan");q=1*d.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;o=g;n=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][o+j]={cell:d,unique:n},a[f+g].nTr=e}d=d.nextSibling}}}function qa(a,b,c){var e=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,d=c.length;b<d;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!e[f]||!a.bSortCellsTop))e[f]=c[b][f].cell;return e}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]);
|
||||||
|
if(b&&h.isArray(b)){var e={},d=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(d);c?(c=c[0],e[c]||(e[c]=[]),e[c].push(b.value)):e[b.name]=b.value});b=e}var f,g=a.ajax,j=a.oInstance,i=function(b){w(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var o=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&o?o:h.extend(!0,b,o);delete g.data}o={data:b,success:function(b){var c=b.error||b.sError;c&&I(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,
|
||||||
|
c){var f=w(a,null,"xhr",[a,null,a.jqXHR]);-1===h.inArray(!0,f)&&("parsererror"==c?I(a,0,"Invalid JSON response",1):4===b.readyState&&I(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(o,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(o,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?
|
||||||
|
(a.iDraw++,C(a,!0),ra(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,e=a.oFeatures,d=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,o,l,q=U(a);g=a._iDisplayStart;i=!1!==e.bPaginate?a._iDisplayLength:-1;var n=function(a,b){j.push({name:a,value:b})};n("sEcho",a.iDraw);n("iColumns",c);n("sColumns",D(b,"sName").join(","));n("iDisplayStart",g);n("iDisplayLength",i);var k={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:d.sSearch,regex:d.bRegex}};for(g=
|
||||||
|
0;g<c;g++)o=b[g],l=f[g],i="function"==typeof o.mData?"function":o.mData,k.columns.push({data:i,name:o.sName,searchable:o.bSearchable,orderable:o.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),n("mDataProp_"+g,i),e.bFilter&&(n("sSearch_"+g,l.sSearch),n("bRegex_"+g,l.bRegex),n("bSearchable_"+g,o.bSearchable)),e.bSort&&n("bSortable_"+g,o.bSortable);e.bFilter&&(n("sSearch",d.sSearch),n("bRegex",d.bRegex));e.bSort&&(h.each(q,function(a,b){k.order.push({column:b.col,dir:b.dir});n("iSortCol_"+a,b.col);
|
||||||
|
n("sSortDir_"+a,b.dir)}),n("iSortingCols",q.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:k:b?j:k}function ub(a,b){var c=sa(a,b),e=b.sEcho!==k?b.sEcho:b.draw,d=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}oa(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(f,10);e=0;for(d=c.length;e<d;e++)K(a,c[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;
|
||||||
|
M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?R(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,e=a.oLanguage,d=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=e.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),
|
||||||
|
f=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(fa(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),a._iDisplayStart=0,M(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===B(a)?400:0,i=h("input",b).val(d.sSearch).attr("placeholder",e.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==
|
||||||
|
Q.activeElement&&i.val(d.sSearch)}catch(f){}});return b[0]}function fa(a,b,c){var e=a.oPreviousSearch,d=a.aoPreSearchCols,f=function(a){e.sSearch=a.sSearch;e.bRegex=a.bRegex;e.bSmart=a.bSmart;e.bCaseInsensitive=a.bCaseInsensitive};Ha(a);if("ssp"!=B(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<d.length;b++)wb(a,d[b].sSearch,b,d[b].bEscapeRegex!==k?!d[b].bEscapeRegex:d[b].bRegex,d[b].bSmart,d[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=
|
||||||
|
!0;w(a,null,"search",[a])}function xb(a){for(var b=m.ext.search,c=a.aiDisplay,e,d,f=0,g=b.length;f<g;f++){for(var j=[],i=0,h=c.length;i<h;i++)d=c[i],e=a.aoData[d],b[f](a,e._aFilterData,d,e._aData,i)&&j.push(d);c.length=0;c.push.apply(c,j)}}function wb(a,b,c,e,d,f){if(""!==b)for(var g=a.aiDisplay,e=Qa(b,e,d,f),d=g.length-1;0<=d;d--)b=a.aoData[g[d]]._aFilterData[c],e.test(b)||g.splice(d,1)}function vb(a,b,c,e,d,f){var e=Qa(b,e,d,f),d=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&&
|
||||||
|
(c=!0);g=yb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||d.length>b.length||0!==b.indexOf(d)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)e.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,e){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,e?"i":"")}function va(a){return a.replace(Yb,"\\$1")}
|
||||||
|
function yb(a){var b=a.aoColumns,c,e,d,f,g,j,i,h,l=m.ext.type.search;c=!1;e=0;for(f=a.aoData.length;e<f;e++)if(h=a.aoData[e],!h._aFilterData){j=[];d=0;for(g=b.length;d<g;d++)c=b[d],c.bSearchable?(i=x(a,e,d,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(wa.innerHTML=i,i=Zb?wa.textContent:wa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}
|
||||||
|
function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,e=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),e.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return e[0]}function Bb(a){var b=
|
||||||
|
a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,e=a._iDisplayStart+1,d=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,e,d,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,e=a._iDisplayStart+1,d=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===d;return b.replace(/_START_/g,c.call(a,e)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,
|
||||||
|
c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(e/d))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/d)))}function ga(a){var b,c,e=a.iInitDisplayStart,d=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ga(a);b=0;for(c=d.length;b<c;b++)f=d[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));N(a);d=B(a);"ssp"!=d&&("ajax"==d?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)K(a,f[b]);
|
||||||
|
a.iInitDisplayStart=e;N(a);C(a,!1);ta(a,c)},a):(C(a,!1),ta(a)))}else setTimeout(function(){ga(a)},200)}function ta(a,b){a._bInitComplete=!0;b&&X(a);w(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);w(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,e=a.aLengthMenu,d=h.isArray(e[0]),f=d?e[0]:e,e=d?e[1]:e,d=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)d[0][g]=new Option(e[g],
|
||||||
|
f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&h("select",i).val(f)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],e="function"===typeof c,d=function(a){M(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],
|
||||||
|
f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),q,l=0;for(q=f.p.length;l<q;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,d)},sName:"pagination"}));return b}function Ta(a,b,c){var e=a._iDisplayStart,d=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===d?e=0:"number"===typeof b?(e=b*d,e>f&&(e=0)):
|
||||||
|
"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"==b?e+d<f&&(e+=d):"last"==b?e=Math.floor((f-1)/d)*d:I(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==e;a._iDisplayStart=e;b&&(w(a,null,"page",[a]),c&&M(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a,
|
||||||
|
null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),o=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);c=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,
|
||||||
|
width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!d?null:s(d),width:!e?null:s(e)}).append(b));l&&c.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(o.removeAttr("id").css("margin-left",
|
||||||
|
0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=c.children(),q=b[0],f=b[1],n=l?b[2]:null;if(e)h(f).on("scroll.DT",function(){var a=this.scrollLeft;q.scrollLeft=a;l&&(n.scrollLeft=a)});a.nScrollHead=q;a.nScrollBody=f;a.nScrollFoot=n;a.aoDrawCallback.push({fn:Y,sName:"scrolling"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,g=h(a.nScrollHead),j=g[0].style,i=g.children("div"),o=i[0].style,l=i.children("table"),i=a.nScrollBody,q=h(i),n=i.style,
|
||||||
|
k=h(a.nScrollFoot).children("div"),p=k.children("table"),m=h(a.nTHead),r=h(a.nTable),t=r[0],O=t.style,L=a.nTFoot?h(a.nTFoot):null,ha=a.oBrowser,w=ha.bScrollOversize,v,u,y,x,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};r.children("thead, tfoot").remove();z=m.clone().prependTo(r);v=m.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");L&&(x=L.clone().prependTo(r),u=L.find("tr"),x=x.find("tr"));
|
||||||
|
c||(n.width="100%",g[0].style.width="100%");h.each(qa(a,z),function(b,c){D=la(a,b);c.style.width=a.aoColumns[D].sWidth});L&&G(function(a){a.style.width=""},x);b.bCollapse&&""!==d&&(n.height=q[0].offsetHeight+m[0].offsetHeight+"px");g=r.outerWidth();if(""===c){if(O.width="100%",w&&(r.find("tbody").height()>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(r.outerWidth()-f)}else""!==e?O.width=s(e):g==q.width()&&q.height()<r.height()?(O.width=s(g-f),r.outerWidth()>g-f&&(O.width=s(g))):O.width=
|
||||||
|
s(g);g=r.outerWidth();G(E,y);G(function(a){C.push(a.innerHTML);A.push(s(h(a).css("width")))},y);G(function(a,b){a.style.width=A[b]},v);h(y).height(0);L&&(G(E,x),G(function(a){B.push(s(h(a).css("width")))},x),G(function(a,b){a.style.width=B[b]},u),h(x).height(0));G(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},y);L&&G(function(a,b){a.innerHTML="";a.style.width=B[b]},x);if(r.outerWidth()<g){u=i.scrollHeight>i.offsetHeight||
|
||||||
|
"scroll"==q.css("overflow-y")?g+f:g;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(u-f);(""===c||""!==e)&&I(a,1,"Possible column misalignment",6)}else u="100%";n.width=s(u);j.width=s(u);L&&(a.nScrollFoot.style.width=s(u));!d&&w&&(n.height=s(t.offsetHeight+f));d&&b.bCollapse&&(n.height=s(d),b=c&&t.offsetWidth>i.offsetWidth?f:0,t.offsetHeight<i.offsetHeight&&(n.height=s(t.offsetHeight+b)));b=r.outerWidth();l[0].style.width=s(b);o.width=s(b);l=r.height()>i.clientHeight||
|
||||||
|
"scroll"==q.css("overflow-y");ha="padding"+(ha.bScrollbarLeft?"Left":"Right");o[ha]=l?f+"px":"0px";L&&(p[0].style.width=s(b),k[0].style.width=s(b),k[0].style[ha]=l?f+"px":"0px");q.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function G(a,b,c){for(var e=0,d=0,f=b.length,g,j;d<f;){g=b[d].firstChild;for(j=c?c[d].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,e):a(g,e),e++),g=g.nextSibling,j=c?j.nextSibling:null;d++}}function Ga(a){var b=a.nTable,c=a.aoColumns,e=a.oScroll,d=e.sY,f=e.sX,
|
||||||
|
g=e.sXInner,j=c.length,e=Z(a,"bVisible"),i=h("th",a.nTHead),o=b.getAttribute("width"),l=b.parentNode,k=!1,n,m;(n=b.style.width)&&-1!==n.indexOf("%")&&(o=n);for(n=0;n<e.length;n++)m=c[e[n]],null!==m.sWidth&&(m.sWidth=Db(m.sWidthOrig,l),k=!0);if(!k&&!f&&!d&&j==aa(a)&&j==i.length)for(n=0;n<j;n++)c[n].sWidth=s(i.eq(n).width());else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var p=h("<tr/>").appendTo(j.find("tbody"));j.find("tfoot th, tfoot td").css("width",
|
||||||
|
"");i=qa(a,j.find("thead")[0]);for(n=0;n<e.length;n++)m=c[e[n]],i[n].style.width=null!==m.sWidthOrig&&""!==m.sWidthOrig?s(m.sWidthOrig):"";if(a.aoData.length)for(n=0;n<e.length;n++)k=e[n],m=c[k],h(Eb(a,k)).clone(!1).append(m.sContentPadding).appendTo(p);j.appendTo(l);f&&g?j.width(g):f?(j.css("width","auto"),j.width()<l.offsetWidth&&j.width(l.offsetWidth)):d?j.width(l.offsetWidth):o&&j.width(o);Fb(a,j[0]);if(f){for(n=g=0;n<e.length;n++)m=c[e[n]],d=h(i[n]).outerWidth(),g+=null===m.sWidthOrig?d:parseInt(m.sWidth,
|
||||||
|
10)+d-h(i[n]).width();j.width(s(g));b.style.width=s(g)}for(n=0;n<e.length;n++)if(m=c[e[n]],d=h(i[n]).width())m.sWidth=s(d);b.style.width=s(j.css("width"));j.remove()}o&&(b.style.width=s(o));if((o||f)&&!a._reszEvt)b=function(){h(Ea).bind("resize.DT-"+a.sInstance,ua(function(){X(a)}))},a.oBrowser.bScrollOversize?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,e,d;return function(){var b=this,g=+new Date,j=arguments;e&&g<e+c?(clearTimeout(d),d=setTimeout(function(){e=k;a.apply(b,
|
||||||
|
j)},c)):(e=g,a.apply(b,j))}}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",s(a)).appendTo(b||Q.body),e=c[0].offsetWidth;c.remove();return e}function Fb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(h(b).outerWidth()-c)}function Eb(a,b){var c=Gb(a,b);if(0>c)return null;var e=a.aoData[c];return!e.nTr?h("<td/>").html(x(a,c,b,"display"))[0]:e.anCells[b]}function Gb(a,b){for(var c,e=-1,d=-1,f=0,g=a.aoData.length;f<g;f++)c=x(a,f,b,"display")+"",c=c.replace($b,""),
|
||||||
|
c.length>e&&(e=c.length,d=f);return d}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Hb(){var a=m.__scrollbarWidth;if(a===k){var b=h("<p/>").css({position:"absolute",top:0,left:0,width:"100%",height:150,padding:0,overflow:"scroll",visibility:"hidden"}).appendTo("body"),a=b[0].offsetWidth-b[0].clientWidth;m.__scrollbarWidth=a;b.remove()}return a}function U(a){var b,c,e=[],d=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var o=[];
|
||||||
|
f=function(a){a.length&&!h.isArray(a[0])?o.push(a):o.push.apply(o,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<o.length;a++){i=o[a][0];f=d[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=d[g].sType||"string",o[a]._idx===k&&(o[a]._idx=h.inArray(o[a][1],d[g].asSorting)),e.push({src:i,col:g,dir:o[a][1],index:o[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return e}function lb(a){var b,c,e=[],d=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;
|
||||||
|
Ha(a);h=U(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Ib(a,j.col);if("ssp"!=B(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)e[i[b]]=b;g===h.length?i.sort(function(a,b){var c,d,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=0;g<i;g++)if(j=h[g],c=k[j.col],d=m[j.col],c=c<d?-1:c>d?1:0,0!==c)return"asc"===j.dir?c:-c;c=e[a];d=e[b];return c<d?-1:c>d?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,r=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=r[i.col],i=d[i.type+
|
||||||
|
"-"+i.dir]||d["string-"+i.dir],c=i(c,g),0!==c)return c;c=e[a];g=e[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,e=a.aoColumns,d=U(a),a=a.oLanguage.oAria,f=0,g=e.length;f<g;f++){c=e[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<d.length&&d[0].col==f?(i.setAttribute("aria-sort","asc"==d[0].dir?"ascending":"descending"),c=j[d[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",
|
||||||
|
b)}}function Ua(a,b,c,e){var d=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof d[0]&&(d=a.aaSorting=[d]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(d,"0")),-1!==c?(b=g(d[c],!0),null===b&&1===d.length&&(b=0),null===b?d.splice(c,1):(d[c][1]=f[b],d[c]._idx=b)):(d.push([b,f[0],0]),d[d.length-1]._idx=0)):d.length&&d[0][0]==b?(b=g(d[0]),d.length=1,d[0][1]=f[b],d[0]._idx=b):(d.length=0,d.push([b,f[0]]),d[0]._idx=
|
||||||
|
0);N(a);"function"==typeof e&&e(a)}function Oa(a,b,c,e){var d=a.aoColumns[c];Va(b,{},function(b){!1!==d.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,e);"ssp"!==B(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,e))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,e=U(a),d=a.oFeatures,f,g;if(d.bSort&&d.bSortClasses){d=0;for(f=b.length;d<f;d++)g=b[d].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>d?d+1:3));d=0;for(f=e.length;d<f;d++)g=e[d].src,h(D(a.aoData,"anCells",
|
||||||
|
g)).addClass(c+(2>d?d+1:3))}a.aLastSort=e}function Ib(a,b){var c=a.aoColumns[b],e=m.ext.order[c.sSortDataType],d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||e)f=e?d[j]:x(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),
|
||||||
|
search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[e])}})};w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,e=a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,d]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&d.time<+new Date-1E3*b)&&e.length===
|
||||||
|
d.columns.length))){a.oLoadedState=h.extend(!0,{},d);d.start!==k&&(a._iDisplayStart=d.start,a.iInitDisplayStart=d.start);d.length!==k&&(a._iDisplayLength=d.length);d.order!==k&&(a.aaSorting=[],h.each(d.order,function(b,c){a.aaSorting.push(c[0]>=e.length?[0,c[1]]:c)}));d.search!==k&&h.extend(a.oPreviousSearch,Ab(d.search));b=0;for(c=d.columns.length;b<c;b++){var f=d.columns[b];f.visible!==k&&(e[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],Ab(f.search))}w(a,"aoStateLoaded","stateLoaded",
|
||||||
|
[a,d])}}}function za(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function I(a,b,c,e){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;e&&(c+=". For more information about this error, please see http://datatables.net/tn/"+e);if(b)Ea.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,w(a,null,"error",[a,e,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,e,c)}}function E(a,b,c,e){h.isArray(c)?
|
||||||
|
h.each(c,function(c,f){h.isArray(f)?E(a,b,f[0],f[1]):E(a,b,f)}):(e===k&&(e=c),b[c]!==k&&(a[e]=b[c]))}function Lb(a,b,c){var e,d;for(d in b)b.hasOwnProperty(d)&&(e=b[d],h.isPlainObject(e)?(h.isPlainObject(a[d])||(a[d]={}),h.extend(!0,a[d],e)):a[d]=c&&"data"!==d&&"aaData"!==d&&h.isArray(e)?e.slice():e);return a}function Va(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function z(a,
|
||||||
|
b,c,e){c&&a[b].push({fn:c,sName:e})}function w(a,b,c,e){var d=[];b&&(d=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,e)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,e),d.push(b.result));return d}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),e=a._iDisplayLength;b>=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,e=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function B(a){return a.oFeatures.bServerSide?
|
||||||
|
"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Wa(a,b){var c=[],c=Mb.numbers_length,e=Math.floor(c/2);b<=c?c=V(0,b):a<=e?(c=V(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=V(b-(c-2),b):(c=V(a-e+2,a+e-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Aa(b,a)},"num-fmt":function(b){return Aa(b,a,Xa)},"html-num":function(b){return Aa(b,a,Ba)},"html-num-fmt":function(b){return Aa(b,a,Ba,Xa)}},function(b,
|
||||||
|
c){u.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(u.type.search[b+a]=u.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,u,t,r,v,Ya={},Ob=/[\r\n]/g,Ba=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$\u00a3\u20ac\u00a5%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,J=function(a){return!a||!0===a||
|
||||||
|
"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var e="string"===typeof a;if(J(a))return!0;b&&e&&(a=Qb(a,b));c&&e&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return J(a)?!0:!(J(a)||"string"===typeof a)?null:Za(a.replace(Ba,""),b,c)?!0:null},D=function(a,b,c){var e=[],d=0,f=a.length;
|
||||||
|
if(c!==k)for(;d<f;d++)a[d]&&a[d][b]&&e.push(a[d][b][c]);else for(;d<f;d++)a[d]&&e.push(a[d][b]);return e},ia=function(a,b,c,e){var d=[],f=0,g=b.length;if(e!==k)for(;f<g;f++)a[b[f]][c]&&d.push(a[b[f]][c][e]);else for(;f<g;f++)d.push(a[b[f]][c]);return d},V=function(a,b){var c=[],e;b===k?(b=0,e=a):(e=b,b=a);for(var d=b;d<e;d++)c.push(d);return c},Sb=function(a){for(var b=[],c=0,e=a.length;c<e;c++)a[c]&&b.push(a[c]);return b},Na=function(a){var b=[],c,e,d=a.length,f,g=0;e=0;a:for(;e<d;e++){c=a[e];for(f=
|
||||||
|
0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,T=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[u.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===
|
||||||
|
k||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===k||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],h=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,h);(c===k||c)&&e.draw();return h};
|
||||||
|
this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,e,d,h){d=this.api(!0);null===b||b===k?d.search(a,c,e,h):d.column(b).search(a,c,e,h);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var e=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};
|
||||||
|
this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===
|
||||||
|
k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[u.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(d===k||d)&&h.columns.adjust();(e===k||e)&&h.draw();return 0};this.fnVersionCheck=u.fnVersionCheck;var b=this,c=a===k,e=this.length;c&&(a={});this.oApi=this.internal=u.internal;for(var d in m.ext.internal)d&&
|
||||||
|
(this[d]=Nb(d));this.each(function(){var d={},d=1<e?Lb(d,a,!0):a,g=0,j,i=this.getAttribute("id"),o=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())I(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{eb(l);fb(l.column);H(l,l,!0);H(l.column,l.column,!0);H(l,h.extend(d,q.data()));var n=m.settings,g=0;for(j=n.length;g<j;g++){var r=n[g];if(r.nTable==this||r.nTHead.parentNode==this||r.nTFoot&&r.nTFoot.parentNode==this){g=d.bRetrieve!==k?d.bRetrieve:l.bRetrieve;if(c||g)return r.oInstance;
|
||||||
|
if(d.bDestroy!==k?d.bDestroy:l.bDestroy){r.oInstance.fnDestroy();break}else{I(r,0,"Cannot reinitialise DataTable",3);return}}if(r.sTableId==this.id){n.splice(g,1);break}}if(null===i||""===i)this.id=i="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:i,sTableId:i});p.nTable=this;p.oApi=b.internal;p.oInit=d;n.push(p);p.oInstance=1===b.length?b:q.dataTable();eb(d);d.oLanguage&&P(d.oLanguage);d.aLengthMenu&&!d.iDisplayLength&&(d.iDisplayLength=
|
||||||
|
h.isArray(d.aLengthMenu[0])?d.aLengthMenu[0][0]:d.aLengthMenu[0]);d=Lb(h.extend(!0,{},l),d);E(p.oFeatures,d,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));E(p,d,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback",
|
||||||
|
"renderer","searchDelay",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);E(p.oScroll,d,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);E(p.oLanguage,d,"fnInfoCallback");z(p,"aoDrawCallback",d.fnDrawCallback,"user");z(p,"aoServerParams",d.fnServerParams,"user");z(p,"aoStateSaveParams",d.fnStateSaveParams,"user");z(p,"aoStateLoadParams",
|
||||||
|
d.fnStateLoadParams,"user");z(p,"aoStateLoaded",d.fnStateLoaded,"user");z(p,"aoRowCallback",d.fnRowCallback,"user");z(p,"aoRowCreatedCallback",d.fnCreatedRow,"user");z(p,"aoHeaderCallback",d.fnHeaderCallback,"user");z(p,"aoFooterCallback",d.fnFooterCallback,"user");z(p,"aoInitComplete",d.fnInitComplete,"user");z(p,"aoPreDrawCallback",d.fnPreDrawCallback,"user");i=p.oClasses;d.bJQueryUI?(h.extend(i,m.ext.oJUIClasses,d.oClasses),d.sDom===l.sDom&&"lfrtip"===l.sDom&&(p.sDom='<"H"lfr>t<"F"ip>'),p.renderer)?
|
||||||
|
h.isPlainObject(p.renderer)&&!p.renderer.header&&(p.renderer.header="jqueryui"):p.renderer="jqueryui":h.extend(i,m.ext.classes,d.oClasses);q.addClass(i.sTable);if(""!==p.oScroll.sX||""!==p.oScroll.sY)p.oScroll.iBarWidth=Hb();!0===p.oScroll.sX&&(p.oScroll.sX="100%");p.iInitDisplayStart===k&&(p.iInitDisplayStart=d.iDisplayStart,p._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(p.bDeferLoading=!0,g=h.isArray(d.iDeferLoading),p._iRecordsDisplay=g?d.iDeferLoading[0]:d.iDeferLoading,p._iRecordsTotal=
|
||||||
|
g?d.iDeferLoading[1]:d.iDeferLoading);var t=p.oLanguage;h.extend(!0,t,d.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){P(a);H(l.oLanguage,a);h.extend(true,t,a);ga(p)},error:function(){ga(p)}}),o=!0);null===d.asStripeClasses&&(p.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=p.asStripeClasses,s=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),p.asDestroyStripes=g.slice());
|
||||||
|
n=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(p.aoHeader,g[0]),n=qa(p));if(null===d.aoColumns){r=[];g=0;for(j=n.length;g<j;g++)r.push(null)}else r=d.aoColumns;g=0;for(j=r.length;g<j;g++)Fa(p,n?n[g]:null);ib(p,d.aoColumnDefs,r,function(a,b){ka(p,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h.each(na(p,s[0]).cells,function(a,b){var c=p.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");if(d!==null||e!==
|
||||||
|
null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ka(p,a)}}})}var v=p.oFeatures;d.bStateSave&&(v.bStateSave=!0,Kb(p,d),z(p,"aoDrawCallback",ya,"state_save"));if(d.aaSorting===k){n=p.aaSorting;g=0;for(j=n.length;g<j;g++)n[g][1]=p.aoColumns[g].asSorting[0]}xa(p);v.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=U(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});w(p,null,"order",[p,a,b]);Jb(p)}});z(p,"aoDrawCallback",
|
||||||
|
function(){(p.bSorted||B(p)==="ssp"||v.bDeferRender)&&xa(p)},"sc");gb(p);g=q.children("caption").each(function(){this._captionSide=q.css("caption-side")});j=q.children("thead");0===j.length&&(j=h("<thead/>").appendTo(this));p.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("<tbody/>").appendTo(this));p.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0<g.length&&(""!==p.oScroll.sX||""!==p.oScroll.sY))j=h("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?q.addClass(i.sNoFooter):
|
||||||
|
0<j.length&&(p.nTFoot=j[0],da(p.aoFooter,p.nTFoot));if(d.aaData)for(g=0;g<d.aaData.length;g++)K(p,d.aaData[g]);else(p.bDeferLoading||"dom"==B(p))&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=!0;!1===o&&ga(p)}});b=null;return this};var Tb=[],y=Array.prototype,cc=function(a){var b,c,e=m.settings,d=h.map(e,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,d),-1!==b?[e[b]]:
|
||||||
|
null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,d);return-1!==b?e[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a,b);var c=[],e=function(a){(a=cc(a))&&c.push.apply(c,a)};if(h.isArray(a))for(var d=0,f=a.length;d<f;d++)e(a[d]);else e(a);this.context=Na(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};
|
||||||
|
t.extend(this,this,Tb)};m.Api=t;t.prototype={any:function(){return 0!==this.flatten().length},concat:y.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(y.filter)b=y.filter.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=[];
|
||||||
|
return new t(this.context,a.concat.apply(a,this.toArray()))},join:y.join,indexOf:y.indexOf||function(a,b){for(var c=b||0,e=this.length;c<e;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,e){var d=[],f,g,h,i,o,l=this.context,q,n,m=this.selector;"string"===typeof a&&(e=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var p=new t(l[g]);if("table"===b)f=c.call(p,l[g],g),f!==k&&d.push(f);else if("columns"===b||"rows"===b)f=c.call(p,l[g],this[g],g),f!==k&&d.push(f);else if("column"===b||"column-rows"===
|
||||||
|
b||"row"===b||"cell"===b){n=this[g];"column-rows"===b&&(q=Ca(l[g],m.opts));i=0;for(o=n.length;i<o;i++)f=n[i],f="cell"===b?c.call(p,l[g],f.row,f.column,g,i):c.call(p,l[g],f,g,i,q),f!==k&&d.push(f)}}return d.length||e?(a=new t(l,a?d.concat.apply([],d):d),b=a.selector,b.rows=m.rows,b.cols=m.cols,b.opts=m.opts,a):this},lastIndexOf:y.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(y.map)b=y.map.call(this,a,this);else for(var c=
|
||||||
|
0,e=this.length;c<e;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:y.pop,push:y.push,reduce:y.reduce||function(a,b){return hb(this,a,b,0,this.length,1)},reduceRight:y.reduceRight||function(a,b){return hb(this,a,b,this.length-1,-1,-1)},reverse:y.reverse,selector:null,shift:y.shift,sort:y.sort,splice:y.splice,toArray:function(){return y.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},
|
||||||
|
unique:function(){return new t(this.context,Na(this))},unshift:y.unshift};t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var e,d,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);t.extend(d,d,c.methodExt);return d}};e=0;for(d=c.length;e<d;e++)f=c[e],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=r=function(a,b){if(h.isArray(a))for(var c=0,e=a.length;c<
|
||||||
|
e;c++)t.register(a[c],b);else for(var d=a.split("."),f=Tb,g,j,c=0,e=d.length;c<e;c++){g=(j=-1!==d[c].indexOf("()"))?d[c].replace("()",""):d[c];var i;a:{i=0;for(var o=f.length;i<o;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===e-1?i.val=b:f=j?i.methodExt:i.propExt}};t.registerPlural=v=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?new t(a.context,
|
||||||
|
a[0]):a[0]:k:a})};r("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var e=h.map(c,function(a){return a.nTable}),a=h(e).filter(a).map(function(){var a=h.inArray(this,e);return c[a]}).toArray();b=new b(a)}else b=this;return b});r("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});v("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});v("tables().body()","table().body()",
|
||||||
|
function(){return this.iterator("table",function(a){return a.nTBody},1)});v("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});v("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});v("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});r("draw()",function(a){return this.iterator("table",function(b){N(b,
|
||||||
|
!1===a)})});r("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});r("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,e=a.fnRecordsDisplay(),d=-1===c;return{page:d?0:Math.floor(b/c),pages:d?1:Math.ceil(e/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:e}});r("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:
|
||||||
|
k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var e=new t(a);e.one("draw",function(){c(e.ajax.json())})}"ssp"==B(a)?N(a,b):(C(a,!0),ra(a,[],function(c){oa(a);for(var c=sa(a,c),e=0,g=c.length;e<g;e++)K(a,c[e]);N(a,b);C(a,!1)}))};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,
|
||||||
|
!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});var $a=function(a,b,c,e,d){var f=[],g,j,i,o,l,q;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(o=b.length;i<o;i++){j=
|
||||||
|
b[i]&&b[i].split?b[i].split(","):[b[i]];l=0;for(q=j.length;l<q;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&f.push.apply(f,g)}a=u.selector[a];if(a.length){i=0;for(o=a.length;i<o;i++)f=a[i](e,d,f)}return f},ab=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},
|
||||||
|
Ca=function(a,b){var c,e,d,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;e=b.order;d=b.page;if("ssp"==B(a))return"removed"===j?[]:V(0,c.length);if("current"==d){c=a._iDisplayStart;for(e=a.fnDisplayEnd();c<e;c++)f.push(g[c])}else if("current"==e||"applied"==e)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==e||"original"==e){c=0;for(e=a.aoData.length;c<e;c++)"none"==j?f.push(c):(d=h.inArray(c,g),(-1===d&&"removed"==j||0<=d&&
|
||||||
|
"applied"==j)&&f.push(c))}return f};r("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=b;return $a("row",a,function(a){var b=Pb(a);if(b!==null&&!d)return[b];var j=Ca(c,d);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;if(typeof a==="function")return h.map(j,function(b){var d=c.aoData[b];return a(b,d._aData,d.nTr)?b:null});b=Sb(ia(c.aoData,j,"nTr"));return a.nodeName&&h.inArray(a,b)!==-1?[a._DT_RowIndex]:h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},
|
||||||
|
c,d)},1);c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});v("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var e=b.aoData[c];return"search"===a?e._aFilterData:e._aSortData},1)});v("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",
|
||||||
|
function(b,c){ca(b,c,a)})});v("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});v("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,e){var d=b.aoData;d.splice(c,1);for(var f=0,g=d.length;f<g;f++)null!==d[f].nTr&&(d[f].nTr._DT_RowIndex=f);h.inArray(c,b.aiDisplay);pa(b.aiDisplayMaster,c);pa(b.aiDisplay,c);pa(a[e],c,!1);Sa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,
|
||||||
|
f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(K(b,c));return h},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return bb(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?
|
||||||
|
a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:K(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;c.length&&(c=c[0].aoData[b!==k?b:a[0]],c._details&&(c._details.remove(),c._detailsShow=k,c._details=k))},Vb=function(a,b){var c=a.context;if(c.length&&a.length){var e=c[0].aoData[a[0]];if(e._details){(e._detailsShow=b)?e._details.insertAfter(e.nTr):
|
||||||
|
e._details.detach();var d=c[0],f=new t(d),g=d.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){d===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(d===b)for(var c,e=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",e)}),f.on("destroy.dt.DT_details",
|
||||||
|
function(a,b){if(d===b)for(var c=0,e=g.length;c<e;c++)g[c]._details&&cb(f,c)}))}}};r("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var e=c[0],c=c[0].aoData[this[0]],d=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?d.push(a):(c=h("<tr><td/></tr>").addClass(b),
|
||||||
|
h("td",c).addClass(b).html(a)[0].colSpan=aa(e),d.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(d);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});r(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});r("row().child.isShown()",function(){var a=this.context;return a.length&&
|
||||||
|
this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,e,d){for(var c=[],e=0,f=d.length;e<f;e++)c.push(x(a,d[e],b));return c};r("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return $a("column",d,function(a){var b=Pb(a);if(a==="")return V(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var d=Ca(c,
|
||||||
|
f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,d),i[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[la(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null})}else return h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});v("columns().header()",
|
||||||
|
"column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});v("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});v("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});v("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});v("columns().cache()","column().cache()",
|
||||||
|
function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});v("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,e,d){return ia(a.aoData,d,"anCells",b)},1)});v("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===k)return c.aoColumns[e].bVisible;var d=c.aoColumns,f=d[e],g=c.aoData,j,i,m;if(a!==k&&f.bVisible!==a){if(a){var l=
|
||||||
|
h.inArray(!0,D(d,"bVisible"),e+1);j=0;for(i=g.length;j<i;j++)m=g[j].nTr,d=g[j].anCells,m&&m.insertBefore(d[e],d[l]||null)}else h(D(c.aoData,"anCells",e)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);if(b===k||b)X(c),(c.oScroll.sX||c.oScroll.sY)&&Y(c);w(c,null,"column-visibility",[c,e,a]);ya(c)}})});v("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});r("columns.adjust()",function(){return this.iterator("table",
|
||||||
|
function(a){X(a)},1)});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return la(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});r("column()",function(a,b){return bb(this.columns(a,b))});r("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=b.aoData,g=Ca(b,e),i=Sb(ia(f,g,"anCells")),
|
||||||
|
j=h([].concat.apply([],i)),l,m=b.aoColumns.length,o,r,t,s,u,v;return $a("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){o=[];r=0;for(t=g.length;r<t;r++){l=g[r];for(s=0;s<m;s++){u={row:l,column:s};if(c){v=b.aoData[l];a(u,x(b,l,s),v.anCells?v.anCells[s]:null)&&o.push(u)}else o.push(u)}}return o}return h.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){l=b.parentNode._DT_RowIndex;return{row:l,column:h.inArray(b,f[l].anCells)}}).toArray()},b,e)});var e=this.columns(b,c),d=this.rows(a,
|
||||||
|
c),f,g,j,i,m,l=this.iterator("table",function(a,b){f=[];g=0;for(j=d[b].length;g<j;g++){i=0;for(m=e[b].length;i<m;i++)f.push({row:d[b][g],column:e[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});v("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:k},1)});r("cells().data()",function(){return this.iterator("cell",function(a,b,c){return x(a,b,c)},1)});v("cells().cache()","cell().cache()",function(a){a=
|
||||||
|
"search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,e){return b.aoData[c][a][e]},1)});v("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,e){return x(b,c,e,a)},1)});v("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});v("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,e){ca(b,c,a,e)})});r("cell()",
|
||||||
|
function(a,b,c){return bb(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?x(b[0],c[0].row,c[0].column):k;Ia(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});
|
||||||
|
r("order.listener()",function(a,b,c){return this.iterator("table",function(e){Oa(e,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,e){var d=[];h.each(b[e],function(b,c){d.push([c,a])});c.aaSorting=d})});r("search()",function(a,b,c,e){var d=this.context;return a===k?0!==d.length?d[0].oPreviousSearch.sSearch:k:this.iterator("table",function(d){d.oFeatures.bFilter&&fa(d,h.extend({},d.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:
|
||||||
|
b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),1)})});v("columns().search()","column().search()",function(a,b,c,e){return this.iterator("column",function(d,f){var g=d.aoPreSearchCols;if(a===k)return g[f].sSearch;d.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),fa(d,d.oPreviousSearch,1))})});r("state()",function(){return this.context.length?this.context[0].oSavedState:null});r("state.clear()",function(){return this.iterator("table",
|
||||||
|
function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});r("state.save()",function(){return this.iterator("table",function(a){ya(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,e,d=0,f=a.length;d<f;d++)if(c=parseInt(b[d],10)||0,e=parseInt(a[d],10)||0,c!==e)return c>e;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,
|
||||||
|
function(a,d){var f=d.nScrollHead?h("table",d.nScrollHead)[0]:null,g=d.nScrollFoot?h("table",d.nScrollFoot)[0]:null;if(d.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){return h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable})};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=H;r("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,
|
||||||
|
b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=h(this.tables().nodes());e[b].apply(e,a);return this})});r("clear()",function(){return this.iterator("table",function(a){oa(a)})});r("settings()",function(){return new t(this.context,this.context)});r("init()",function(){var a=this.context;return a.length?a[0].oInit:null});r("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});r("destroy()",
|
||||||
|
function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(d),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),q;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Ea).unbind(".DT-"+b.sInstance);d!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&d!=j.parentNode&&(i.children("tfoot").detach(),
|
||||||
|
i.append(j));i.detach();k.detach();b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(e.sSortable+" "+e.sSortableAsc+" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(h("th span."+e.sSortIcon+", td span."+e.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+e.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore);f.children().detach();f.append(l);i.css("width",b.sDestroyWidth).removeClass(e.sTable);
|
||||||
|
(q=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%q])});c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){r(b+"s().every()",function(a){return this.iterator(b,function(e,d,f){a.call((new t(e))[b](d,f))})})});r("i18n()",function(a,b,c){var e=this.context[0],a=R(a)(e.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.7";m.settings=
|
||||||
|
[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",
|
||||||
|
sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,
|
||||||
|
fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,
|
||||||
|
fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},
|
||||||
|
sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,
|
||||||
|
sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};W(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};W(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,
|
||||||
|
bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],
|
||||||
|
sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,
|
||||||
|
bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==B(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==B(this)?1*this._iRecordsDisplay:
|
||||||
|
this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};m.ext=u={buttons:{},classes:{},errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},
|
||||||
|
header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(u,{afnFiltering:u.search,aTypes:u.type.detect,ofnSearch:u.type.search,oSort:u.type.order,afnSortData:u.order,aoFeatures:u.feature,oApi:u.internal,oStdClasses:u.classes,oPagination:u.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",
|
||||||
|
sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",
|
||||||
|
sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Da="",Da="",F=Da+"ui-state-default",ja=Da+"css_right ui-icon ui-icon-",Xb=Da+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,
|
||||||
|
m.ext.classes,{sPageButton:"fg-button ui-button "+F,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:F+" sorting_asc",sSortDesc:F+" sorting_desc",sSortable:F+" sorting",sSortableAsc:F+" sorting_asc_disabled",sSortableDesc:F+" sorting_desc_disabled",sSortableNone:F+" sorting_disabled",sSortJUIAsc:ja+"triangle-1-n",sSortJUIDesc:ja+"triangle-1-s",sSortJUI:ja+"carat-2-n-s",
|
||||||
|
sSortJUIAscAllowed:ja+"carat-1-n",sSortJUIDescAllowed:ja+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+F,sScrollFoot:"dataTables_scrollFoot "+F,sHeaderTH:F,sFooterTH:F,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous",
|
||||||
|
Wa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Wa(a,b),"next","last"]},_numbers:Wa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i,k,l=0,m=function(b,e){var n,r,t,s,u=function(b){Ta(a,b.data.action,true)};n=0;for(r=e.length;n<r;n++){s=e[n];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);m(t,s)}else{k=i="";switch(s){case "ellipsis":b.append('<span class="ellipsis">…</span>');break;
|
||||||
|
case "first":i=j.sFirst;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "previous":i=j.sPrevious;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "next":i=j.sNext;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;case "last":i=j.sLast;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;default:i=s+1;k=d===s?g.sPageButtonActive:""}if(i){t=h("<a>",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(i).appendTo(b);
|
||||||
|
Va(t,{action:s},u);l++}}}},n;try{n=h(Q.activeElement).data("dt-idx")}catch(r){}m(h(b).empty(),e);n&&h(b).find("[data-dt-idx="+n+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||J(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;
|
||||||
|
return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return J(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ba,""):""},string:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Aa=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),
|
||||||
|
e&&(a=a.replace(e,"")));return 1*a};h.extend(u.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return J(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return J(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,e){h(a.nTable).on("order.dt.DT",function(d,
|
||||||
|
f,g,h){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){h("<div/>").addClass(e.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(e.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(d,f,g,h){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass);
|
||||||
|
b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(h[d]=="asc"?e.sSortJUIAsc:h[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,e){return{display:function(d){if("number"!==typeof d&&"string"!==typeof d)return d;var f=0>d?"-":"",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):"";return f+(e||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
|
||||||
|
a)+d}}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,_fnAjaxDataSrc:sa,_fnAddColumn:Fa,_fnColumnOptions:ka,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:la,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ha,_fnApplyColumnDefs:ib,_fnHungarianMap:W,_fnCamelToHungarian:H,_fnLanguageCompat:P,_fnBrowserDetect:gb,_fnAddData:K,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:
|
||||||
|
null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:x,_fnSetCellData:Ia,_fnSplitObjNotation:Ka,_fnGetObjectDataFn:R,_fnSetObjectDataFn:S,_fnGetDataMaster:La,_fnClearTable:oa,_fnDeleteIndex:pa,_fnInvalidate:ca,_fnGetRowElements:na,_fnCreateTr:Ja,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:M,_fnReDraw:N,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Qa,
|
||||||
|
_fnEscapeRegex:va,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:Y,_fnApplyToChildren:G,_fnCalculateColumnWidths:Ga,_fnThrottle:ua,_fnConvertToWidth:Db,_fnScrollingWidthAdjust:Fb,_fnGetWidestNode:Eb,_fnGetMaxLenString:Gb,_fnStringToCss:s,_fnScrollBarWidth:Hb,_fnSortFlatten:U,
|
||||||
|
_fnSort:lb,_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:I,_fnMap:E,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:B,_fnRowAttributes:Ma,_fnCalculateEnd:function(){}});h.fn.dataTable=m;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=
|
||||||
|
b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],P):"object"===typeof exports?module.exports=P(require("jquery")):jQuery&&!jQuery.fn.dataTable&&P(jQuery)})(window,document);
|
15129
externals/jquery.datatables.js
vendored
Normal file
14950
externals/jquery.datatables_ase.js
vendored
Normal file
11
externals/jquery.js
vendored
Normal file
5
externals/jquery.min.js
vendored
Normal file
544
externals/jquery.typeahead.css
vendored
Normal file
@ -0,0 +1,544 @@
|
|||||||
|
.typeahead__container {
|
||||||
|
/**
|
||||||
|
* Restore the font weight unset by the previous rule.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Show the overflow in IE.
|
||||||
|
* 1. Show the overflow in Edge.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||||
|
* 1. Remove the inheritance of text transform in Firefox.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
|
||||||
|
* controls in Android 4.
|
||||||
|
* 2. Correct the inability to style clickable types in iOS and Safari.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Remove the inner border and padding in Firefox.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Restore the focus styles unset by the previous rule.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Change the border, margin, and padding in all browsers (opinionated).
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Correct the text wrapping in Edge and IE.
|
||||||
|
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||||
|
* 3. Remove the padding so developers are not caught out when they zero out
|
||||||
|
* `fieldset` elements in all browsers.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Remove the default vertical scrollbar in IE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Add the correct box sizing in IE 10-.
|
||||||
|
* 2. Remove the padding in IE 10-.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Correct the odd appearance in Chrome and Safari.
|
||||||
|
* 2. Correct the outline style in Safari.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Correct the text style of placeholders in Chrome, Edge, and Safari.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||||
|
* 2. Change font properties to `inherit` in Safari.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button,
|
||||||
|
.typeahead__container input,
|
||||||
|
.typeahead__container optgroup,
|
||||||
|
.typeahead__container select,
|
||||||
|
.typeahead__container textarea {
|
||||||
|
font: inherit;
|
||||||
|
/* 1 */
|
||||||
|
margin: 0;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container optgroup {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button,
|
||||||
|
.typeahead__container input {
|
||||||
|
/* 1 */
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button,
|
||||||
|
.typeahead__container select {
|
||||||
|
/* 1 */
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button,
|
||||||
|
.typeahead__container html [type="button"],
|
||||||
|
.typeahead__container [type="reset"],
|
||||||
|
.typeahead__container [type="submit"] {
|
||||||
|
-webkit-appearance: button;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button::-moz-focus-inner,
|
||||||
|
.typeahead__container [type="button"]::-moz-focus-inner,
|
||||||
|
.typeahead__container [type="reset"]::-moz-focus-inner,
|
||||||
|
.typeahead__container [type="submit"]::-moz-focus-inner {
|
||||||
|
border-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button:-moz-focusring,
|
||||||
|
.typeahead__container [type="button"]:-moz-focusring,
|
||||||
|
.typeahead__container [type="reset"]:-moz-focusring,
|
||||||
|
.typeahead__container [type="submit"]:-moz-focusring {
|
||||||
|
outline: 1px dotted ButtonText;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container fieldset {
|
||||||
|
border: 1px solid #c0c0c0;
|
||||||
|
margin: 0 2px;
|
||||||
|
padding: 0.35em 0.625em 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container legend {
|
||||||
|
box-sizing: border-box;
|
||||||
|
/* 1 */
|
||||||
|
color: inherit;
|
||||||
|
/* 2 */
|
||||||
|
display: table;
|
||||||
|
/* 1 */
|
||||||
|
max-width: 100%;
|
||||||
|
/* 1 */
|
||||||
|
padding: 0;
|
||||||
|
/* 3 */
|
||||||
|
white-space: normal;
|
||||||
|
/* 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container textarea {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container [type="checkbox"],
|
||||||
|
.typeahead__container [type="radio"] {
|
||||||
|
box-sizing: border-box;
|
||||||
|
/* 1 */
|
||||||
|
padding: 0;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container [type="number"]::-webkit-inner-spin-button,
|
||||||
|
.typeahead__container [type="number"]::-webkit-outer-spin-button {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container [type="search"] {
|
||||||
|
-webkit-appearance: textfield;
|
||||||
|
/* 1 */
|
||||||
|
outline-offset: -2px;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container [type="search"]::-webkit-search-cancel-button,
|
||||||
|
.typeahead__container [type="search"]::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container ::-webkit-input-placeholder {
|
||||||
|
color: inherit;
|
||||||
|
opacity: 0.54;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container ::-webkit-file-upload-button {
|
||||||
|
-webkit-appearance: button;
|
||||||
|
/* 1 */
|
||||||
|
font: inherit;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container {
|
||||||
|
position: relative;
|
||||||
|
font: 14px Lato, "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container * {
|
||||||
|
box-sizing: border-box;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__query {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter button {
|
||||||
|
min-width: 100%;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter button:after {
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: 4px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
vertical-align: -2px;
|
||||||
|
content: "";
|
||||||
|
border: 4px solid;
|
||||||
|
border-right-color: transparent;
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
border-left-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field {
|
||||||
|
font-size: 0;
|
||||||
|
position: relative;
|
||||||
|
display: table;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field > * {
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__query, .typeahead__filter, .typeahead__button {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__button {
|
||||||
|
position: relative;
|
||||||
|
font-size: 0;
|
||||||
|
width: 1%;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__button button {
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field input {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 32px;
|
||||||
|
padding: 6px 12px;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 2px 0 0 2px;
|
||||||
|
transition: all ease-in-out .15s;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field input:focus, .typeahead__field input:active {
|
||||||
|
border-color: #66afe9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field input[type="search"],
|
||||||
|
.typeahead__field input[type="search"]::-webkit-search-cancel-button {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field input[type="search"]::-ms-clear {
|
||||||
|
display: none;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.hint .typeahead__field input {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.hint .typeahead__field input:last-child, .typeahead__hint {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 0;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
-ms-touch-action: manipulation;
|
||||||
|
touch-action: manipulation;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
height: 32px;
|
||||||
|
padding: 6px 12px;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button:hover, .typeahead__container button:focus {
|
||||||
|
color: #3c3c3c;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-color: #b3b3b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button:active, .typeahead__container button.active {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button:focus, .typeahead__container button:active {
|
||||||
|
border-color: #66afe9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container input.disabled,
|
||||||
|
.typeahead__container input[disabled],
|
||||||
|
.typeahead__container button.disabled,
|
||||||
|
.typeahead__container button[disabled] {
|
||||||
|
cursor: not-allowed;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0.65;
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #fff;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter, .typeahead__button {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter button, .typeahead__button button {
|
||||||
|
margin-left: -1px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter:hover, .typeahead__filter:active, .typeahead__filter:focus, .typeahead__button:hover, .typeahead__button:active, .typeahead__button:focus {
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter:hover button:focus, .typeahead__filter:hover button:active, .typeahead__filter:active button:focus, .typeahead__filter:active button:active, .typeahead__filter:focus button:focus, .typeahead__filter:focus button:active, .typeahead__button:hover button:focus, .typeahead__button:hover button:active, .typeahead__button:active button:focus, .typeahead__button:active button:active, .typeahead__button:focus button:focus, .typeahead__button:focus button:active {
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter + .typeahead__button button {
|
||||||
|
margin-left: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.filter .typeahead__filter {
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list, .typeahead__dropdown {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1000;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 160px;
|
||||||
|
padding: 5px 0;
|
||||||
|
margin: 2px 0 0;
|
||||||
|
list-style: none;
|
||||||
|
text-align: left;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-clip: padding-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__result.detached .typeahead__list {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1041;
|
||||||
|
top: initial;
|
||||||
|
left: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__dropdown {
|
||||||
|
right: 0;
|
||||||
|
left: initial;
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li {
|
||||||
|
position: relative;
|
||||||
|
border-top: solid 1px #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li:first-child {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li > a,
|
||||||
|
.typeahead__dropdown > li > a {
|
||||||
|
display: block;
|
||||||
|
padding: 6px 12px;
|
||||||
|
clear: both;
|
||||||
|
color: #333333;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li > a:hover,
|
||||||
|
.typeahead__list > li > a:focus,
|
||||||
|
.typeahead__list > li.active > a,
|
||||||
|
.typeahead__dropdown > li > a:hover,
|
||||||
|
.typeahead__dropdown > li > a:focus,
|
||||||
|
.typeahead__dropdown > li.active > a {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
color: #3c3c3c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list.empty > li > a {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list.empty > li > a:hover,
|
||||||
|
.typeahead__list.empty > li > a:focus,
|
||||||
|
.typeahead__list.empty > li.active > a {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li.typeahead__group {
|
||||||
|
border-color: #bfdef6;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li.typeahead__group:first-child {
|
||||||
|
border-top: solid 1px #bfdef6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li.typeahead__group > a,
|
||||||
|
.typeahead__list > li.typeahead__group > a:hover,
|
||||||
|
.typeahead__list > li.typeahead__group > a:focus,
|
||||||
|
.typeahead__list > li.typeahead__group.active > a {
|
||||||
|
cursor: default;
|
||||||
|
color: #17639f;
|
||||||
|
background: #ecf5fc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li.typeahead__group + li.typeahead__item {
|
||||||
|
border-color: #bfdef6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.result .typeahead__list,
|
||||||
|
.typeahead__container.filter .typeahead__dropdown,
|
||||||
|
.typeahead__container.hint .typeahead__hint,
|
||||||
|
.typeahead__container.backdrop + .typeahead__backdrop {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container .typeahead__list,
|
||||||
|
.typeahead__container .typeahead__dropdown,
|
||||||
|
.typeahead__container .typeahead__hint,
|
||||||
|
.typeahead__container + .typeahead__backdrop {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__dropdown li:last-child {
|
||||||
|
margin-top: 5px;
|
||||||
|
padding-top: 5px;
|
||||||
|
border-top: solid 1px #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__cancel-button {
|
||||||
|
visibility: hidden;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
position: absolute;
|
||||||
|
top: 8px;
|
||||||
|
right: .8em;
|
||||||
|
cursor: pointer;
|
||||||
|
background: url(data:image/svg+xml;charset=utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDQzOC41MzMgNDM4LjUzMyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDM4LjUzMyA0MzguNTMzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTQwOS4xMzMsMTA5LjIwM2MtMTkuNjA4LTMzLjU5Mi00Ni4yMDUtNjAuMTg5LTc5Ljc5OC03OS43OTZDMjk1LjczNiw5LjgwMSwyNTkuMDU4LDAsMjE5LjI3MywwICAgYy0zOS43ODEsMC03Ni40Nyw5LjgwMS0xMTAuMDYzLDI5LjQwN2MtMzMuNTk1LDE5LjYwNC02MC4xOTIsNDYuMjAxLTc5LjgsNzkuNzk2QzkuODAxLDE0Mi44LDAsMTc5LjQ4OSwwLDIxOS4yNjcgICBjMCwzOS43OCw5LjgwNCw3Ni40NjMsMjkuNDA3LDExMC4wNjJjMTkuNjA3LDMzLjU5Miw0Ni4yMDQsNjAuMTg5LDc5Ljc5OSw3OS43OThjMzMuNTk3LDE5LjYwNSw3MC4yODMsMjkuNDA3LDExMC4wNjMsMjkuNDA3ICAgczc2LjQ3LTkuODAyLDExMC4wNjUtMjkuNDA3YzMzLjU5My0xOS42MDIsNjAuMTg5LTQ2LjIwNiw3OS43OTUtNzkuNzk4YzE5LjYwMy0zMy41OTYsMjkuNDAzLTcwLjI4NCwyOS40MDMtMTEwLjA2MiAgIEM0MzguNTMzLDE3OS40ODUsNDI4LjczMiwxNDIuNzk1LDQwOS4xMzMsMTA5LjIwM3ogTTMyMi42MjEsMjcwLjkzOWMzLjYxNywzLjYxMyw1LjQyOCw3LjkwNSw1LjQyOCwxMi44NTQgICBjMCw1LjEzMy0xLjgxMSw5LjUxNC01LjQyOCwxMy4xMjdsLTI1LjY5MywyNS43MDFjLTMuNjE0LDMuNjEzLTcuOTk0LDUuNDItMTMuMTM1LDUuNDJjLTQuOTQ4LDAtOS4yMzYtMS44MDctMTIuODQ3LTUuNDIgICBsLTUxLjY3Ni01MS42ODJsLTUxLjY3OCw1MS42ODJjLTMuNjE2LDMuNjEzLTcuODk4LDUuNDItMTIuODQ3LDUuNDJjLTUuMTQsMC05LjUxNy0xLjgwNy0xMy4xMzQtNS40MmwtMjUuNjk3LTI1LjcwMSAgIGMtMy42MTYtMy42MTMtNS40MjQtNy45OTQtNS40MjQtMTMuMTI3YzAtNC45NDgsMS44MDktOS4yNCw1LjQyNC0xMi44NTRsNTEuNjc4LTUxLjY3M2wtNTEuNjc4LTUxLjY3OCAgIGMtMy42MTYtMy42MTItNS40MjQtNy44OTgtNS40MjQtMTIuODQ3YzAtNS4xNCwxLjgwOS05LjUxNyw1LjQyNC0xMy4xMzRsMjUuNjk3LTI1LjY5M2MzLjYxNy0zLjYxNiw3Ljk5NC01LjQyNCwxMy4xMzQtNS40MjQgICBjNC45NDksMCw5LjIzMSwxLjgwOSwxMi44NDcsNS40MjRsNTEuNjc4LDUxLjY3NGw1MS42NzYtNTEuNjc0YzMuNjEtMy42MTYsNy44OTgtNS40MjQsMTIuODQ3LTUuNDI0ICAgYzUuMTQxLDAsOS41MjEsMS44MDksMTMuMTM1LDUuNDI0bDI1LjY5MywyNS42OTNjMy42MTcsMy42MTcsNS40MjgsNy45OTQsNS40MjgsMTMuMTM0YzAsNC45NDgtMS44MTEsOS4yMzUtNS40MjgsMTIuODQ3ICAgbC01MS42NzUsNTEuNjc4TDMyMi42MjEsMjcwLjkzOXoiIGZpbGw9IiM1NTU1NTUiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K) no-repeat scroll center center transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.cancel:not(.loading) .typeahead__cancel-button {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: .25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.cancel:not(.loading) .typeahead__cancel-button:hover {
|
||||||
|
opacity: .4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__search-icon {
|
||||||
|
padding: 0 1.25rem;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
display: block;
|
||||||
|
background: url(data:image/svg+xml;charset=utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI1MC4zMTMgMjUwLjMxMyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjUwLjMxMyAyNTAuMzEzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CjxnIGlkPSJTZWFyY2giPgoJPHBhdGggc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkOyIgZD0iTTI0NC4xODYsMjE0LjYwNGwtNTQuMzc5LTU0LjM3OGMtMC4yODktMC4yODktMC42MjgtMC40OTEtMC45My0wLjc2ICAgYzEwLjctMTYuMjMxLDE2Ljk0NS0zNS42NiwxNi45NDUtNTYuNTU0QzIwNS44MjIsNDYuMDc1LDE1OS43NDcsMCwxMDIuOTExLDBTMCw0Ni4wNzUsMCwxMDIuOTExICAgYzAsNTYuODM1LDQ2LjA3NCwxMDIuOTExLDEwMi45MSwxMDIuOTExYzIwLjg5NSwwLDQwLjMyMy02LjI0NSw1Ni41NTQtMTYuOTQ1YzAuMjY5LDAuMzAxLDAuNDcsMC42NCwwLjc1OSwwLjkyOWw1NC4zOCw1NC4zOCAgIGM4LjE2OSw4LjE2OCwyMS40MTMsOC4xNjgsMjkuNTgzLDBDMjUyLjM1NCwyMzYuMDE3LDI1Mi4zNTQsMjIyLjc3MywyNDQuMTg2LDIxNC42MDR6IE0xMDIuOTExLDE3MC4xNDYgICBjLTM3LjEzNCwwLTY3LjIzNi0zMC4xMDItNjcuMjM2LTY3LjIzNWMwLTM3LjEzNCwzMC4xMDMtNjcuMjM2LDY3LjIzNi02Ny4yMzZjMzcuMTMyLDAsNjcuMjM1LDMwLjEwMyw2Ny4yMzUsNjcuMjM2ICAgQzE3MC4xNDYsMTQwLjA0NCwxNDAuMDQzLDE3MC4xNDYsMTAyLjkxMSwxNzAuMTQ2eiIgZmlsbD0iIzU1NTU1NSIvPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=) no-repeat scroll center center transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.loading .typeahead__query:before, .typeahead__container.loading .typeahead__query:after {
|
||||||
|
transition: all 0s linear, opacity 0.2s ease;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 3;
|
||||||
|
content: '';
|
||||||
|
top: 50%;
|
||||||
|
right: .55em;
|
||||||
|
margin-top: -10.5px;
|
||||||
|
width: 21px;
|
||||||
|
height: 21px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 500rem;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: .1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.loading .typeahead__query:before {
|
||||||
|
border-color: rgba(0, 0, 0, 0.35);
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.loading .typeahead__query:after {
|
||||||
|
-webkit-animation: button-spin 0.6s linear;
|
||||||
|
animation: button-spin 0.6s linear;
|
||||||
|
-webkit-animation-iteration-count: infinite;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
border-color: #fff transparent transparent;
|
||||||
|
box-shadow: 0 0 0 1px transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes button-spin {
|
||||||
|
from {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes button-spin {
|
||||||
|
from {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
3083
externals/jquery.typeahead.js
vendored
Normal file
1
externals/jquery.typeahead.min.css
vendored
Normal file
11
externals/jquery.typeahead.min.js
vendored
Normal file
497
externals/jquery.ui.position.js
vendored
Normal file
@ -0,0 +1,497 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery UI Position v1.10.0
|
||||||
|
* http://jqueryui.com
|
||||||
|
*
|
||||||
|
* Copyright 2013 jQuery Foundation and other contributors
|
||||||
|
* Released under the MIT license.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://api.jqueryui.com/position/
|
||||||
|
*/
|
||||||
|
(function( $, undefined ) {
|
||||||
|
|
||||||
|
$.ui = $.ui || {};
|
||||||
|
|
||||||
|
var cachedScrollbarWidth,
|
||||||
|
max = Math.max,
|
||||||
|
abs = Math.abs,
|
||||||
|
round = Math.round,
|
||||||
|
rhorizontal = /left|center|right/,
|
||||||
|
rvertical = /top|center|bottom/,
|
||||||
|
roffset = /[\+\-]\d+%?/,
|
||||||
|
rposition = /^\w+/,
|
||||||
|
rpercent = /%$/,
|
||||||
|
_position = $.fn.position;
|
||||||
|
|
||||||
|
function getOffsets( offsets, width, height ) {
|
||||||
|
return [
|
||||||
|
parseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
|
||||||
|
parseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseCss( element, property ) {
|
||||||
|
return parseInt( $.css( element, property ), 10 ) || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDimensions( elem ) {
|
||||||
|
var raw = elem[0];
|
||||||
|
if ( raw.nodeType === 9 ) {
|
||||||
|
return {
|
||||||
|
width: elem.width(),
|
||||||
|
height: elem.height(),
|
||||||
|
offset: { top: 0, left: 0 }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if ( $.isWindow( raw ) ) {
|
||||||
|
return {
|
||||||
|
width: elem.width(),
|
||||||
|
height: elem.height(),
|
||||||
|
offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if ( raw.preventDefault ) {
|
||||||
|
return {
|
||||||
|
width: 0,
|
||||||
|
height: 0,
|
||||||
|
offset: { top: raw.pageY, left: raw.pageX }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
width: elem.outerWidth(),
|
||||||
|
height: elem.outerHeight(),
|
||||||
|
offset: elem.offset()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$.position = {
|
||||||
|
scrollbarWidth: function() {
|
||||||
|
if ( cachedScrollbarWidth !== undefined ) {
|
||||||
|
return cachedScrollbarWidth;
|
||||||
|
}
|
||||||
|
var w1, w2,
|
||||||
|
div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
|
||||||
|
innerDiv = div.children()[0];
|
||||||
|
|
||||||
|
$( "body" ).append( div );
|
||||||
|
w1 = innerDiv.offsetWidth;
|
||||||
|
div.css( "overflow", "scroll" );
|
||||||
|
|
||||||
|
w2 = innerDiv.offsetWidth;
|
||||||
|
|
||||||
|
if ( w1 === w2 ) {
|
||||||
|
w2 = div[0].clientWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.remove();
|
||||||
|
|
||||||
|
return (cachedScrollbarWidth = w1 - w2);
|
||||||
|
},
|
||||||
|
getScrollInfo: function( within ) {
|
||||||
|
var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ),
|
||||||
|
overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ),
|
||||||
|
hasOverflowX = overflowX === "scroll" ||
|
||||||
|
( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
|
||||||
|
hasOverflowY = overflowY === "scroll" ||
|
||||||
|
( overflowY === "auto" && within.height < within.element[0].scrollHeight );
|
||||||
|
return {
|
||||||
|
width: hasOverflowX ? $.position.scrollbarWidth() : 0,
|
||||||
|
height: hasOverflowY ? $.position.scrollbarWidth() : 0
|
||||||
|
};
|
||||||
|
},
|
||||||
|
getWithinInfo: function( element ) {
|
||||||
|
var withinElement = $( element || window ),
|
||||||
|
isWindow = $.isWindow( withinElement[0] );
|
||||||
|
return {
|
||||||
|
element: withinElement,
|
||||||
|
isWindow: isWindow,
|
||||||
|
offset: withinElement.offset() || { left: 0, top: 0 },
|
||||||
|
scrollLeft: withinElement.scrollLeft(),
|
||||||
|
scrollTop: withinElement.scrollTop(),
|
||||||
|
width: isWindow ? withinElement.width() : withinElement.outerWidth(),
|
||||||
|
height: isWindow ? withinElement.height() : withinElement.outerHeight()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.position = function( options ) {
|
||||||
|
if ( !options || !options.of ) {
|
||||||
|
return _position.apply( this, arguments );
|
||||||
|
}
|
||||||
|
|
||||||
|
// make a copy, we don't want to modify arguments
|
||||||
|
options = $.extend( {}, options );
|
||||||
|
|
||||||
|
var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
|
||||||
|
target = $( options.of ),
|
||||||
|
within = $.position.getWithinInfo( options.within ),
|
||||||
|
scrollInfo = $.position.getScrollInfo( within ),
|
||||||
|
collision = ( options.collision || "flip" ).split( " " ),
|
||||||
|
offsets = {};
|
||||||
|
|
||||||
|
dimensions = getDimensions( target );
|
||||||
|
if ( target[0].preventDefault ) {
|
||||||
|
// force left top to allow flipping
|
||||||
|
options.at = "left top";
|
||||||
|
}
|
||||||
|
targetWidth = dimensions.width;
|
||||||
|
targetHeight = dimensions.height;
|
||||||
|
targetOffset = dimensions.offset;
|
||||||
|
// clone to reuse original targetOffset later
|
||||||
|
basePosition = $.extend( {}, targetOffset );
|
||||||
|
|
||||||
|
// force my and at to have valid horizontal and vertical positions
|
||||||
|
// if a value is missing or invalid, it will be converted to center
|
||||||
|
$.each( [ "my", "at" ], function() {
|
||||||
|
var pos = ( options[ this ] || "" ).split( " " ),
|
||||||
|
horizontalOffset,
|
||||||
|
verticalOffset;
|
||||||
|
|
||||||
|
if ( pos.length === 1) {
|
||||||
|
pos = rhorizontal.test( pos[ 0 ] ) ?
|
||||||
|
pos.concat( [ "center" ] ) :
|
||||||
|
rvertical.test( pos[ 0 ] ) ?
|
||||||
|
[ "center" ].concat( pos ) :
|
||||||
|
[ "center", "center" ];
|
||||||
|
}
|
||||||
|
pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
|
||||||
|
pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
|
||||||
|
|
||||||
|
// calculate offsets
|
||||||
|
horizontalOffset = roffset.exec( pos[ 0 ] );
|
||||||
|
verticalOffset = roffset.exec( pos[ 1 ] );
|
||||||
|
offsets[ this ] = [
|
||||||
|
horizontalOffset ? horizontalOffset[ 0 ] : 0,
|
||||||
|
verticalOffset ? verticalOffset[ 0 ] : 0
|
||||||
|
];
|
||||||
|
|
||||||
|
// reduce to just the positions without the offsets
|
||||||
|
options[ this ] = [
|
||||||
|
rposition.exec( pos[ 0 ] )[ 0 ],
|
||||||
|
rposition.exec( pos[ 1 ] )[ 0 ]
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// normalize collision option
|
||||||
|
if ( collision.length === 1 ) {
|
||||||
|
collision[ 1 ] = collision[ 0 ];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.at[ 0 ] === "right" ) {
|
||||||
|
basePosition.left += targetWidth;
|
||||||
|
} else if ( options.at[ 0 ] === "center" ) {
|
||||||
|
basePosition.left += targetWidth / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.at[ 1 ] === "bottom" ) {
|
||||||
|
basePosition.top += targetHeight;
|
||||||
|
} else if ( options.at[ 1 ] === "center" ) {
|
||||||
|
basePosition.top += targetHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
|
||||||
|
basePosition.left += atOffset[ 0 ];
|
||||||
|
basePosition.top += atOffset[ 1 ];
|
||||||
|
|
||||||
|
return this.each(function() {
|
||||||
|
var collisionPosition, using,
|
||||||
|
elem = $( this ),
|
||||||
|
elemWidth = elem.outerWidth(),
|
||||||
|
elemHeight = elem.outerHeight(),
|
||||||
|
marginLeft = parseCss( this, "marginLeft" ),
|
||||||
|
marginTop = parseCss( this, "marginTop" ),
|
||||||
|
collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
|
||||||
|
collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
|
||||||
|
position = $.extend( {}, basePosition ),
|
||||||
|
myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
|
||||||
|
|
||||||
|
if ( options.my[ 0 ] === "right" ) {
|
||||||
|
position.left -= elemWidth;
|
||||||
|
} else if ( options.my[ 0 ] === "center" ) {
|
||||||
|
position.left -= elemWidth / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.my[ 1 ] === "bottom" ) {
|
||||||
|
position.top -= elemHeight;
|
||||||
|
} else if ( options.my[ 1 ] === "center" ) {
|
||||||
|
position.top -= elemHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
position.left += myOffset[ 0 ];
|
||||||
|
position.top += myOffset[ 1 ];
|
||||||
|
|
||||||
|
// if the browser doesn't support fractions, then round for consistent results
|
||||||
|
if ( !$.support.offsetFractions ) {
|
||||||
|
position.left = round( position.left );
|
||||||
|
position.top = round( position.top );
|
||||||
|
}
|
||||||
|
|
||||||
|
collisionPosition = {
|
||||||
|
marginLeft: marginLeft,
|
||||||
|
marginTop: marginTop
|
||||||
|
};
|
||||||
|
|
||||||
|
$.each( [ "left", "top" ], function( i, dir ) {
|
||||||
|
if ( $.ui.position[ collision[ i ] ] ) {
|
||||||
|
$.ui.position[ collision[ i ] ][ dir ]( position, {
|
||||||
|
targetWidth: targetWidth,
|
||||||
|
targetHeight: targetHeight,
|
||||||
|
elemWidth: elemWidth,
|
||||||
|
elemHeight: elemHeight,
|
||||||
|
collisionPosition: collisionPosition,
|
||||||
|
collisionWidth: collisionWidth,
|
||||||
|
collisionHeight: collisionHeight,
|
||||||
|
offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
|
||||||
|
my: options.my,
|
||||||
|
at: options.at,
|
||||||
|
within: within,
|
||||||
|
elem : elem
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if ( options.using ) {
|
||||||
|
// adds feedback as second argument to using callback, if present
|
||||||
|
using = function( props ) {
|
||||||
|
var left = targetOffset.left - position.left,
|
||||||
|
right = left + targetWidth - elemWidth,
|
||||||
|
top = targetOffset.top - position.top,
|
||||||
|
bottom = top + targetHeight - elemHeight,
|
||||||
|
feedback = {
|
||||||
|
target: {
|
||||||
|
element: target,
|
||||||
|
left: targetOffset.left,
|
||||||
|
top: targetOffset.top,
|
||||||
|
width: targetWidth,
|
||||||
|
height: targetHeight
|
||||||
|
},
|
||||||
|
element: {
|
||||||
|
element: elem,
|
||||||
|
left: position.left,
|
||||||
|
top: position.top,
|
||||||
|
width: elemWidth,
|
||||||
|
height: elemHeight
|
||||||
|
},
|
||||||
|
horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
|
||||||
|
vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
|
||||||
|
};
|
||||||
|
if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
|
||||||
|
feedback.horizontal = "center";
|
||||||
|
}
|
||||||
|
if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
|
||||||
|
feedback.vertical = "middle";
|
||||||
|
}
|
||||||
|
if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
|
||||||
|
feedback.important = "horizontal";
|
||||||
|
} else {
|
||||||
|
feedback.important = "vertical";
|
||||||
|
}
|
||||||
|
options.using.call( this, props, feedback );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
elem.offset( $.extend( position, { using: using } ) );
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$.ui.position = {
|
||||||
|
fit: {
|
||||||
|
left: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
|
||||||
|
outerWidth = within.width,
|
||||||
|
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
|
||||||
|
overLeft = withinOffset - collisionPosLeft,
|
||||||
|
overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
|
||||||
|
newOverRight;
|
||||||
|
|
||||||
|
// element is wider than within
|
||||||
|
if ( data.collisionWidth > outerWidth ) {
|
||||||
|
// element is initially over the left side of within
|
||||||
|
if ( overLeft > 0 && overRight <= 0 ) {
|
||||||
|
newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
|
||||||
|
position.left += overLeft - newOverRight;
|
||||||
|
// element is initially over right side of within
|
||||||
|
} else if ( overRight > 0 && overLeft <= 0 ) {
|
||||||
|
position.left = withinOffset;
|
||||||
|
// element is initially over both left and right sides of within
|
||||||
|
} else {
|
||||||
|
if ( overLeft > overRight ) {
|
||||||
|
position.left = withinOffset + outerWidth - data.collisionWidth;
|
||||||
|
} else {
|
||||||
|
position.left = withinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// too far left -> align with left edge
|
||||||
|
} else if ( overLeft > 0 ) {
|
||||||
|
position.left += overLeft;
|
||||||
|
// too far right -> align with right edge
|
||||||
|
} else if ( overRight > 0 ) {
|
||||||
|
position.left -= overRight;
|
||||||
|
// adjust based on position and margin
|
||||||
|
} else {
|
||||||
|
position.left = max( position.left - collisionPosLeft, position.left );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
top: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
|
||||||
|
outerHeight = data.within.height,
|
||||||
|
collisionPosTop = position.top - data.collisionPosition.marginTop,
|
||||||
|
overTop = withinOffset - collisionPosTop,
|
||||||
|
overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
|
||||||
|
newOverBottom;
|
||||||
|
|
||||||
|
// element is taller than within
|
||||||
|
if ( data.collisionHeight > outerHeight ) {
|
||||||
|
// element is initially over the top of within
|
||||||
|
if ( overTop > 0 && overBottom <= 0 ) {
|
||||||
|
newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
|
||||||
|
position.top += overTop - newOverBottom;
|
||||||
|
// element is initially over bottom of within
|
||||||
|
} else if ( overBottom > 0 && overTop <= 0 ) {
|
||||||
|
position.top = withinOffset;
|
||||||
|
// element is initially over both top and bottom of within
|
||||||
|
} else {
|
||||||
|
if ( overTop > overBottom ) {
|
||||||
|
position.top = withinOffset + outerHeight - data.collisionHeight;
|
||||||
|
} else {
|
||||||
|
position.top = withinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// too far up -> align with top
|
||||||
|
} else if ( overTop > 0 ) {
|
||||||
|
position.top += overTop;
|
||||||
|
// too far down -> align with bottom edge
|
||||||
|
} else if ( overBottom > 0 ) {
|
||||||
|
position.top -= overBottom;
|
||||||
|
// adjust based on position and margin
|
||||||
|
} else {
|
||||||
|
position.top = max( position.top - collisionPosTop, position.top );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
flip: {
|
||||||
|
left: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.offset.left + within.scrollLeft,
|
||||||
|
outerWidth = within.width,
|
||||||
|
offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
|
||||||
|
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
|
||||||
|
overLeft = collisionPosLeft - offsetLeft,
|
||||||
|
overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
|
||||||
|
myOffset = data.my[ 0 ] === "left" ?
|
||||||
|
-data.elemWidth :
|
||||||
|
data.my[ 0 ] === "right" ?
|
||||||
|
data.elemWidth :
|
||||||
|
0,
|
||||||
|
atOffset = data.at[ 0 ] === "left" ?
|
||||||
|
data.targetWidth :
|
||||||
|
data.at[ 0 ] === "right" ?
|
||||||
|
-data.targetWidth :
|
||||||
|
0,
|
||||||
|
offset = -2 * data.offset[ 0 ],
|
||||||
|
newOverRight,
|
||||||
|
newOverLeft;
|
||||||
|
|
||||||
|
if ( overLeft < 0 ) {
|
||||||
|
newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
|
||||||
|
if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
|
||||||
|
position.left += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( overRight > 0 ) {
|
||||||
|
newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
|
||||||
|
if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
|
||||||
|
position.left += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
top: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.offset.top + within.scrollTop,
|
||||||
|
outerHeight = within.height,
|
||||||
|
offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
|
||||||
|
collisionPosTop = position.top - data.collisionPosition.marginTop,
|
||||||
|
overTop = collisionPosTop - offsetTop,
|
||||||
|
overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
|
||||||
|
top = data.my[ 1 ] === "top",
|
||||||
|
myOffset = top ?
|
||||||
|
-data.elemHeight :
|
||||||
|
data.my[ 1 ] === "bottom" ?
|
||||||
|
data.elemHeight :
|
||||||
|
0,
|
||||||
|
atOffset = data.at[ 1 ] === "top" ?
|
||||||
|
data.targetHeight :
|
||||||
|
data.at[ 1 ] === "bottom" ?
|
||||||
|
-data.targetHeight :
|
||||||
|
0,
|
||||||
|
offset = -2 * data.offset[ 1 ],
|
||||||
|
newOverTop,
|
||||||
|
newOverBottom;
|
||||||
|
if ( overTop < 0 ) {
|
||||||
|
newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
|
||||||
|
if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
|
||||||
|
position.top += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( overBottom > 0 ) {
|
||||||
|
newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
|
||||||
|
if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
|
||||||
|
position.top += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
flipfit: {
|
||||||
|
left: function() {
|
||||||
|
$.ui.position.flip.left.apply( this, arguments );
|
||||||
|
$.ui.position.fit.left.apply( this, arguments );
|
||||||
|
},
|
||||||
|
top: function() {
|
||||||
|
$.ui.position.flip.top.apply( this, arguments );
|
||||||
|
$.ui.position.fit.top.apply( this, arguments );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// fraction support test
|
||||||
|
(function () {
|
||||||
|
var testElement, testElementParent, testElementStyle, offsetLeft, i,
|
||||||
|
body = document.getElementsByTagName( "body" )[ 0 ],
|
||||||
|
div = document.createElement( "div" );
|
||||||
|
|
||||||
|
//Create a "fake body" for testing based on method used in jQuery.support
|
||||||
|
testElement = document.createElement( body ? "div" : "body" );
|
||||||
|
testElementStyle = {
|
||||||
|
visibility: "hidden",
|
||||||
|
width: 0,
|
||||||
|
height: 0,
|
||||||
|
border: 0,
|
||||||
|
margin: 0,
|
||||||
|
background: "none"
|
||||||
|
};
|
||||||
|
if ( body ) {
|
||||||
|
$.extend( testElementStyle, {
|
||||||
|
position: "absolute",
|
||||||
|
left: "-1000px",
|
||||||
|
top: "-1000px"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
for ( i in testElementStyle ) {
|
||||||
|
testElement.style[ i ] = testElementStyle[ i ];
|
||||||
|
}
|
||||||
|
testElement.appendChild( div );
|
||||||
|
testElementParent = body || document.documentElement;
|
||||||
|
testElementParent.insertBefore( testElement, testElementParent.firstChild );
|
||||||
|
|
||||||
|
div.style.cssText = "position: absolute; left: 10.7432222px;";
|
||||||
|
|
||||||
|
offsetLeft = $( div ).offset().left;
|
||||||
|
$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
|
||||||
|
|
||||||
|
testElement.innerHTML = "";
|
||||||
|
testElementParent.removeChild( testElement );
|
||||||
|
})();
|
||||||
|
|
||||||
|
}( jQuery ) );
|
19
externals/msrCrypto.js
vendored
Normal file
177
fonts/segoe-ui/west-european/normal/latest.woff
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
wOFF ¡@ þH OS/2 D Z `JÑ|cmap ¸"<òcvt ¸ Ì
|
||||||
|
"‚]Ûfpgm „ Æ
|
||||||
|
\IDØggasp L #glyf \ †O ͸ºßkhead ’¬ 6 6ëÛT2hhea ’ä ! $z
|
||||||
|
8hmtx “ Ÿ c!•Dloca –¨ ¤ÙPmaxp šÄ 6fname šä ß ò>post ›Ä ÿQ wprep ›Ø h @“î¹xÚc`fñgœÀÀÊÀÁ:‹Õ˜<C395><CB9C>QB3_dHcâ`eâfebB&æe'(ð
VP`p`àýû‡õò¿@F^ŽELL
|
||||||
|
Ar,¬³€”3 9f¤ xÚe“}L•UÇ?ßç"i
|
||||||
|
\4
|
||||||
|
5ñð(¸ÔÿȦ6éÅ--ÙZ[[j)) <20>¢¨ ¤ jR™“ÅœºFîVF›7íÅ©¥¦a¾VTjš—›ºå[Ù†ºÞçétaÌè·}Ï9;¿<><C2BF>Ï~û~°‚^ÄÅí¾–âI$<24>jݦ>ê¯<C3AA>¤a¥û5^•£'ô”¦)_µDÕªS½ÓßçLqf8ÅÎg¥Sïìr8<07>3<EFBFBD>@`H`{`_·ºøž‰Ù‚&Ù¤˜~&͸&Ód™±f‚ù2ÝMÏt7ÞMr{»)n?7ÍæNtsÝüŒ-‡Úâ¢ÙÑ›¾o¹0„ÔKw*M®†j„FkŒŠñ<©§5]EªPUŒ'µÏN§ÉòœüOÐô1©æncb<c,OèždËÓ·“'/ÆCtü¿<þuÿ±ò&‰›!þŸ~“]÷vô
|
||||||
|
ýÝ~ŠÝGx7¼Vï‚wÖköö{
àÙI{9ÞÐèÚh~Ûå¶ÂÖ‘ç'ÑY‘ÚÈúȪH´·T†7´”„×@ø]«²pi87œuºæÔUpŽÊÛfµ<66>AAû{Y•¨"v^aU«ujìè5Ò¥ÔЮ.·ëµQ
|
||||||
|
isçMè–ns»þó¢©ãð6›y‘Uzœ
üF-u¬á
¶ð«yUb%ë4OóÓ6ò2û8£R6ñ×hå:oñ>9ÀÌd¯‘Çaòù†C|ËŽrŒÐÌw|χÌæ*õüÄüH!—¸Â+ñ<ÅÌe%„˜G)óYÀBÊXD9‹¹H/PɪXÊvÞdÕÖõ˹Ìïì°^®€âÔMñÜ$Š‡o“Ð]=„îµ¾©,Ý®žÖ‹ ºO£ù‹ãJT’uãX•Ì¯œUo›œqz@w(…<>øXw)•¿iãç5À:x ŒMS¶´N·~¤ÁzX<7A>°SÊÔMÒcš¬Ná§ù…N&¨*¶²M<C2B2>òŸ³ŸOø”¯YÁW¼¤©6•ÏpCô¬MÃ=š¡\=§™|¡Yʳy-Ðl›‘bÍÑ\›Ü¥*W™ÍïrÕh™uÉëü!‡F-f{m’*ÿ¤Šþ( xÚí–ÏKTQÇ?óæ½ÑÍ,&"j—áÿ ‘ƒP¸°há<68><C3A1>ÒÉ •ˆj²À**2†àP0´ˆˆ B¨…´Ú¸Qra¨Jí¼×¯ož:!A¶Þ÷pï9÷žÃ¹çž{áoƒ3à<33>sö`.‡KiÇ®Ù'G³i05ö§o<C2A7>yW²tí¦7Mܹ`×£WˆËn½Ü“Ýtk9Å/yJ†S<ÐTÃ--ûƒí®€§5nó<6E>VþŒo¢“ㆹ È(“'¸q¸åYYÖç9I3yƲ(Ïjd>âÓ=Á•<>‹\å’·ä-i¯‰A<E280B0>~Ýù_‚{B/=Ü¥E#è2~Žðu<C3B0>>ÖÞ°òœg4ò•$wHéV‡ˆUñ™Ù&å§<C3A5>O<×Y÷Ië=N5‰(vK®+ïÿŽÚკ3Û:=E7÷œ_úwGì<0E>Ô)†4ÉŠvsžUæÊ~Ý"‰X~ÿÏxÁn²Ïߊ¿?y Ó¶Û¹ÛmÙ¬÷Ãûîλє{Ž[<ÐËN0ëKCÊV<C38A>!B„âDVu4GÎöÙ"—©‰<C2A9>¦¨:[gš¼fUä>Ñ5¿òÎ2¦c…)êÕ¼¶k¿y™T½^QGR¯¯a…Ž‘<xÚ<78>VÍoGŸY'äË¡ë|€ÃÐv¶‹)eÜ–Ò`{
‰›Ôqi7á°Fr|âŒTÉ=TD›üýÞ†‹áäCE*§žjo !Uoé{³kÇI©ZË;~ó{ïͼﵽþc}sëV¾[Yþ¶´´xûV1¿ð<C2BF>}óÆõù¯¯]Í}õå•/.þÙ§ÙKs³ÖÅO.||>sÎüÈ<C3BC>~ðþYqf&}úÔôÔäDJïäxrltdxèÄà@Bãl–§!<21>w<EFBFBD>&Ìä}HšS—<53>\y³œ6!3%/g½¹X
|
||||||
|
-`“%˜*»!³sœ°Ž‹¬@"£¿5PyYH2ø5—ju¸Pq
SÿMôøêÀ™¼k´~‘…ߥš¬ƒ^Fܲ¬ìÒÓ>x™C<E284A2>å׊t·ž÷.#3vÐ9fæ
|
||||||
|
ô09“/ ›
|
||||||
|
Yò%°i{“cÀæá‚…†èH©ÓXøÔ[à“À§—Ñä£W<C2A3>Ú‹Ü;bàÔ›¦SßƈÖýؾ‰"jÈ@7uIet ~YuñѼ™¿7Š S GÇ# <20>¸òä
®-é\56<Žá› szš`ïúH˜Œr&9íƒÎ^?‹¡Z—šŒ¨È8‘‡¡È¹
v
Ø®g;Á^[g[¾•¬›õÚ5Y"ã4ªp¶TÞ@¯ÂÇoHJwA-”<é4d€{’õq5”ô#x½qϧ2á¾Y@ÞHÞ}htLà¯)ÆQlüÁï"8émIÛ x(á'4·<34>kЊE<C5A0>FÓÇÄÛð0§¹@)ÉöÒ¦ªq±®’cïÖ$´¶šQíÕöºõo:$ÿ40;˜ÔTŠq(ë~“LnÖÈM§)ƒÝ{ÊÕ=åÖ«tšzH«Ÿ£ö†ë4LçðBt‰D渮aÀŒEŠAà<41>‰µ:Z™ŒŒCû©'„ÅÑž<ØUõê*x£]+x1l<>qü‚çQÞQ†2/™2 ‡20eéÆÏÈëÌÍ–*®SÊ{Ðòîõ×iñéR¹ó4ÊÙ×"ŠQiÍ,FUÐè.~5j`—y<14>åÕ©ÏÒâÒE³èAÑ”ÅÀjíƒÖ–)u3“Éà¾ãKÕùñ'»Š{è~ƒ_Ã$S½+%˜\ݤôe£
‹›¦‘FÊëÊ”ÿ<E2809D>÷V<Ö=õY ¿BÛ’8‘„,ÒxiãT ç¨MÑ’uûபYµ`¬áá‚:%áeœíµ8@X<>qÁÐÜ[<5B>Q<Ä0¨‡vÛ6ÛÂ
´VÝh/Ù–ØgvÖÂÜùÄét9ÓëÄiu9=ußÄ\¥KkÿQÓýõ¤Ì y5«â¯Æm:Uôñ¯çâtOæÝ„ÐbJ ¢F-_ópÚRŠœ’<C593>nÊç&èæÝŽ˜÷¤žÂñÆQæ¶E]ƒSô¹ù”ÓìdS:ðyà§g8KÕHOœÎ!³W<Ò ü¸ºúÝŠ_ õÆ»}CÝD÷D$Ÿš0ÉÃ_ÕH‹'u¦H½$ŒHbɃ“4<E2809C>áä+µ ½"ïJœ>Ø«Š<C2AB>ŽlP²Aú5<Ñ·^ø{h2‰ˆ¸¬q<C2AC>B{´Öþ…·°ÂØóXÝ`_Dä¼VuKÕ<4B>£”qÑ]‹äÊQ~/Š]™F·T=²ë;—^²s½Þ¯ºP´ºGEû[–èßÞ>Æ^ì²FB¦)¨øþɉ#æ׎ œ#ß‹ô>ÑøBhò<68>ÕÐæ;k.¾áëŒÉ<C592>ª»¯q-ï/xá9ä»<C3A4>%c¶B5B ¤<>¤
+q<q_Vòâ±ÍXKq öwÛœ)l¸‹qv·E˜]t^]d3
9ÇîJ 6a-…©OÈÈ{tжGì¤6®‰<C2AE>´<>ÈÎØg<>’|œ‹µ*
|
||||||
|
nóV8b‹H¢…vdáÎúáÕëî£$C5µâEôÁp·0àeì%¼ctJ"þ½yæ©t×àY4Òþ 9¸<39>eføN¹ß§;0Uªl
|
||||||
|
àÞÜßúqñÃ
|
||||||
|
ÿÿ xÚ¬½ |Eú7^ÕÕÝsO÷Ü39gr2!CáJD‘K,2@ Q¹]PQ JdQYDDYDD—E<ð>ðÜ…UWYdY÷!ÓyŸ§º'p¿÷ýþ„™îéTOW=ÏSO}Ÿ£ž<10>l&D\"Í$ŒXH–æ°P&&I6‘$ŽxkGàP{¤SEÒóÇ<±Íì«æÝÂîtiæÙåkÄÁD »ZNÑÕR|ƒBjµ(c‚]í;F‰>*<2A>ù,Áæzv‘…ª–¨E°ìiùî9—<È’ˆOo8öáôc55¤6N²ÂêÛµ<C39B>*(+d¾‚’ªÎ]’•Á€_¦³|K½#Ê{÷.ïXW'5<>;+Êg‡iåx¡\ƒg?Á>îà϶<C38F>BͯˆùbB|Y|G”DÑÆdÁ©M©¤ K|¿§Rè¡<C3A8>WÑ/WIMzoú2¾|WŒÌï‡ïÊ&ùäeí&%D‰LU9[`²%ËÎÉ·Y#ÖPnžÝtø=ªËpÚ\j¾(3™Oyü¡\QÈÎŽ§²ål9ËA,ªE°Y,±`<16>”D²ÜÅJ<C385>Ìj<C38C>9<EFBFBD>Á:¯Û:Æ9§9g¢º˜LŠ{¼´&œ;¦!y¬²2qˆÔ„n<E2809E>i€÷šD~KB5Æ{§
|
||||||
|
u©t þ©K/~§p{µÄX^…¾BxŪcü•dIxY
|
||||||
|
YR¼?¤Ÿ«¥‘lý‡‡Ÿ¶`˜~ÖOm=õ¿h`ØÂaÍÃç
[Õ\§‹ÖÉú‡“õÛè}øšLË&ÓÕúT|Áu úÆ–{OBòH1é@^Ѳm%TΧö\*(#nªHT•:D<>dPñž–??ÇÀž–wµáp"UÀ[~ÄVbg¾`0ö…›RªWóÉDVå¨Ì€r©<72>ÙšRD`a›ê‹ä—Êt… 丂šÓCƒ9˵§‰ö´½T¸,ꢮDñƒ64üã «&q,²u$÷<>d’“µ6«õü¾þwªˆÃ?$ÙØøW(¬*(
|
||||||
|
“ž”Âêªd
|
||||||
|
””z‚\=²ð}ž.U<>…‰?º«Ûë×|ñëCO<8`ÂSï®{Y?5lü<6C>·_±~úÞðíɾ™üÜÜUví<76>+·‘Ó§¯{aæý¯°}ßs[ýð©ú×z<C397>›—‰i9!kÒâ !<21>¾R’$Ïj•‘0+hWŸ*pçä”קr€,uÄ[Ÿ"²ì¬OÉbmøª°<C2AA>Î
|
||||||
|
³ü}q'̨øž–Ÿw;àØiÒZóõâ°Þlpµ¸¸ŠÙöñOjAøEÀ
|
||||||
|
×Ê>–X´b{Z¾~.²ä؇ðB¶9lÀ©VÆá<C386>Ÿ}<7D>' ˜Wmæ,+@%+<2B>F%Å´<C385>úþËïèš5;önX÷Ô¾{ÇN<C387>Ò0fò$vMóÄØC%kv¼´þáûîw3¿,¼ù‡'vÙ¿mÛ;¬ûæÍYºbþœ¥#ÎŽ–6<E28093>rpãÎw<óô;ÂÌóg-½oÞÜ% “³Z¾—{I;Ir
¹‘|¢åŒ¸ŠŽHYj mèO‡TÓú.t”‹ö×dÐÕ <C395>4'œä¢B>uˆ*Rn4\<5C>®ì퉮í‹nHH9—å4¬MåˆöËSvéy2E|Ý®¤]¥¤Òþʲ¡ÞÁ7‰±Pòïe±¿<C2B1>÷÷PhDS¦iTÓ&
µ}‡Z<E280A1>øĺXIš¢6ò†@BñÇgH_|6^|¦ƒ¤âtç"§qÒ²*”¥nV”ÓrVÕ¹—<C2B9>¬Ì€Ê–<êâ—&ƒÁ<C692>ß-À yu@–‹+{ ÐîøóÚ¹\(,<2C>-pêÒEz²æšþ}KÚMºãáÔ”]w\±ýѼ‰Üšëï¹jð<6A>
<0A>—-ë;ml}»«ëmÖGL(Ñ~•(ìÖ½¶]^¯XÑUͼcʈ¢ž7Nš5¸vò ²ÊkfОÅ5—Œ¿<C592>F:ö(X8?”_Sß9>¤Wq—IMׯû´o°û€Q]®š;,2ïìG»f7µûTm,é‹uo?jÏ3ë{W\QR<>»Ý÷Ǫ¯l7véøËó"=‡NíÙľ…,]yyy`ò¨öýzUxÊn'×Ú™¯Îç`ÉÅ„&•êÞÐõÚÐ÷
|
||||||
|
á<EFBFBD><EFBFBD>ôÖâ’ê ƒ(¾u¨ÌHT:!Ó„8¬È3«
|
||||||
|
<³ž`ª1/ŽqÆûø©Åµª!§…Ä£Ò$¼ ÃVëoÐ.kôCú^:^ ÕO§êKt‹îÀgáâqþÌþ/¹åôsð@²§å´æ€“j2LÀÓ¿Ç<07>°îi9£¹ðÑV•OHäŧòùx,Þúp_ë÷®¦]õCkàm/<2F>IÿM¦óõÕéŸÒ?ã³
|
||||||
|
Ÿ2'<ÛMnÔ:1‘ªŒIV»ËMD«ÍfšRlpÉæd‚@ÜNYvXÖ:«hw1êrös@W~<7E>˵ݑH&ã?TV†jšë”úuM–(<28>LSTÕvª€<C2AA>T
|
||||||
|
ÁÂ[Z]\-±$+fNýÔþ©ë7LݯŸìHåÐòµˆCºþs µé?
üg××Ñ
|
||||||
|
ýÝ밯ߑEâ1šðJ-ÆÜ¢ÕmÑìT´XÄý)ÅB]ÌkŠ(ÕIvÝ'òE$UjjŽÄ©zŒp5<70>Ý©©Hñƒú<03>
|
||||||
|
üXUÌF\£O¹K¿™>x]#xñänú ~3<¹T?C{<7B>¯Azúj¹5ŒÖ*hl§H¢ðÒ˜Aî4O¤Ÿ°§å><15>¨n…„DPOfµ¨þ'ër§¡Ö]Úã±ÛoÿZ÷Ó“8¶•ô¬°S˜OÈÑT<C391>M]%P!
|
||||||
|
¿ˆRJ
\
qìnULØ™þJ( gïÄû¦µœ CÈ›@“ÍC䣈Ïö¬«.xô Žp_¨<5F>šý¤D]]°®¼¼OŸòò:øž–¯[¼¬#ŸÍ5‹R¢‚š£ðQH q¦Ä(èkÖ1=d<>°]júy¶|à¢á-eÍ OU&íµ Yæñd–ivÅ×<‘BM))bj-Ndý RŠT÷²\XPRêÉÛ¥K2ÊÔXÔ/ÖÜ{ÞsÓ§<5£GíÜßßNÿ°EÿR?B;Òö»ô/_7v7µ=ý<12>þẴG¸>½*ý"Ðàk hJ{A†s5—ËB–S«ÄÁBÃ0à<>IšøáP²SE¬Ðãf–ª^¬:)|¸Éwå¨*ºÌ¹}bI/ñ_§ŠÎÍJ²¶o©z3!ì8Œªé¡ååù–ÙájYî2-FrÝÑÜu©hØn—ÜRSÊm<C38A>Áf'¸F®ÉŒÑ[óC%“kPаU0F®}á”k,C…\Ý‹1±ýãºVŒ¾æê¾OϱvjméU³¯¾añ |á<>æ{Û<>nœ2x’–-Ô<>ïÍ*×Jwô¹"9~eï–Ï<E28093>Öß„TªÛƒWŒ^±páU]'L˜ýžÜxúÝžL×z—eùŠ˜µ ÀJ–iŠ·F²¨’E,++œpªÈëóy›R>Ÿ=×ÒÅJ‰UµF ¬¬V»d7ùƇ†«Ò‘<C392>ðü%›³~ðÀhC5œ©n-à£$,#Uj¬°*õtŽÀèùàU)<29>ÇØWÞµwÚ‘9«^0çš„>mÖt¼þãÃw-Û7rõÄýø•óG&éÚk½µ×àÓKúMÐhä^jýׄGë+G.¨sµh1¹l;×\ÒKËcTZ.kª[–•<E28093>U´*Ö¦”<C2A6>zÜŠ"Ã%S¼5IŽð€K¸¢&“Yjºò®É@!× ÜŒÕïÙ³1=fÌ<66>g“zý~ÀÝs¦JM̓ÖêÏÒ«ïŸü<C5B8>3?ÝÚ<HØ¿øí-÷ ¼lº¿})$õZYÎò¬PÈ y±5(œŸo‡³×¥Â²Éøesú†qÞ=ƒ²—Òµs —(È3¤Š½Þï®—n;|íêuƒŒH¼ô\®¦õŒtJÿ”í—3}ׂÞt÷¤sëzlS^?£ïŠG&2á<32>5ú(<28>õ¸åq¤å-Ðä&J:“˵"¯<>,‹ÅºÄ#0‘sJšRY99Š×ëWü|RW´™Ô¼÷¸öÔó»'¸§&Óërs‚WLÆ~’¼Ësb ÌÀQ1ý²Ù›¯<E280BA>òô¬^C×½kÍÈ[æ<>kšÚ]¼îë1ÝÔmKÉëzNï0p’ÖkB¿vôµI;î¸bäSÿZ÷"íôéÌö<C38C>ÔÿÍW÷<§Ý¾qö€ÙÃ:–_5©{ÿ;ÇU'†ÝŽ¼sùGà<47>—t|<7C>XèÝšWS¬VPXDõxÔu)<29>lEñÈL_$}M’Ý
‹ž¥°‹×3Ô.û1Ö0qʘ+ÔÞc'_?4’îÄVJÝk¶~ø/½Yÿ÷<C3BF>wP¥§¯‹¯<E280B9>’‘-ßs½XHªÉ 2JKt]f[î•^+ü<>¬eå僊–i$ %{öL6¥zölïÊo¿.•q]Ñ”rYH+ÊC‰àKV«þô Ú6V0j´GÚ"¼€Iýj“ÀU&Á}}YÔçºÚ†©=§¬~Íš)=¦Žê5¾OÑeóž¾qÂÖù}w¶pSo lñö'×õš4¨,YÜ{x§N×h%ÅÚ5•U×ÔЕ5·]_îüÄuWÝ=¾ºëø»_÷Dçpýõ·ÕŒYK¯^·¬ŸÒgÊÀöN©ë1iHy|ÐMB*yMïâ’Þ×Tv¡ÁqJß<18>¾“ç¥/F–YCªÚ%¾Ly+Ö¥@òJ$ÃË%ó&C¡šxÍ›l]`2“¦P6DÑ Ñ%ÒwrðÚ£ËïŸ2kéµë&wG=ºiZ¯¾óžº~Êo§÷ø]|à¤^Ý' "ÜÔ»æ†qVøGýÈG·Tþ¦Ï<C2A6>u^õBïY›®›¼cÑå×üö_ö¡÷\[•øÕí}ÎZ¿ò:_ŸÅ ·ÞzhA™ì%«NïŽQNŸ<4E>žÍWŠ €Ý… <01>”D„ƒ†[M÷GWð
¥KWó„yd]aY×4XÖ›w¶.ðG0õ¼
|
||||||
|
¹N*
|
||||||
|
UœÔ)ýqkÊNÕö,3û<33>G̓`Ó‰øƉøÆy‡Û„6nÚ¸ÞKD6p8ÆÑ
ö”ûÚv×hçx¢wïDy]]€žó]Lo3ñUÛMé£9gSjAü!P8ø€æp’AÓÔ.Âç?ÿA—DM€Gñd"~<7E>$’€<E28099>£½¡˜VÑ üˆSš7±Ñé…¯ÑÝéñµúzQ?„|ùŽö×°)Ü7”ÔYÚŸ’<05>îOÁ3%ÄŽ»;Jæ3¤¾›$Ю=d1Ä<31>âšæal¾„ï–¤ß_réX *âX,ð‹Ö±ÈT–i›±æs炱PþàX„%éùl´<6C>Ї4Ò®2½~žcYÜrŠuâº& ó§„x©*y¿Ò˜ò‹¤¬¨lǨ"_ôï¬âÙEíh»vžÈ»½Êƒzî¬0
Ç><fw¤s…"j"³€ûÝ"Øç!VP
|
||||||
|
¿¬F¥ÜµÈô*›;9päÀd±6,ñÔüu›Þ}C·ÎW<C38E>¾ªsÐqEYA,ëØÞ
|
||||||
|
èýYCÛk7Žú«†®ý+#wí×ƒûϸvØБ]Êdéã¢ÑòD~,–Ÿ(<28>F‘KÛZ.“›¥í¤’ô$/hª½”Ú+)#ÙT‰Àó<>ž
|
||||||
|
t`šëa
HÄkàDÃ%a6[r`ʦtò³V30¥0…ƒÐLÅER .V-ŽL—¢z¥=Ê»ô“à§]¨_yn¿vhƒs÷†
|
||||||
|
‡D(iŠ ú‹µN˜ú]üÄpÅ©á8"
Õ<0F>ÌÓ!”ìè3àG/‡JbQ°ÏH¬ŒoóÞý@ò6®q…tåÇË~û×—úݪŠ‚uAbÖ”ôMú[ú'ú|z+ùéÙgô´¾FïC? 7Ñatÿßžú|×üu7Ÿ¿Šn:õÆÓÇi¼×œkÒŸÚß9±—úèh}œ~X?¢/ŸßŸ>O¯£Séq}Šþâ)ýæ>ùìÌ{~zëc¤}<7D>Éë¦4Æ»Z j«Lm*<2A>V°Úìêp¹&:Áft‚È3ªDwÑ<77> çßíÂ'0ƒŸ8<C5B8>+5xævÙì¢äp¢çéyƒýœ²fUàʪ`5@qVÅé`‚Ûæˆ=K¢0$ôø‘Ï$Ì߉GJx`ÒÇÐOB‰Z §D
Tf©_Æã½Ü+§¦÷né<6E>nô€Â›tà úIb…,Æ
|
||||||
|
iÒÇJJe“¼{N?öÀ‹BÉöG<C3B6>9`àþ ý˜ ù®Ë«ëY˜þ
®ê/æL MÐæùäÍisQÙA¹Ý,b/ËAè¬a<C2AC>'¼*åñD(‰¬Ját\•¢ÌqÊ8hUªŒ*uA.õèîæG§qÔð«Ü\ ›I<16>C_ƒá‘Ä<$\/EðRd!(‘3øpü~~ÖЧGb8)P5Ç¿‡W%÷×5|¯É\ñÔ\
|
||||||
|
2ÐÎ#H²°‡¹ò¶Ð¹)2—ÆXæø}xïgKf¬Ú®Ÿyýì¶åô^ùzÍúf©i÷ê¹»JDÏkö|- z§»æ¼—nJ7¯˜«#ÓòôNÀìë4¥¯<C2A5>^IhF•u2
|
||||||
|
‰¤ˆáÔµ;H /ô<>ó@À'øV¥q@;‡ÃeuJYEâ¨@‘ªYt„T$®ŠTSH*œKH$ÉçàÚ›<C39A>ýj \ÏCnó,žô$¹¸àÀ Xçr¡9/9jÅÓdeµ¸âÑô·õ•tíõÖÝM{Ã4ÿû£z£Ë©FGÐ-ÝŸ®ïÖOêgõ×Çái‘z™3è!ÐËìiP[ÄƅŠB!";E쩈ì¸ö´üÙè2EÃe²Ž'´04q¹<6ª
‡jC9²-ä¼7d@7e@Go-É°ÚðÕòÓV@<40>£%Èæ(ØŠc¶®þ£<C3BE>ÒýðcšE»¥wKMé¾ú.ýfI8·––Ó€P
|
||||||
|
\„‘±]02™¦u–a<²@åUñ
|
||||||
|
Ù.P;ŒË+HÀ.<18>h%Ä%Û±Ãvì°;l_HÍÑÁñ,_ÃñèàkùyiM&ÑõÐ*¡p’€nÇ`Ù
˜/¶+mŽ¦ßäôYaˆÔô°^ø<>n7û·†{ÔnÔÊ°/Š V— X-`<60><>è0Q$Äú c¿d염в§å<1C>?™TÇ#bKÂa¸qZûföNÑ¥ÄýHØ%°!Ù£C[„£ þêCé» #¦ä#Ê<><C38A>íš<C3AD>Ø©JCâ2ßd>Z•
|
||||||
|
‡$#éŠ#ß!ØÏËz(P""—Ed1v˜,„)r
|
||||||
|
;ŠG€ëˆìgN>Ôg‚9n»]<%’ÞNkµgqfmº`:pðsò¨~–’»è“´Ï‰G·Ÿú‡þÍû÷–yú!z|ü\º‚^Nѧî<>
|
||||||
|
tF?¿Þ‡®~Øà<C398>ø#—Ÿ9Z?+¨~«,YA~¨WòÚ™ÌlÇ@äó]Da‘A‰ñ¢¸P—UÄ"¶±…¸P2¡dÎ )q‘â‹ã܇A2‚}»LŠ?nIgmÙ"|»E¸?=Dþ^<5E>ÛŽÐOz=÷Š©»ÉB
|
||||||
|
rÍà+hâ¿=I¯ß²~K‰¿å;!gNr³"6
|
||||||
|
X§’,[Ìsæs0 u;ÆS$‰à¤'8鉕ÎÆùaÊÏ¢ÌÙín—d18çV*ò)3y¨?ãðx’Büèï‡ué2ü/[¡Eÿ&¼¹”ÞÉšLjo„Þ©d½–³ÀMÛ»kÜŒ¦íØ4쪢“Û<E2809C>Y·q×øRnw«T’pÚ07Øê4ø:üeG@¼v ¹`¬UÈ gÐisÁ2„SÈÊçOf¸l7ÔÀÔF^ðei¹ˆRXŒ9K $Ñ$7žHœo·lÝa!ü^z<>°²Ø••šÌnM1yÄ6Áè$r·f£"×>œÚÏ©\N›BÁWX~tðãwÏÙùñÏÏÙøñ€¶ç÷“$Ë%’EMÉ‚ã<E2809A>|LTj««LåÊuk¡¡@¨Ø¦tx‹ IMgu³—òt?Þ«æfÑÛ}´Ä×Å'LÒ §´+C|Žvªñ,˜E%›Köz¼^&^"4Yx!çJ¥²©G1J@s}HÿüÂçj£p<êBŒÇã1%΃æt¿¦Æ‚Æ\C’¬Æ`²‡{<>CžÎÕ —(çT0€¼¢ÒÒ¤<ý·n1ìÓƒõz(¿¢{’ŠÏ¢¯¼Ï^<5E>þäµÎí/¯¸nøš<>(ÍáÛjfvc_”‘à
|
||||||
|
ñ‘g4×,'<27>î ³º€R΀ƒ«I—3 ŽCz©$ÚìÌF•Kõ„‡z<E280A1>’ʃ÷Dàž€C²b[+¶µb[ëB›I[FV<46>å4ÃךJ“ü ƒÜÞ*®ç‰PRåIJÚÛ鼯lÝò™ðvG—hß"Ί'Ê:÷/©éÜ#—gõjd?<1E>擄 WàN-<2D>xød'¬£âÅ‹û‚€)ÂÓþÆ#‰Ñ@E@"
|
||||||
|
Þ¡à
|
||||||
|
Þ¡,`¨(j~369¿xqt<12>ZM•PS¿ã» ëïè«èLZGÛÓ›ôú‡Çõo©ïË“TÕÏ„éj¸>’®×§éûôÇõ‰R¥¾Wÿ ~öÑÎ`zçÐ.&ÛwíÄKVjí/—© P§è$«RN'¼Ìê‘YP–-ÖVu±@5Að¨å¡èâHTÕï¤8ZCØq´t¡`ÎN8þ‹sQyàåÜÛfÀø–6îÁÆõQ.1á•N—›Öÿú÷};¶?¯ïòÒÇ¥¦?¿õ–Þ,|<7C>Þõè*šÃùW+ÿü¤ˆtѲ|ªèq:cѧ«5À±idºöP+€Aè=õ7ì¥hi‰G‚Õ“*V,³‹ìQC Ï«»xÔÒàÀ»/<ÿâK´7m·{÷Þ²Jú °äÇÉÓ<C389>ßwß²å_ž¼çž%K¯¿ŒuäíÇ‘ou*ÔÿôFLª|â àÅ™'ojnä6=’áÆàF)%/jÝú*”in
|
||||||
|
àÈ)…ò¬Ö<è¹Õžë€¾;µ‡lä‹1“<31>/E<s:—Rá‚•¢„Ÿå—®§Úç]Ríæl³›˜Ïnb>;O#@N©‡â
¡J\Ì08I$/²NÐ565˜oå¬<C3A5>»ì3a•@QOÆE.8|:Ö«÷€Äò-tÛ˜Go¯ë8ôö+‹ª*¹éß}]{Óà²Æûèê®WU†Ò¤¦Ä¸Æ
X0¾¯OTÛw½"Á†¦Ï”\q£vÛ<76>0š9-ß±¯€ÓUä}-0 Šö/§—Ó˲èåÚ9ÀJ*Ûñ†Š E0ƒÅƒ¿µ•ù
|
||||||
|
Äp§,ø¦l0]²ÃZˆ …;u’W¥:ù²³Ë
|
||||||
|
<EFBFBD>jHè$tÁŸ<>–áµ2¼V†×ÊØP!*8ómÔf«¦VcâSÚÌ0f&Çs˜=u΀6Ó.6܆ê*úG/Oi&G ã¨Ç¨ÿy?òœ‚±“&w|d]rä¼+üz\õðÏ5|xí¢×ª§ïÒ~Èm-ŸØsè}{&\?±¡Û¡¼Š˜÷¶)݆_Ñ»¨dð˜YCƯSžÜ7"Ô¹¾{õ<>º^Å%Ã&Ì2ùÁÑí<1D>| L{<7B>J'·“jÊ]Ä.ãÎ ÇY<C387>ÇX%↥½î 1‰€ä<11><BXȳLtœ1›Õ†!„Ø;ÑŽ{Za/'U<>‡å\- ªª=<16>úø-úuì/’pV—D¬[½}t‘¹Z'Á1áµ
|
||||||
|
Q°!\w2‰]º<16>aŠ¹7Ž ¿p(ldÁFldY(‚¦ÙqˆF´Úì`fáAÈÚª¯0J
|
||||||
|
àÂ8ˆ¥ÿ”þÏ:ƒÞ¸E¸,½IèËnnÞ _A·²[¡Ç^ ê·cÖìót†ˆë*tåÝçœt<C593><03><>Ë8‚á@‰pUŒºð
>Ö8h‘ΰPK;œÝë8è;¯¤<16>1Á<31>\€/iÆ)<29>Gî8v´CE€ÀÌ?Y¢´Žµ³ˆlz_Ê(C«ý
+qÈ°ÒÖÔÄ[qG<#±€Î ñÛô/¤Ï¼HïóÙEk„6Òš «ìÕýzôoAÌ•Eˆeb.Ú[‹Î˦s²èL?<3F>颷9éí6:O Ù˜{–…o~œ¶6÷šéhN¤ŽNìVt<ÙGÁÔ2ˆ»uÑ’…U‡"èÿÊ6©›mR7oð9<>H]'R׆<> Ú‡<C39A>ê0þPW|Wø{<08>ÃþÎm¶<6D>¹ô+ø<>\”.*)¾<>lw0»ßKiÈfWBQ„Hø@8†xnôDÁA)rˆ9Éu$r }
4”Nÿ3˜Æøgbñÿ5ÿ¨<C3BF>ù8ökÅ|æÑ2N¿é<C2BF>ú§>Q”ýú'ÐG¿@;ù$IÊ¢=§ªUC´Ù#†û\Õÿòs •çvõP5Jxn[Í ÎÃÅ!·Ä&àV€Ð"ó|t®—Þî¢3œt†•Þn¡°ðÌ£Ô‡ãópßbßQs6á™Ïjpíç‰9ÄóeøDñwJ8ƒ±ùúÅ)›ï2md¤®hs0[ÀîðóBB·ÃC(£‡<È®-ÑLZ™Ð<E284A2>Óª
±Ä¦#únÅ+ÚÃú¶·éŸõËߦŹA1¦<>^Ñ{
|
||||||
|
Å‘òPEúsá=áuÝZYYWBÿ•®1çñ8®ynÐb·ÉT´Q*1¯4ŽM@m" 6dCš <jA®%×B™<>[–¢
|
||||||
|
HBçÚ÷žŒ6Dœ<44>°è΀ӘÕ:ÍÆé¥[ôäË´·œËì9t`÷ÙéS‚›HÏv,è"Ü}ŒA¯çþ–ÍšÛ }c<>rÖÈÈšNxVEú0Ÿ}¤<>°nRIpJ9R™ÄBL¢¢HW¥D/±Z¬tÏÈœƒÈT/rÙQ§Óüäǥωã³X¨l¸sDi`Þ\"c<>Ø¡ö<v@AŽÇQ“RÌÁÀ Žx}óÖùÜ{¬wZ‰4ý\Éà ñƒ‡QÖ÷
|
||||||
|
]ùºT£yéÓ”À¨üiŠFE"Ÿ ,3ŒÂïŒÎY3Fá±/ž÷²¡_,¡«¾’Nûê+}¯üçYgÝ„¶|Û¢²¼LÆÍl
|
||||||
|
úåM¸ ãF‚ÉÆòJ<>}ä´¼zT¥ï¥›x<E280BA>ª´lz$3*`<60>$JN0¤³Ü?u>[ó‚ÞT%=…U1ºI_õå—ô}ï,éÇY8Öo…iâZÀ9R¢çÈtÁ¡³]b1-$žá™L4 <20>müIŠk×ê»dýÍéæÞÂ4á¦t#«ƒÖDÿ„շƼïݼ‹„°fäŒÕ7ogõú'³ e½ø*ýD¶cæÓó³`5¸ƒ€—žs©ý Ä! #gŠë<C5A0>Oég·@û~€eG2[,†ƒç“Z½¬Rb£ª(ó<10>#°6åPùڛ㥖#å4¦¤ œê§(.¯«1åU£J…"(Žü‹î%T0û/Ó7yJ!oiL‰,¶¢ZqKX©<15>©ï“çMŒd’§ÁneW°#ãM‹Vá µ¸X5bkQ<6B>Å"gâ=lñ&ñ¦w×=Cëiòƒú#<23>´é§é3nJÍ}ô±=ï¦ù‰8•n§ÿzM<7A>zõ<7A>Æ>½‘ýfÀ'ä“D%¹d½'vªÊ,@J 1¥-Ù¶ìÆ”MÉÅ1ˆÅaÓ|
|
||||||
|
#<wòã_´,øU8œ/^lîÅæ^lî]Âñ•M@A£\ÊòÛ8G/°·L
|
||||||
|
´â+ @qaÀðð$+½C]9¿…2,nÚ$Îùþ<C3B9>:ûé›Sž\ÔøÔ†¥l_³F:™÷–þÃ_õýMáÊýîë7Ÿ~õ5<C3B5>žq ãA
|
||||||
|
ä.mÔFmJD$ `›G
SB<53>;QSV•DaM<>,tÐõi€ÐðšãbÉb ¤%l(¶qœ"*‹c¼¹M‚é9íT<C3AD>¶I1ð–Tu&&<26>6¸ZÍÆÍÜø¹þOZðãÒ§ÿú7¯ï{ô+hî_Ò4Y¹eȱçw½›B.ÂhDÕäâ#ZW·äp<C3A4>²¥l”`pÀS‡ª<10>ëb§Ð*’{Æ”ÜÓZ.¹ùa`Ɔ[qvXÝ(ÌÈmk[&¶•çV&òXÈDSˆc ÀMf°Ï`¥¨n§Ÿz寔|ôÁ8à禅k·=yﲧ·¢¾tZ¹Y˜{î/ÍßöÅ«¿;rÈ5ûxè%òìïZF\G‡»ÆÉÜ¥"Q±‰ ÃA%.dD(Šì³XÈb<1F>5¥|&ó™àɇ
|
||||||
|
ÍŸ/;Â×jmU׋<C397>H'úJœ¹8.rÄ¿¯Dçñ¥<C3B1>2îBFk4DZ©á
”– ),ìËtGqGÓ3«–~õ骼þú[èÒÙ36úè'Oï<4F>Þ4ž†Ò§õæ¿VÝ¿aóݨƒ«@“ÐhË_ * ÆÁpÕê”\.gcÊ¥xÐ\Œ¢‰jÙIœ’ۆòá°l8,Û»é?áGÃØþz•ƒ<E280A2>D<EFBFBD>6´ñ,'+1Ò<q>§ËÃC µÈnL `äÇV%yRGHx¬¢ç¶Ó§ŸxöÙ½÷(“FgºaEó
|
||||||
|
6cÅæÇ_ô"Gõ<QŽ†I1yCSí"eŠØZÄeÙŠéäîáƒTÐë*X`ªæØ]…0Ì`H äúrS>UD‚—˜VKl’é·ÃÁq»8Žã¶•ŠQlŦQl]¬"‡Ut]M”žô6š;”Ì„A.ÐZÈf#2HÆ6«1îm<C3AE>zLñW½(þU‹úëý÷?ó:W¼ýo/î³w®‡Ið伇·=yÏògêÓoõÛ4Ž®žv<C5BE>z¾¥í¼ùþô;ÍÝþåkO9ˆR°™vt€‡¬ÕÚ *…ÿªH¶€STD};¹tÁ:ï¡ÎÌü3ZŸù>çÅ~Ï%6Á žnOßÍÝž¾C\+ñÚLÔ!VèQq°¦§¨ÁÎl:5æ¹8ó3:RLµV¥_•=ùU},HÃJÖéSž{4X+$òu£ˆ[qÙÆ3—“<E28094>o©¸xMZâ2ûæ2ûæryTC`<60>ñÄ
|
||||||
|
žÊ]{袬(ôçlY¯^ekk7m’Äåå={–—õ:Ûð<>-Ýô<Þ'ÈåMZgA º|×<>r9¨iL±œàx ¯
|
||||||
|
<EFBFBD>’/!ò";µ›³›³Û³"FÇ°g‡Œ®e–†Cf”µ¸m”¦mîíÿæ¾Ëëú×ýyÓ³ßñfýïÑuévš¶ö¿T8a]Pç:é,ZDìt!¥ÎŒ
J¹É‚Ÿ
|
||||||
|
Ðñ!Ø%<1A>vE&v‡ƒ¢sq3Ñp<70>Õ"Æ£œ—„Ò–H¢2iÙÍ—>7cuÇ|‚3|S‹ÐÆŒàðÀ9>f À;óÞ—sºý½˜žÔýÒÉæZú‘î5ÆCûÃxé¦Á¢&ü¢Lë¦,sZƒÕ#ž¾Ï<C2BE>Çàú«Oß(<03>“O¾Ü}¥“^)Ò<âóhÇ(ËÁ<C38B>ee˜¼¤NQ
|
||||||
|
³EW@AnXõ)vêýŸRËÁç»í^{<7B>߃
=ØЃ
=K¼èÜé„É<>)ûbÇç»Éi×Àø‡'9Y4f_Ra¬£ñ¸Ê/asT• @§Í†Édm-æ+‡’^À
q#SbοÖyÈójƒ!œŒò°M“æOzpÓ÷SV ío~oÒúÜéÇi½0pëÃîNïÆÑò߯JïÉƽ·<C2BD>ý&hFºø
|
||||||
|
Œ:Çs^çØ•ŒÖù%ýç¿èÿÿµÎñÿ<17>cªœ_Ô9ÆX¨tæ=CœñÅ–<C385>B?zù÷ᨶ¾úéI
<0A>a„e™VÑ âmL‘ 먬^Ì¥ÅmÂ,§¹=g„Wö´|Å!ÆYp‘Uìq–ÅFœbù…8"Å3.â`C] øIÛÝnBý_ôЬÓßPªÿíË
{ö®ôé§Ã4ÿ*ÐýÛ³ÿÖ?e›?Ù·ûý·÷xѾÞ^DY¿ íggо¨È&ÞÿCûÞ‹Ý ÿ<>hÿ‚Õ3ƒö[9ö? ýC_<43>ýôµih?Ý(}²ëÐ>âŠöWี*Ólf‚c°ìLpìò¸/
ÿƒãPò’1ÇQÿµAÆU—"ã›þùÊ÷”}‚‚Ek¶m^¼òi½½°ô0€ãÚ àÀ‘Æ…Û?íw¯ÿј™ÂK¢Fœz<C593>8Ae—â<E28094>-«Bˆ]pó€<ñÚ/ÎdYbÙÓòOÍ<4F>[tºZ¤ƒð5h¥©¬LÔf ^ëÔâðî¥øÕ“îÖ®LildìÐÓéÿˆäƒ)sܨ-&^W€åäq-b)¡,H™ÍIm<18>½ç~/Ò·
|
||||||
|
Ïì]9Ök§ä‰þŽ¡ˆ?Ò˜ò«D”9ÀàïÈSƒ¡P»¼ÅŠBÚ-Ƙ<÷]E¥
|
||||||
|
I<EFBFBD>¤
|
||||||
|
‚Ü 9fB“‡‡;0ÖÑè0²1ñ#±qgÏXq Ýÿ× ÇÄ»?Z\û«N—ÝØ·°nê}îštëƒåý«rs»I^6e`û>ÓVÙP¼ãº•íkÊ
|
||||||
|
}ÙÕ}GtïwË€’òÍý%UÑv]:ø³ªûŽì5pZÿ"¤P¼å„p§” $?_ëθ”úý^Á‹Ö¨ÝnqË°øS`¢³ô\À>‡õâ@îÑ™‰fö‚húuÄ6н2‘ˆg +.¼&)PÙ<µWóì$n‹
|
||||||
|
wv«ÿsÇŽMTÐõ˯îÕÑ¥e˜g«ô÷V¤_¾qDß<><>°É<îr¥Lá?sqÆ*Œ:e`NɉsNU¬
|
||||||
|
½+)TÁð<C381>á¼n6³Û›ù„SßÅ aK,öÖ°ˆÀEÕwñ„;ŸÀc̵Ö%‘˜Ö¨AÝ ëø&qÂÇúê'ÎÌ~dÓƽt—p}z·þÒïÃØ@ˆÙ›è1$ó4פfQ:S¤<â@g¥È<C2A5>—<¤É¸g‚ÉÉ&˜âÈ8"Äð”—è4ƒ<È€3<ªQçû<C3A7>jx<#ã(nÌ`oê×çï¢b®E´a‘f"’t¸¾ç ^¢›0!Òès6y_ÎΦ³üt¦“γӔvµÑj'ÍFÅæàö.Oþ³›ŸÄ'˜9èGÊ:¹}È#çxfEO›ƒ‡?NŸtty# Ìn¥Š3ãÒ}W+äN…¿²òe‹Ý¡ØÛ†Z=åŽr§—Ì<\LÉå$ñeŽÒýÈÖœ¢È¼ßlÒßØö¡]´2åäÚí’UPÞEB _v¨*ªIÇà\/¬)«d¤¹¹¸º´
|
||||||
|
++ð¸[
g>ògÍ7ÏGosÓ9N:ÃNç1z;<3B>(ù²n¤‡3óÉŽŸX槕˜…NóÈóS|¸X¢û€âQÍ•iŠ#VáVy.gFVœy0$#À “=>ÑáRDp9Ö1Œ[:1ƒ¨ˆ3»mÊ/GilÂy:„¤lµ¾…Ö¿üº/K”:ÙGô<>/
|
||||||
|
DŠâuV—éÀü„¯¾‹þG°ëKÛÓíH3·žÇ>šùÁÚ°»ü”¸¨,P?
|
||||||
|
BOV2¦G”GÁPZ§¢r1P#dl)™ÏwfþPÙÁœþ̤ñg&MÐ…¿t9ÍIã<?iøh[“q‡qmfÚ›áÀŒ]U}>Å>ÒÛ/üZ‹W•ÍïU¯OÛ
<16>*K
|
||||||
|
-ɹÑú«®½k^ezóI¥6Ü™<05>Ø›cµ‘'5·]¦2Æ.¦ Q¢ÿ5¡eÆø¿9Sb€9SVåCÿ5haü» tÁ¦¥7
|
||||||
|
#šŸÆ¤?gAö^ó‹+’¬÷
|
||||||
|
Óh}/ÏG“±Z™G’e©>%;ˆ<Ð_ápM9 M‘¨7 9ÃဤX'„°‘Có…¹}ù§ç2Y4ÇjjÞV_MT‚ñeBYžAi¦‹y<<3C>K«@éªÅ ~K ïÁ<C3AF>×<>¬_O“<4F>®]{Å}¯H+iÙöö·ií"Þ!¾ªþ~…ØñýO·ŒPæ¶<C3A6>u®Éy`ú4#9äÄJ¾õù˜ASO[³Fϳl]#Tù'h%`ЇI}*ì“Â0BŸwhÊÇ$yhJŠ:mÀ]¯TØ J/†¡‡Øh<68>Ú¢†!Òüœ™óÕЀ#=T©¾‘øÅ<C3B8>ÂàT©ªŒ´suUIŽZôxü!A]¯¿}Í•<C38D><E280A2><EFBFBD>ÑÊõô´ý
ýCýmq¡0n*<2A>}ÐQ¬xŸ¿
|
||||||
|
ãÕßпxs“ߣ{ÄÂ)˜[—½@(ô©ÐæìçˆÂ›<C382>1Ïþ³h.Ëþ”ßåßGlûì<C3BB> <EFBFBD>´tCÇ÷zäùoñÝ\P¾Ï
<20>¥<EFBFBD>c7„™ÕâV˃o^m¯òR©qÑä;—ôîÙ_NÙxsŸüvÄÈñCZZŒòq¡„ h±<68>È·t)xžM˧¢|ŠÒž‘-½˜<C2BD>#•<>xU<15>7T5T<01>Œ{<7B> .Í&…´AÏ, sr1\kÒ<<0B>…®kc²œåS‡;×<>O/;ÿT†Û¬|W ¼åæ
|
||||||
|
™oé|˜‹<ò~ÑÆ’hfcI>zó¸â1Ö&þN‚ÔÆróòc’<14>š†]ÔTÛÑð<>F½Á~QÌV¥rr‚Äáù#Xr–
oä CEnÿA\!5/tÍjÍ)”U÷¤Ìù¥=)Åm÷¤ dùþÃø÷¤ö`í‘šƒmÇ<þ-E76©44¨|<7C>
|
||||||
|
¯Ûã>pÑúhnViõY¸éhXQ—l`ñÜ0{ôˆiã¦VjÓ+êê^o»™e|çi©©7›Ö…j+¦×Utêun{ëî<16>‡1úÜ›òPsÌB¾j^çÙþ–àz;.'÷ÓȉOsЮn§ÀzQ7¯2[KšÅ;ñÖGéïiŠ·&y~‡·˜æµmÍ3!å?CëJCéh<>©lZ)HiŒÙŠ™P”‘>>¸‹gãÈ_Ã]]Í» m<><6D>æ(É
I®b<C2AE>fµÞÂïàÑBÙw\fŒ<66>|c„^ Þ‚¨JŠ…O›^]ܺyÓlí<6C>ÖŽb!vikwkëOÈZh|<7C>-'5[QTñE™2í¥¥f{™<0ž<30>¬ß1PºÇ5{¢=4gB™§µûwìl}ÂQ²%ó„¿i¶ü .~‚œÓÚþ>ZãßköBãÑž1N‚‘4¸çrƒût1ç><3E>ÎpZô3¹¯˜´(ÍÎuz‹…œ¶´¸¸u¢›m¹ÙØ:ûÒÖîÖÖŸ<C396>=™qý¤Ùò£A¥XÈk3.ÞžS®Ÿ©±î<C2B1>öÀw&ØÛÂ×3¡ÄsßG@;£?sZßÿ1dQ–VLå6½iÁ<69>¨·¶iÛ§Él+‰ØVjÛö°Ë-¼ç=o™eôœ¶ü[³Yù
Öó=oyÚ«¼çFûZrŽfÖì>Ü PõŽ>_äúÕ&׿Ë<£Y³åúì0™r/¤Ž8„÷¿ÞäT]†š_k¶HÄ)÷²þ‡ö}¨ßä•?<12>y'D.â´v·¶þ„|c¶&¹yØ:ç’Ö|¼õ&§žÏpªuR_È)ãŽ<C3A3>w%-æ÷ÛÂøýÌPnŸò¾<C3B2>0ÇÚ#C›sšÍïµyŠ©¿ÍX/n߇œ0¾<30>†ü^«ZL}—~»»µõ'ä<>Ùš½Vøêà%ùXG˜c}Ì«@-±lh.м6cPA¾ŽJëÀí¢e;¨MÖD,¿!Ø™•ðìG ÑÌÊÏ„KdjV`é·¬·¿¬|þbVȤ*^AG8ªŸm7°<37>~––·[ߎ–³yéþÂî¼µ~Ú¤Oðc\y
|
||||||
|
»SX+måÞЮZŒx<C592>¦ˆ[–<>GS²Èlu<6C>£6å(Sl4ÄÂÀx„ð,DçKyý÷2^ôÎÛ6>vÛŒ'6ÞÖ{ôÈ޽njfw>1ã¶G›>ã ºktï>cÇÕÕ<C395>Â^ìiy‡í‘îì<>Kiu’J:Œ$,C%ø›R’ x¼ÁÉ<ž°Ïí[—r¸·àóœ·?$
|
||||||
|
_L“¨Às?=„äg/³šÎLk‚ûƒ°^C–uK¨‡x<E280A1>„6ÅÝ<™s©Ç6Ë–@a¯?s¾Œ[—jɨáÆöŒ[°à•o¾yeÁ¼ñ7Ìž{<7B>¾yÖÒ{Þënß÷r<C3B7>ßùœ–ô¦ÐiÛ–æ¿;û~Î?²ví!àëd˜±§¤<C2A7>€‰&k5‚›2¾;ä—¬V©)eµf+NÍéiJ9EÚd7¥ˆ7/rS7Éd¿5¼<*R0/ ÑC•‰ƒ
žš6ÏäÍÔa©1]ãcb1€ßU±Ytoy°Ä …;Õ<ÿ³?þñ³gnwý-ßÐvúÑW„×–öý׋÷é/<2F>nÿH<C3BF>~ää}ë¼–ð]äûY©ô¬ýä-»¨€fÓ2…Æ-´ä-N‹K¨³
|
||||||
|
ÍäHÌNÔü0nÊ•{©_Š+u·8!9jŽ °œœ¼H^S*RF„ö¥þò k¡<6B>£9T0!5'¼ç9BùÂbÍᤋ‹+½Ñ…AkÐÚ~¡7qÙhÖ¶âeãê±L54’hͽ8vAå>ܳB¸ý„2kÚŠ(²|{Éyzá¶vhB‘÷!î<>_=òð#‹§üzö°ÑW¬úþÁÉ/®ûuꆹ[®~âOú<4F>7Üz߈Iô±þÓ–l꺡ÿU=ª®4÷O\=tÅ¢Mñ
½VV<56>|ÓÞtQrJ¿›k/›Øï¬CÖ³•0ÿ"š“¸5&<26>-ÊS_<53> <EFBFBD>Áë<C381>´
nœ¸víĉ«WÓ‡WO¼ñ!<…oÒUÇwÏ׺ZŠ v79žR˜,xqyAn·nþ(Á$%xˆŒ¿‘WX™‹;|xVOîB<07>ÄdzŸhü%ÏÈÿoÿ$0i¸1'€›bÆ<62>Ñá«»cò†)Sîo¼‰ž’’g<E28099>à‹-}ø¶ÛDÿ5hu¿,<2C>b²Q³)”x`BD3 Yˆ¢+dP¾Ín·M…‹ì<E280B9>þŠ°Ú˜
|
||||||
|
SÊŠXcª(èägƒçs-ÎÆQegË‹cxfÄ|h<>û0ñÁ‡.ßf/<2F>-¿WCé<43>̦ƒ¸ë9à<>›¶<E280BA>ào(n•´óÐoï<6F>af˜b ˆ”"zdÀØ›ï9¼sæÃS¯ýë¦/ön>´v6<76>ûÕó7<08>U<8í‹þ_û7OŸ2KóÜ~qä<71>ïö¯_ôF©4@üw§q0ê| 2 !"íJZ¤¿JÛ¹fî xŽ¦Ù:„‡D²"¥ECeyCò‘D~~";+‡4Ö®,·,÷êTYY4?¯OEÁŽu¾–’ÛEòó½ÄûZŠdæE2“ÁÐÆú0ª¤ £!‘P¨THz’üØ©¢ØÌ[2bSøçpÅWÖ%ãdöƒ‡h }ê%…låÏúãtìÏgèXýñŸÞ×?¡íß<C39F>–êŸ^½|hí•<C3AD>oÿä®UFÕÖêoŽÙð«Ñ-tÌÏ?cßÖ7ŠWëGßO?JÛ½÷>m×üÀóËõ—…sÓÆ
¾ÅÇÜ‹è‘Ï»"É+ˆþI^ ½È©Ó‘Ì{<7B>x<EFBFBD>ñ—£—7W(©Â:v´{#77 ¼Î¯ñXV|hJÉÊÏJd1…ee{£ÅC‘L^Ùù&(Ü7S2z‰$ÃÿV
|
||||||
|
a@t:ë{“cQ\àÒ!¿x<C2BF>T›sQti¾×JýuýJú<¦]èóú•`üŸÒçÓ%Ô?‹õlÒôfjÿhθáÜ÷ü‹+—Œ‰ñÖÕ¼õëx·´DŸw<>ÒÐÅü¾%ç¾í{ö¥Ï¨Xµ¶ß®‡×ìŒZ{ ¥fE‚9Ú•ŠsÚáÜròwÁâdA*٘φ¥Üö s“!C(U(,rX‡%þl>ÕíâóêQõ%0™áÇ=†Z=V™LŒ<4C>Å5 º iˆU(iî&Á,(<28> $\J|ð#ÙB1iÆñóî‹¿^Øüí{·¼-¸™H¿Òð%¬ÕUzz|ú-¡óxÐKÅW'Ïõ=?ô–@îYXdØÈK.ô Nýì¢?Év}퇣_ w”–³«ëx_qÚ0å€ É `‘°Y<C2B0>´(‰øÂÙFÕÆÚœãÛuëÚ®C·®úðÝkÚ·ïÑM|µk¼CW8íÖ½<C396>qäu‰¸FÜD|d™ÖÝíñRÁ%8¬‘9™¨yÍ‚„‡æq[ëþ”p£ Z¬'4¶3ü¨6"‘LqtLq•<15>¸«‡ïT©á•Exy‹¬#5ÏŸ}Ù©¢m‘_ÊËùVÅ|±*,å‹ÕÁbâšôgOÜ·é,mÔË„¬
÷=Je}÷Ãô8í¥¿J{-¡%KhWýðý3¤%¦-æ’ä#Ïin½¢à¥ £T‘ób8ffl¨W–%<25>Í<EFBFBD>º×<C2BA>º—»ÎݸOöèEó¼,J¢äc«R>Ÿ…8œ oá°*^áµZ¬«R&¢`Môº©áƒ\oµºÞŒ‚hf¦Ï–¨ALŒ˜ààA³ö)Ò °BÚZ€z
|
||||||
|
©¼8mÓ…Wþ ¼ÄÖ§ß,韅!iÛX}³QÜè@W Ÿ¦KAêÆ´‘¶òqŸÓì×Øè5n:ÂEsÍM^.ÓµïäŽ(ŒmrÂ` %· B‡Sp
|
||||||
|
Ò%2Ì5¶À܉GÍ<47><C38D>2¬@ã`¸h
À}_ż9‚7GðæˆYÌ‚ïãÇ(ŽätXêÕüÙ9¹b~<7E>0»KôZAÜtèÍ_•òúÅ´MÂ"V<>
¡À¼] ÿi†ˆHNž€Â?hÙ“4òyˆ‰<CB86>`A´”V—[ÿ«C– ×z”× ð‡(
òm¢ô²‡oØ@o§}NlY:øÞ=ú
|
||||||
|
ý°það½Ñÿ:žÒñÅož¤êâݽ_þ-£×ÐGïÜX»ù°þnßš ïÑþÓZæoÞ°ŒVQ?<15>õä¹û8‘KJÉýZàšbzMŒŽÈ¦#B`¤æÙ¥È>Ü󢡞(TQÚîãɃd—ò% «Dpÿ—¯fÁI^‰Ÿ8ƒ^¡D(ù[JÈqFÖèßRV’)ßc=(_ñ¸aoq¿¨’ƒI¡ÐÔ>¯¡7
|
||||||
|
˜7“Ô€¿5VvÙ–<C399>Ÿ|çèú“k7ÝüîÑ
Ç¿tóâ{&>£ÿ}ÉKS/<2F>¼ƒ×øhÛƿ꧞<C2A7>¶=þ½Ko^5kÚ0åäµ3§®Æ:U¦®Áܹü’ª§ù–g- O,ŠSEãUˆ›?¥:·Ô¦êÌ,úGMͱJÓ ;ø?VB5*[éSë7ÑÆŔ׸VèSèš%.7Ÿ¾‹´öíM“™ŒÖÖóU»ÐgÀMQÊ2b·Ù÷§l^fÁÔÏÝ?%j˨=c—æÁÊDüàA3¤_ÉÉa9/TnçKzµÃ^étg7zl¾AÔ_Ó'ßÕÚ«#f¯Tkký-,ØÎx
.ܪ%ËÔì˜ÞÿS¯><½ªlíΚsezeçâ½vꃦU2½¡QÏOûïB›ÿ2è——W ø<>v•’M‰<1F>0ÅM ò¢Wñ)"UB^¯†¢äp»M)¸àu{Ý6 d@<fqÛìÎ:Õé´ûœúê|>Éb|k-ïÔNí(¡š$(MõÏ°„³_
Š¯5JÅc šsÕ,—jt;ƒ
|
||||||
|
¥\—òøRÀ,fRÅZƒ²¢W_Osõ<73>t°¾s“¾…Ž€W¡þØ<C3BE>³9>ÑUÔ,5¥§Ýûνúç´Âʴުà ڌv€>C‹„„AŠ}Š†Îüd¥¡å~Ôo ÛÏ><3E>€Ým_ŽU…yr‡3¨8¬¢Gö¬KÉAHd¡b«5
ùÚƒ ÌŽazö1žbì‘Œ–ðÜ\³<>„á£À1¼5$
ûÃo¯Ÿxbù-sÚÜoÜËótUZ‘¾ÑÚm«„þiÛK =ƒÁ^¥÷H<C3B7>ÄÈTM‘³pw´*J’7äXN3ÂX$g™Œ"yC4ˆ4¥ª"Q“$feÀD%¿)¥øˆQoäÂú* \¸f‰DŸDMzc¬«æõøÂ÷ˆ ®ô<C2AE>R¸Bñ²1b–þży¥³î|õ•_ë?îÙ|˜–þeg¿nÛûøÖk:Ê&Ò/†¬ïŸÑ¿üR<C3BC>ê-ýžªô~}Ó{ú¡÷çÞGk<47>I=.îå»B/׊™w“1à“ qYE» ÊÙ‚»ohâ€E9ûˆ$.Ň0ëë ›¤±*˜ . 7âÞss„Mé;ÅnÍ/ õéؽz|0»<30>
ÙÔ|ºùC^C<>Kõ|SwÍEšµ+l¼|K¦RÇÍ…«<E280A6>E@l bòêÁq“fÜåâ)ÕoiÞ»E\«Çå<C387>~Ž[ø®Ïýz[g€ôÑìÄ--WG<>C1u!_4|<%ô M)µº€Y9+&åÙ˜ú…'¡wÀÓê<¨âÖ`ˆ©¨Ýúâ½Ê*zn{qù@žöã
/ùÌúT*}ì%Ì<>¯ö
|
||||||
|
;¤Ð<>|<7C>¤:⣸<C2A3>Cr‡¥ˆCuDÌÆo)r¤œa)©X©pyŒÝIõ)¯èò_=@転V”È«ÖȹúUÃÇ*+i‹‘Y‡ˆKRf<52>QçêêÎfý¾`ÀbÉøì„wŠW=|ó]g¾yèž™·<²ðþ;wm¤Õ/Ž\?kVñü-Ãï¸|å¯oŠ„nIjs…º~°°‡švj\Ëâl Øøc<03>Ã+m;llÌQ³Ä1õ«[<5B><>ÏyüoNÃ]¿}ùÈSO¼ôÚc“Ìš:iÞaÏëÛ~ÿÖkOï|_¸gå¢ù+˜·ðúõ„HOq<4F>Úëš3¡)UQ}g!ð*åˆ4;Ì
|
||||||
|
ª˜hÏÎ#8
#8
/Ñça¤Q<C2A4>0Ó¨¾à!{"ª"àQ̵cs;6·/P¼øÁ‹¼^Lé
XÖ¥¢àt«(ŒÙë ©bvÉá7…3~Ð(oÀªÄã¯$<¦Âõx
XО4 îÈÓ&8 ¨4«’Š2æ¤T,=•þ™¦ôŸ¥KG¦ÏÐÑú&:<3A>–Ã:3M’Žz°…Îý7¨à¯ÿßÝB\CÿF¤5t¢þˆþG}êÔ¨=û<><\“BÒ<42>T‘#Zlx„^í¥)‘OGØ©‚)gc-¸‹dq³ÅâÙ¢¢j‡?·ƒH—ÄãÕ¦ápÅb‚OÅCÌSæ'EE¤1UT$†1@³ƒÑ¼Òhic*ªš›ÃÉ`qu$Ý6Ñرcj<63>¾§$£½ˆ¸`™òÔœ/oËà-óÏsÉÞ•‰†ŠNÄÀ£
möÛDK/ÞGW2òLÍ
8–ªÖ]uòðtœíX÷»•KŽë?Þ*®úqݳt•?yö‘5‡¿»Lœqú<71>¯¶wÍš±Ù·éÍ{—M9k“¹Iç›o_JËÂ*í0wӸÇõsßU¯\¿éžÃµNkýØ+SOµ;µl׊«<>|¸{D½&›æ{R€¤¹þ‚ˆÃ
|
||||||
|
f!sù€;ïÂ{†ðž->oœ4M„Ó¦‰ð•v…iXÐ$ÀÄãÈb›Ý…ù¸.Ľ.LMs™† ¯¨Úm2ñ©šlL©ªœßëfs€dÌ ¯apkàíÊc™; ?ˆmü<6D>Deæ¯N ÔâŒá5R
|
||||||
|
JÑà‹R¨ÚH5Í ,S¹vËxýÄw®ªoœ@sNQÿçU÷<ú|¥Ð[¯¹û‰§Åð®åï6ëŸMxlð¦eobfóøúWý?Ù·d4}+}tà»ûïFMó€^ÏzŠA^Í´¯V¬´©fj3Uy1ÓiÅL;ÿR1ÓD›b¦XÁk—b¹_¾U‹×ÑÑç3‹˜šEM…[/)fz}÷_(f*Ìü_Š™ÒÇ¢XÆ4Ã’¦QüKHúdºÚ¬ÀÛSóºœn¥¥›s<E280BA>Ëe{Vá0™g t¸‰fÖ & “i”ãN:éT_¡/IÍ¿<C38D>ßæ»›uÓŒâºÚ¹
|
||||||
|
QæÞ
|
||||||
|
]\Ã:‰”í¤û šÆÒ¶„ñ¬>”CÂD¶?%…MTñ%¶Ø¨„±fIóQDÙÛ9†<39>v¤t’XIoÀΨC L¡ˆc˜h%¢…Jâ§)IEDÁž¯åÓ›G¯¸ ÏEŠ`xþ#nE¦âH}Þú+[©•úè`éäY¿pjvú&)›WÍÓO°=¼bÍ2Í;ÇGçxè,<1B>Ũÿ@&Æj=x¥j“eÑ*‰ÌXÕ&z‰?ê¯ð3;óû½^WŽË*ù‚A_c*ÌÍÊSYÌ¡6¦|Ô—ÔÙF•<46>äá„Pÿ£ó ?×BÐs̶±$…L0öƒUú|…UÉjžÃöTôXÎßüâÈnúWùÝ‹*׶uãüϳwk<77>Ås{wyz¶>F} @‹„ùË?_¼Á²ñ9-neˆŸ´'½@‚X”ÌÙ<C38C>ÃÍnp<12>fR„òÂá’ý©pŽV<C5BD>³? ÔÉ
|
||||||
|
\æ
×c®.PÂ.Ôê~·§Ÿ«}À¿<C380>äçÙöÙ;Ä3ÙD55øBh
|
||||||
|
Ãl›U¤~xÑ3ßð<13>|ÿ÷ÙGKùÅ1½/¸È¬Þ8å²+7aJ’~çÔm`óˆQ×_TI‚´<E2809A>á•Ý\¤V+ .JœT±p%ºdA’Æ. ÔE]ëR(o¦)_›äœ #m
|Í¥IZjÖeÏœë.ضîOô‡b’(è<>
”ŸÝ9<C39D>Ñ¥bLsWxúhr˜íbÓàé@<ÙNÀ|OK‚õ»]>íPøöïä?$²Ô/*ÿñj‚$áóŠyÑf¼ïÜ¢Dã[õ#Ã6ãÉfý½ÃtšMúãˆoäO
|
||||||
|
Y‚È@ „;lòiûë4«`l5o8x¬2ëx#‰ƒÜ<C692>ÉëK0ã}—þÁ“´\ÿÉúG[igýB–¾<E28093>ÖÓáúVãkÕŠ–SR=9ÂQ\!¾“=önÚÜ’sN+ÅT8w@É®‹=›<>]xVQŠ‹œÞpžHdão‹hÅדVìcÀež<65>on]êT!ýïjÛsñëòÚÚòŽ½{§¿äº‹Ÿôê'šW3ª–k3k– k}h>Ís
|
||||||
|
=ªlé%xÚæ<C2AD>ÒŽ4eäC¤5[ÜP,dIçsx.’ÅÞš‹t”>MG\<5C><>ÐúíF
7‹<17>)â¬çµ\§ýBŠ}!Ä<>!V!tŒ†FpK2®áæâÇ£ÚU@# ª"‘â|¼#ïÈÇ;òPwYÑégõVᦠÿªx…#gUÊ!ªžU)•I«R’<52>„3ÎÓðù·:
\júûλû*3¾SXÈ,ç‹Ý“ÎÓbOk¥O‹7]¡Î?L?¬¯¡óhß‘#¦ ÂŽLÑÕ´õ±)ßèßÐÐ_f¸í™’pv·áYµŠcrô]zZ×õÝ }ã€b1À¥9@±9÷ÜfÜsÇ*«<>’5ÅÛO–sçbf:fšÛ¹ÛÔJ>¥ecÒ :hH.uäævr„
|
||||||
|
™±¡{IG3í½#j¿«¡IÇŽ<C387>JqwA)¨RÜ]
|
||||||
|
ˆ7ñ¡•éÉÇM|m<>«˜ø67Wù£‘H´1Q.Ų™¢n•ÞH8Xá„£Ø1F #üËsܸÅÆŒ]aQ€¯±ó𕶱–,1À¯¿kzvå=_ê?NëùFÿ'€,Z2EœEí?Û"Ü=cöoU]Ý°gÏúGŸyÆ„¯?ü@óNÒ*úÛßôŸ<C3B4>'ïßðô<C3B0>´ìÓ—w½{dß«hXzV$ü¯)»ú·”pA•cþ¡!ÞÒúß[ZÉÀØR “Ù¿„õ0/Œ¿ºèc‚üœfÉ.AÜuRY<52>
Yßñ=©Í2‚1æß!Ößòà}/NY»BÚ©×Ñýø‚o›
|
||||||
|
ßöØÿ—o{lÅÌ)M+fÞÒæÛ(ö<>NáßÖœÂsƒoºãY<C3A3>
|
||||||
|
ø%øÆÐ)Ý@} Óø]~Í–¹KH\pÇ´ÖG¡ö™&®»;q“ ”<>GN—sÊEêˆüñ(¢À¢Å\wÈë¬sZYè¯é¢ðò\t@7þbÕ!ôЛ{Ñ3Ø“Ð3wþ£p°¬G·ò{ÒÍÜ/ZVÖ«Gù
ÝØõ=Ë:j7%zèÛïNíïXwsǘk™Æ×Vi§y˜U†‘JŒz2#ÄÁÌå“ï[é™<Øó`fÁ±1QÓ»Ô{Ò?¤µúz}=½^8’N
|
||||||
|
o
|
||||||
|
ïÀûÿiîÍ㛪òþñsî–=¹7{Ò&mš¦ié’4éB[Ú\ÊÒR¶RJ¡@˦,‚È&›²I‘i¥¸cuF‘a*ã¨#£ƒŠŽŽ2öuæëã½üÎ9÷&mAŸß<¯×÷<C397>oáf¹==÷¬Ÿí|>ïO¬û÷ݯ"jJbˆWÔdÙËq´âÒ½z ¯¯ÿÁ9"ÞÈ/ªv8Iñ<49>»*j=\çÖ ¥×!>L0tŒÏš2ËØ91¹¥Ôá«Oì¤'ɸ`xg^ûšþÍc ¼…fßu RiH”0aâs3"ß²‹Å
|
||||||
|
>/6°ïkTÅd—lŒ5§×ï12:ÚhüÀÊ[)=cµÚû¾FA| }ü”_#åJq[º’½>ƳE£ç•ÎÈh⤠e;¢;ùKLŠÏ¿ßy#(¹ìËÒ'a™rø‡cAÂùqŸ‚VN#ñ«/è(qB”œs ³/RLÿ¸¡]W·bÃÍ_…Ionž·hǪ?á÷ÝÿV«(µ¤®†öõÛ#5ðçm)yáÛ¾ƒ¦þûG½q`ÛŒ†mRÛx<~H"¢BDNI<16>Š4”Ja)Ú?H""P\ ¢r‰Äó¤ôöëqI§o
&YÊ©¥;Qª ¢Íéø:£BÒ{OàäoOÄ%4ψõÒ— FF*âêϼ4wå#>iF£Í/Ãc°j?<3F>'½ÑhÒølÞéNf°>Ì`}˜MøZz.»ö=‰[NKËÐr@odÿ4<>õ<7F>®DÛõüi¡çˆk¡<6B>=æ!%gøe0
Çu}Á5>ɨÈÍEŒhÐgãÛy¹½ð
ÈؼMÆÆ :ä‘)Æ hl|,äÑq<02>ÍfS“<Ÿ‰Ô-ìÐŽïÙñ={|Lìv÷ÿ<C3B7>1i’Cö#±•’_Ã<16>7íß]ßæIÌÜ<7F>Ò&Šy6Þj1SFN'jÔ*x¥¥
6Žå<C5BD>xÄ
|
||||||
|
Z<EFBFBD>‰L:ý£
ŠkeI($;
|
||||||
|
½},Ñ<>û\ä“ú9‡³¸<05>’ͲÅAÅáÒP9°×åŸ2È”þ¹ÒÒ„ï¥ôsi)ä(•§{´îöž<‰Ý0‹¤7åÏ$c”`-õ)’Ám¢Žèùšgä\}—?µüBr(UÊ9~p®>0áZ2œ. Ý<C2A0>#&žWÀiü‰& :<10>Š³(Ù·‹$éàÄí·Ï¿
‚¯ õ‚ê¡6“zT`¤XÈà¿gðß«ð'OP
o¬]æÁ2æB„ù†æ<1B>[ĹðæËnÝ$y,zVíµËšæ>mc`8„â 'í.ëK<>Cë’û¤¸M¢¯Kr‹óÛ–ÓůÂÂÜ âF<C3A2>Öß a¯§”ÃrÅä[®¸»•c©G¢•—㌸¼œ÷_rFÜS=qq®Û€ŠdÄÙ'#®ždÄ}ý?Έ«,ûžì¸½“ãƳã"å:ž'cíüOyrÕŽþçÏm¼:óz/]¹ëÐ+÷ïýíñmSçÍmšrË-WWüo2ê>ûΫqFÝíw,¿ýrC÷–³ì&4¯9 ÍëhB¼œh^ß‹³Y¯PÖ^š—a27aòølJxÓ<1B>Ø›žïUþz=p<1C>ô@RÿÏ¢F°`ÍÎ|}ý܉úï[Qy"<22>°>EWPÐÙ7^DnÑÌÄ__ËO€×¾5&ì®
½ž°•ê&åsä]û^ÖL‘½4ÓkW¹“þæ(Ñ<03> þâÒœ:лô÷¨tÒú%v`I¼õL<p oë±éì‘^tí<74>xk”X†bpHéˆ2š?)Zµ×•D‚n,}K¢ôð>¥4ëv“8€ÿ©îAp¯R:ÇEtjWïÒ$®‡DõWZrT‰4Ê6 ¬¡×"è)=7Qú8\ED¶pió<69>¥g&J‚³â3ú.Z3&ü¦Ä(5–æóE;mB<æ— bž×÷B¦¹˜†!±Š“™SÔNÎ8<>| 5ƒ4Óç1©e×ÒعK†pƇšA•ß¥v®ìx|á˜S_}…ñs!ð3‡©$·Z@hÒê!
ð„ëEYo>)&¡–N lšNIbP}ØhDZø°Qƒp:nÊCBDä=ëÅmoJ´*ö;›¿@±ßRSëª&<26>ì7¡yjÃÀúš¢zöðœ
Ùç®+ÈY‚ÛS<C39B>úSʆÐÈÏ©Ï! ¶†<C2B6>’ ¶TbàUæÎœ@ekØ@B¢CßiP‡ô£ªSDI¯¥55ÒØ‹šøq§Ò<Ô²opÀ%>Þ F‰I‘ªÑ>¸àö]ìMúGOÓ²'nݲèþú*ÜšyÌ)˜Ïn@ÜÄü‚æ$
¸ßOrs.õe¦og–•fe•”0§Júeö/ƾ|¨cöÀÿâ’Ñ_ÛÁh1ŸÑAFu,v<>ä<C3A4>"ÐÔjÑÒ0ɴ椩S¤9ýk<C3BD>œ¨1T#}Ix<49>8ÛÊd{Ö~ãþµÝý
†Ävâëi³Bš“Ç/^:©qÑÊ aqA¤²’Ù3gÜÄyóêëÀèÀð1œ/rR_7¢õcM¢ž6£YdžvÍ)â\cЙªÏ" z‘,·ÆTMñ8mLŸ,óº?4ò¢ÖXÍÍ öZ6Éê”hè¹³ç³/…ó•% ±ÉQqÔ±Ã<C2B1>RWFRvÒöuÚ”yf]‡¨‰ÜÄQÌó³k±œ)¢9ÝÈEn#•‰]Ïq6y
|
||||||
|
[«¨°¿h¸‘Øw‰k9¦’ÁIïhJµ–Ãk¾¤b×wˆ§}Šbù¦—ö¾ñÿL{wÑwSÏq {*â¯;i¬C#bé¢Ù¤ÃqçG<>Òk˜Ï5¸›dÖ‘"ûøȈ“ó¬ÁºÝƒ½noÁˆÉn¯j˜k¨ºr-Ö
|
||||||
|
QoöpúøÝIÓk)ew
|
||||||
|
dwÒ~:ê(¦ö¼ßò—Åœ^zÖ|ù%P"È;Bïk¢Ý¤%.“¬Ž¢µ´še4ŒV«J: ±€bJ: ¤#J:2ÇIÚ”j L¨’ëa|úf$q%r!0´Vƒæ ÞÐc4+Î}°—dÞ“³„<C2B3>~##;’˜qŸOP#53`cåD&÷ßÿ$¬–ŽQ"埶g*õY÷æ·ö½.éqîr´ ÌH×<>éâ -Æ4g ‹µV«ºNçpT'Є8èt,¥”M4ϳ¬ÜÂ8žj(
|
||||||
|
5/Þ:¨BŠ‚Ü´bÊ|°ãÀ<C3A3>ŽƒtöݵT岗цîé+1¥'˜ý„CJÿØ›<>õ(ìÏfàp»£%E–œ "ò„s4N<>J7;Ågf€Ëæ¸ì·G#!“=Q–à«f¡²åJÍß*ü‰5™Ôš Ô÷æ8Y€ÔÜ$×¼TŽ!3*e…^Öäžèwð‰&´†Þd<C39E>Q¤U¥ŠI1%Lâˆ9^P"âwí¢Þ¢Çþèz\O²’sËÖÄþ@Ñžå
|
||||||
|
Æ2˜Öì0«omdùÆ‹Ädj<)rN{
|
||||||
|
òË9G’d,ÊÀ\<5C><>vc²xF™’s=Jq®§WX}IO2¤ÿ%R‘a´’Žì‘G É`tHIJF»ŸZÝ=D:,ÝÆR’û~É¡¤&#È_—'û/àð³è wR§ÓrœŠÕ³F£‰¦)ÆÀ)<1B>&ø'Ê»V~‡â„@LXc®f—A¯0É•„íÀ_{£ÅNüž î½ÁÀ³0©íøDj$<24>Á–x† Ȧ+c˜Ž!¶p¼yzzЋ
Ñ^lˆöb]Żގ5;>Ì·Û°º§ìeA–³˜KN<13>¢WÚåñÃÊŽB†|£ú¤íüŠÇgÙ` 3PGÀÁàË°Tª„žÀÓffâ<éÏQh\ÚöÉðiÐW,ý«$éâÅŸ!óñ·ï:ðÄ®<C2AE>ѯÓûgß7}ýœ©õ;›ï’ÎJ¹ßIg ó‡ÂЦ/?÷Þ_ŽÂ<C5BD> ‘±(ò[T‘;ÃH~×ÉoÄBHb2'+1Ùÿ¥DYFíN=*íè½Câ™dôÀ
|
||||||
|
îS<>Í+‹É˳”žfõÆÖF=KrÊКUÄcÝ<63>ýxÌvÖx=ìëÿoÒ2²ßÈ$ sxÅ»
|
||||||
|
“G(eÝ<65>6æÉÏ¿¾"}ùÝK‡ž>&Â<‹Ý÷ù§gÏHõE÷ÑZaJ·íz”æÜ6ðÿn›ð¿ÅmSýáaš±efvQ{}#ÙžÀùp,p<‰oܳ’a¡‘t˜H³K™1N.Ôƒf>Ã!çy^7š…,¥Æ‘˜|¹BÙÎNà
|
||||||
|
5‘ck„A‹!t@f~³ô”t°ÖKO5Ã:X<>¾BªïWü‚ÛZKUÃSì!´Ò¢V†úL–ÑA쓳1:×·"'8Y|T€bÉòXÆÐê9C©jêT^UÒFCZvaêUœ5d6ºÕÆ)`€˜žb?£Ñø<gŒ”ɘí)ó÷Üïù<C3AF>çeçÑ@ýWB0å+˜ b]±.´æšÎD`(J²}GÐã|Š»Jß\¼6ÕÖý~YãìƲá±eÓÆîéß<8£¤á¦†x/U]W>~xíÄþ¥âÌöi± Å5‹'W—'ëP»ÖQQjjW*˜&;Ú–.€÷U£VK[MBŠ@™hìsóU£5éú«Æ”,—ÖpÖáH>ÃqiZ„:q¸í÷'±ÛMŸôÁŠÝº¾Æ¢Õù…WdLÆÂ&ûί›µ¨vòGõµ¯ílž<~õ»[Ÿ=°c35{Ljáâö¥w/²5ºlê}EL¿Gnß…©A¹óhv2ÀwˆZÁqêUB=¾g*»_ªÃ”<C383>b…ñ’n, «Ð}hŽÐ”%eס²G#’~<7E>Ëb<C38B>XRv R6S.‹F/YÉ.)€µbO\ñ[U*=¥7!¤¡ôˆÃj´Hû¢ÌƒFcA<1A>J<EFBFBD>áë²5°´’o½ÿH–?<>›”ÎaO,GÉ)’ ¼õb›½¸§b:<3A>çÄ´E© ÿzò‘GâY1ÿíÒeh€þz<C3BE>Äß÷†¢‘3ߪ\ˆêö#ãö!ü\¶ÍÀkŠ<1A>ß @O/ËÁrfO ò5Jy·—ïÈÉHu¨¬Þ±ðO£2‹È)ŽlyøŒëä*b4azs€R-ή$Kjsb)Áœ˜<C593>î›EƒrŸñ¶o#ü%Cá/VøK…ÃÅ늧ºÄtÂ_†*¥ý
|
||||||
|
IG¥µ¨´Ð×R<EFBFBD>êž<EFBFBD>¨û3x·RwQRÒ¯ÔOÔý8¥ÔUJ÷æ]Û`¢ûNrö4Ž8§ãF§Íd6›v7šÌ)æ<>Éîf³Î
|
||||||
|
<1E>£XR~Ö<>1ö€<C3B6>ç¡Úá0™mNûƒ¾oÀ¾×òzq#[^uo*iAûà÷÷><3E>úx-Åý_Ãg#=‡wlÚ¤ Âoz*<2A>
|
||||||
|
Å»<C385>½»Û“@†‡H–]B×”`þ
|
||||||
|
^hÄ@QÄ”Ú;<3B>»d9žÅ®Nqà Çû#)a#üN”mŠFˆ°¸°<C2B8>ÐÂ^<5E>Êr"<22>™ò!Z»
|
||||||
|
zÆ¢&#•·(/D »´ çÇ–ëGkôSzyîDiÎK!׃ï£FÇqq*Èú
|
||||||
|
*ë«Ÿb c,<4ô2X*ë‹=‚zžªB¿ÀÍ fQKù uWj*ÏWà’1ÜEæG=ÿZ~jÁQÒ²L¥&ÉÝÿ„´¬Z¾í…ï3;aëü<·Œý$jLz
|
||||||
|
-g#{
|
||||||
|
YûÕJù£q$<24>ä$ÙÒ „äç${6¤ìÂʾÔÍVô±u"PÕ˨ôhE&TÁgå¶üYÔ\gJ<67>×Nú’Ç nç`=58ÔçˣDz=#…ÑTÿ@Fu´\ü‘k£Šž'p<1C>j<EFBFBD>—•qŒf&pŒv :©ØPmŒcdïÝn‚ÕBhÍ¥tÿ8É·¢ÆjgLhú´Õ>;Qûgpu|Ì VKŸ$ê×'êÿO™Þ¨<C39E>NÕ«ò«ksÂêz^B°ŒÿsUÔºÝ )/Ûm†ä$ý-Tz0µH}„êGŠ)£wœôqœ27JR-f<>æ:¹¾Ù‰ú>_\Wß}¨¾7HŸÆÉúq¾‚·c¹‘EÖéoNèô;`âZê#X§ïÇk=·îj*‘/(%²¤Zœg•(&%><3E>·£ºç¡c ØùIÙR-µ<>
¡RãÞc!»„d©#ý)Vúó ²h†<C2AD>PÛÛ;,ûÚeú=v9‹](æ;×:TV«¹Ã¿u\»¨2ÙÖ:ô89ö¯!¿~¥„,ü „,üðȯÑÿ¾û,vCAßC±®Hˆ?<3F>Óåü"ð+6®Ý þ
|
||||||
|
랸ãö`™<>¥«<C2A5>鱚?–°šwÀ<77> <20>xeüC´2Ø0òÆTcØÈ2Ñ”XS2ŽNrçcèŒ#ã ›ŒŒcîë"?orâyá½h”‡ˆfÈãTz<ž)GeP¼¢ñÊñq°I–ÿ)h<>/oôSˆ¯d<1F>hÑEb’½LºEÕJåìƒÃt½Õgœ?<3F>úYÔètjME<4D>á'a÷Ñ*v¼ÿ¨ìV§cûX~âµs—µ×Ç)A—¨1X°©¨giQ`¡»€µ¤§A£Î¸»Qgâ,ØÙ=¹'<14>0]oWìö¸``·»x\ˆÇ…x51Vh°`€õNùŠýS\× r\@<40>õ3`$¾S8Û
ïó±h½)
|
||||||
|
"s¢âWÏ$]¥4”Sš·TjûíöÍÓw>ÿÉÒç0唶EZüÔÛï>ó1`Àñk_«!™Ãx$
ï‹Þì<C39E>á2&:¸¨´{c4Ù#º©O*vÊ£-Al ©Ð«ƒYƒ³ÚÛ~‹[et µQ§£)Z‹ÊR梢<C2A2>ë³³«‚eëÃá*{ %Åãöµ8íö*ÊH”cŒF¸Êh¬ÒÉfÙ" '6€KÄAòÉyîû$ƒw’ˆ”Ó²ÆCÄ"Y
|
||||||
|
W‚iÕ';¡øo<>Î"5,††ˆÁƒT<C692>÷Ab•V¶(ö€À¦j‡l†'ð4E=ˆ¬ïaà‘›ž„ýá9駿Ïm†µÒkLIé”õ·ßGW×ú²Ðà›÷‹?Î;Övר©‹ª'ÌkÞ>üоýrþZ©þON_Ã0ùŠ:uÇCð<43>-?Iïl‘F¾š¶ðÐŒE™µ“+–¬hÍ{dp,R’Œ-¨Y…£¯ÖÃãT½
É_ÑNEš‚•&˜C‰ªKA**<2A>a#øªNʧ·IaøNB
|
||||||
|
ã¶%¤°°AÖ(`&Ç´}<ve,”<>Á.€¯â’Eš`¾ë%‹£ÜÖ„ÜrH
|
||||||
|
E6ô}hXs¤îj¥ôÏJÝöd<C3B6>Ër2<>\÷牺?‚ãã{¾ÉD6{¨¿^&b7$jÿ.TjW»Ý&S/à5iqó-Ñ{ú)RË
|
||||||
|
™Å’ݬ‹È Ø_–h^§‰Ö<E280B0>Ž?ß“=GFžÌÌÈpñ™k3,$<24>N¾œG§'Ñi—3è´ÿoÓçdÿés²=}NW$†/Ć²ù‹î³Ø9cw€ììÿ,s´Diœ=ç÷[> W2K¾=qùʇïNÇ)¤îÜwà‰<C3A0>[Ÿ’æ"vÕ+…Žå¯‰:+ž¹xúÀ¹?ÐÛ!#]EcŒ¸6e"«CÖD/\ûsâD^uýøµ 2'«CÆþ»ðlšŸR¼—ôV+-€7I"‡”þÔLf`0߀2ÇŨÌLö*3B.óo\†^ÞhŠ—9ŽÖÁ~ROž"<22>^–×°
|
||||||
|
¬ˆË–Òœû•¥”Ú¨”â
L¢ª«G¸Ôn"·¥
8ÓŠ,QãûyP.<2E>ó®Ç%P´oÁgk¸Ï—<C38F>ÚjRqüéDk£<ýEùé¼Ý¢N<]Fï%Ðû.ÀŒ8zŸ;‰ÖTôÅ”ñ;·&¸ü¸.>7¼Ð÷ ><3E>¯Jðìàß½p6Ègé5;²áNÔþ!l‰sT\Þˆ °×aÍo‚¢ùu÷ÂtÀ¿Þ²ûiÎ,×Oô+žŒèN¤_}Î(²¹¿“œÿÇQáü M©4Zv(•…&DH<44>fÑç5‘Èl °Àι’ìIûíÇîkäÌ e´:‘Øn2{}ŒÌ³¶0j¯×a®eÒÉŸŽ(çç›Îw&âøÓ78’*_g"8q¶†Ü/àÈùhžàÆ(9&·tÊŒLf¯5ÿœºmcÕ™Û6m_¥`ÊÍݾ ÷û#´ò®^ÛŒ(™CÔS&:…a0Ô§ Q»¤]E[z‘7QÉidI@‹äø£Èkì<6B>³B¡ [Ë5JÀ€
ûìF14`;ŠN@2t»³Ãœ BH¼Ä¹^®?ØZ¯iHPN`ñ»Æ”N” ¸ø^Ñ¿øoÌJš‚¨Æ÷Nó<12>¤À§×ÑK=‰^ˆ™Ž€FÞˆcÝX9–oY(_¥b}fD ÍÔ¨oPÇMü\úç³ôÆî£Zê¡îiìá÷>í„mp\÷vCéni=™Ê“Þ½Ö"]’Þƒùhµ)ùHë?B¼?CT5u€œ<E282AC> Ftêu:êŒ<C3AA>ÓØ58FÊ"ŒæÖpÇÀc°A4é9“!Å@”Q¤2‘DƒIyS4Ú<15>è
[›Ðgìgý6!Zæâ¨õc»7u`~‹´lÎK£˜ÿCÅÚJÚzæÌäÐòP÷ßàâ…GFËv½
½ìzr‡lÕÛÐ˪‡îjp»o‚cdOÀÙbÅi¼Õ‘¤fÌPňỉÆ4£ÙŒÃÝLf$M¸Œj<C592>˜(¤s½Ð*<03>¬”Wt$ Ƕ ðæb'ÿf¨„.Æ<>ìÈ=ES¹x<kAq°Ø<C2B0>W<†¸A›¡wàcœ¼yÎÝ›fo™¼eÄô2ÿ®uó¶NÞ<j”ôÜ’‡]´ð±'àô©øWSï^xçºy›¦n9róÔMVXBQû.Ü<>/¢="JßK÷DTô^™Šz<C5A0>ÐJÇ©h¶´ç
‘uOˆF¨ŸB‘ÿvÔac@…¬4 í~&¢'’–‰YæV˜
|
||||||
|
k!5ö9ŽiÕ0öV“…ã€^M|ás¤UЬ,}3–=$ºÝÝ?o•œfEÝs|K¸;^Ù…²óulÛo
|
||||||
|
!IÏâË JöR-à³£%
˜fAúòÿ<ðÐç0o•vIïIïJǘæ«
Ìo¿
)ÚÝ-S;ꥥÒãÒ © >|õïÒß°bH<62>:D‰ßV2A6ˆ~N$ K;„¦]Ã;ÚMöµÜN´<4E>9=°XõëIÒ)#Á<>H²®—{‡Ö a÷8Ñ
9R á+›4<~Œb¶Ég¢,‰Æ)ª£Þcí;¸óîO/ü$}ÿú[Qïv@µ¬\ò•E¢i¤ËÒÒû<C392>û²pûÃO (<28>dÃJâ—å<15>–N éÔZT„‰ÛU÷Ç]§aèÒyWñ^V°Rö²jlžF¼¬Æ*^V·Ü…½¬<C2BD>DÒ Õ‚²â¶[Ãkë$/•L²2³,ÐÐ."fÉ·«Ãjm»È&&µÞÂë<C382>‘2ê+<2B>T‹Þf×·¨ÃxC8I4 ¹çO£Íîî>-KìÊBÞ‚Øð¹•|ðOW–W¾õÌ3<C38C>„IÌûwï
Â|
|
||||||
|
lŨ²Ø¬…&Ûf`²µð6£ŠÑØÚ)}«NZšvÑ(pFÔ8Î&àÖi¤ èÌÛÂ9]œÒ.Ô ìá<C3AC>] ˆS,jÒù.þ}ô¢`|b70Ô6¤=Å'Í<>šGÒØÔ
žàÏêÈsŒ¬:Γ֑—>ªšºP¢ín .†¶—©©–î†!xÜvK^’ÝÌ
|
||||||
|
Ådpùv]2°YLL»“-&›mj£ºÅŒT<‚<>º„M,Ö}š 7$’<>õ‚!9HæÃoïxìÈÖê¼¢"œŠì"œ ¤"Kßûœå^÷Yfó<66>SÒDÜŠ64{³ .I®èÔÚÕÉ€j-ØÈe[LH`<60>OV'€' 5à×H¨Ù‘^¼gD¿È€§ŽíÑ<><C391>œôéÏÛÿ*z槬£ã„=ñÉGÏ&˜;ƒÅt<C385>v·(B«&évG2¯o7šbšzž·®ç8·„”3½9sBcPK¬”ü0GÇôûIú ‰«G;Èÿø³?½x®®í>AçJË>¼,ÿïç¥Eûg?¿³ý‰(eÝí¾ä¾|ôŒôß}b°ì¢†¢éRØA)tÄÎÞ<18>…èb<‹#(Ò<>è‰óHÖß1EÔÕê(<28>NÓnäGÃ)ð6HCÔC«]@<40>rèäNá EÔ‹¼ä‡‹=‘× Ý˜8ïî'þtöáîÜ÷´KgÿÞâÜ'~xìÈh5I/ÿCz=y ÌVö(âUãÅ<O+EyA ML󂴶̰¯ÍëÕÛ oiÓ3&“'-c5„ªôT ²œ«U„=ÉǦ‘èÉP>@ƒK¨R—<ÄxÐeõù„xª*ŒJÜ“¬JHDg2[»ŸŸû»eâ°-¯Ý9xUAÉÚÊqwO
|
||||||
|
§›_CE¥Ûài|®¦ë·¿8gå¹ö±.×S™±[ï;bÝŒ˜~½M:¿MzK[K¯=Ç8¹r¤}Ü'züÞ$OjZ€I2æ—U01´ñmIF¥Í%Ù‘NŠô¦j]±!RcŠÙ¼â6ˆ>*mdì¡\Ȩ] -ÕÃØ3YÎK§ <1E>ž©³Û+C«2ÉDùóŽH§ƒ@L(8˜%ƒP×Ùˆàˆò<CB86>Ùè
M ½çÏE³F#QUÙ J3Æ›¨ ŠmF3pqöš%@ÎEEÅÅÐê@¤âøITfÐEÙî<C399>={q>Ÿ*K<>UÖ…F
«fÔÔŽ/˜XëXèïŒ.9¢¾®õ<C2AE>Ks¥PW½´>~ª5k¤N!`…uÉ\ùVŠºg?£eOâ¯Ü•¬µz»·Yã¾Äé= A3ïƒôkklíW×<±–^è¹uÏ+P‚ðÊwö€ÀL¢ÑºYŠäZ'ZÁ Y´÷/.C{¿¬°0ÅV Š™<C5A0>dÛf³ððêÑðúµ¥0ýA±êÌunày1´Ê-–Î.EpŠ´7ñ8E É:<3A>ˆU4*“¢UöHÏ0e(Ã=¶<ºgI)ßìƬž‹±z®g|ÖüpãÍÏ~·5§J,÷+ÅAÁ9Ϭ
|
||||||
|
VÏŒµ1©kk=Ù<<3C>ìmœ°Oº&ÆdæKP½ÿ)˜ôæm¬–×=nvñêI<C3AA>}±yÆÁm³½´ó•ióTA6sõ¬»mb5o±ÓæŒ<h3s©¹Ù&};L÷»Úaï3åÚmy¶\{žÍ› @oa¬HU欶Ôìl‡Ðb6§r-,ö§´¤’Q!0 ßGBÊ<10>(VrdœL¢ü<C2A2>ùXÞíŠDø.œù8=ÍŸ<C38D>K…ÑT‚ø›G‘ΈÒ~XÈ“ñJ$2Dã†óRmØÈÀº!2±ZeP]êø?{áŽobÍå^Äæ¿iÙßX1åaVÿ/iJ÷fjÄÐ¥
a¥9’îŒ4”zg5Ì+™|û 9
§·ÿ¨ðâèCœ 鈘`”8´u@ÒÍ÷ˆÓý²e²dÑúäTÚÑæÔ¥øiF<69>G'µ… Ü 'Á;8"<22>lE›}i!¦Ÿ<C2A6>•œÂ0tz’Ãæ‚6½Zkx-©ýh+m¸5<µ®±É¡û˜å;¢‘Èi4h¡¡”<>‰†*J€;ššºQGäý.ü*<2A>–•µ`¸À¨Í/qA¢D²ÑBëúa4©•Ðo·Ù¢H ÚûÖ÷pÊ} ŸSÒé©ûöîÝK]|_ú›ÔMƒß¢6Ѫ6IϪ6LM¢â„±øÚ¾i[÷?)¾¶mÂ?ÝÇó™B½œ·k©bDÃŽ_ûš[†F#¶ÕƒÑœS5¦hjé‚Rª´¼½¨¨H¥NÃ;+ª1V§ÚÇØg+˪¡ÊѪ¦ÓòKGT®ÎÏz-#bÅÆU^¯*¸zĈ'‡)vbE<62>
|
||||||
|
Ex‚çºÄ#E<1B>K$Bá}ˆB{Q–Y|~Z†LöÉ®:Mð†ÄLÚ¯ÏIØ—ÐdzfæõgGmñ$œÚüÐ"1kÔ¢š1•Ri[l{¶S¾ŠuƒyòEÿ°ieμñ«F—,Î<>Î/O/Ïv9²¤WÞT™æÓ2mHK<t¸û!v_hê=S‡ß5«šg¼ÛèÔîŸ2ªf‰‹×]9Ó/~JNŠSï,82T8yh¦ÕüXJª)9Óåëç±ëí¡ŠÚâüæš\O’Fh…~†Æ¯Ï ÈQPÁ˜ø‚Ûã…”‹rdJKœ%eéA»ÀÆdõXIWŠÙˆÄ8Kš/’oÍ7ûS£9BŽI¯S«xU^¨¨˜Qñ<51><C3B1>–1ÞÔôLFÓ¦õøƒÙŒÙ6£‘§UN+O3ýÒh\3c+.
d ªU½7ã¢ØÌl‘)ç"¾4D!BøŒ<>§Ö›h^e³rHÔ2hT¯rºè¢bCQCÐ7./Ä3ª<33>#*£É’w²úñÿ³‰=ðkÞòæ¸nk<Å2ïòŠÍ04AP¦}…Ñ ÚB4ÚZrÑhk©¢¾h1ÚTø
|
||||||
|
úiƈ>+ï´ŸS©Ðöb?“þ9cÿŒ¿Íxt–tå÷ÛG¦Ü3š[!¿}ò‰®ï¯<þ¸û/ÔÔ‡œoK]‡]kÿÛ€Ä/!°<>ºUÇR´É?ï2ͬ5Åw'_Û6m‡ßHŽøµ<C3B8>ìÀMR¿!Ã'<27>z³ddAÃij_ÍÐ9³] ï!2dB«£Fô»à £1Åä=Á &pÖdâ<64>§\.ž;RÅT”JåK9Ëÿ[¾š—•¶&¼×Iƒ‹Ä£(OD`´‘dG´-|-ï+<2B>$Bö ð3¨Ê/]çî?¾\º]‚[ËÇ÷w¯+Í—þM³ÝkÄ2^ýkn],ƒf¯^a@ 66·ûSJU*^m‘mìÏœdDiÁ$1Ý]ÀB*·<>µþvŸì²î6ÙRl!ms <20>Ö‚«6Ée¶{hˆj(Î\¯•[ìˆ FÒ‰h& ö~SW4늒CÙ÷±\'ûÊè)êoÌqäí<C3A4>©<04>%^3ó™-»ýÐí½grFÞkX9*Ý_³¸¶jñ˜ì;°ÌÁÓu[_š³ðÌÞ‰=~4ójó-Ú=vÄÖ9%SWw<57>Z†eç~¨ÛÝhÿº<C3BF>V<EFBFBD>æâ켶
'wT[
4ËÛ]ŒC
<0A>Õa³%iMzÕj5â|ðu:*s…GèŠ"Ž<>»32‚q74ì2Z„“ña«a÷GÒ<Þ¨fžlk{’QÛÕp÷)©.<2E>î£êÝIÆî9ÔCÛ©Ûºï1¦é©ÂîÖí¨mY¨móPÛ`±X¦f5ŒŽÒÒzh v“ÃhÐj˜ZÒÀ ns¬qP‡YeZÍ´Ö(¨h‡<68>âL:•ÕêâQ[ Ìmåó§#ùDþÇ+ììYþý¦³ŸœE<_V1…USe+¶)!…8Ì +9>¡˜V_¾|ùÉ é=H:|™~nÙ
;6HýàÒ<C3A0>;6žAìسG:¾sðé!õçÜ2P
|
||||||
|
Æ‚[Àj°ñ¤ÞŠmH#peEÒ‹FZù·ÆsÔÍXó‘É•â¢\›}®š¡Úü‘IïMUŒÞ¦VÄŠAV?kýì9s™[À³55ÖÛ/77ïlù§U^nx£ )šï$bŽ ˆÐˆ|uñ盺ø®Óüù.ô=r6nñ²¼ú‚\¯EˆEs1š1#
|
||||||
|
VÐø“ƒãT^šå(ôŠ–"Cø’¨+hÅï”"µ ¹HY«ñµË&ÖoQqF×â¹üÀ§ÛÊfN‘V¹k\^M<>Ç_:<3cpyirÑ„Œ@ó€‰÷oYU^0äáçfztZqÕ¼œ-oorõíÈ’¡ÞXumÞœ'ïj.÷”-úíIù¹yÔw¦¼1k§—Ϭé—3îŽÑ¾XQ¶aËcð&s $˜38ä´Ðn–ký÷U[Ðk6'Ì%3r"“é<01>'<27>u¬fMËuÆ$G«²Ã5ùn>9`›
¿ûí¿›´…Ã&äÖöŸ3¦€®ž™Q™2,lšrÿùg;¥¿Nµ¥'ñ±¹;x´fÙËFiónz¬û¥¢%Sc<53>ªÙƒª×L)âSr’¤,êÎÔŠ°'#6&;sPØ<50>_Ug3ºÒí®·±¨0X„¨bXª£oa?À(Ð$F ¥J*,«Q!;P
|
||||||
|
*ß@<40>ªœ*L²S¥ ªZ¯/™™áòN{ødjj-,@ƒ<>§l¾tþšjYA{QYµXyÿ¼"ÀF-–"<‰q¹B‘>EaFQq¡6h¨<>„«‚ ÊcwTÐai„`2í5¥þÔ²ú‚pUÈÁ{2ì¡éµ‘Šù»Çëðiy`Ì GV¡×_•ìóÞ4ž5ºÒ¬‚Ïe1ºÌ:Ê/ýµX,Þ9føŽ[ªb³†eúÅIýÓælØ[WÿôñsKjw/ª×p<)›¸¼ªáá¶M⪿Mº¥ ÖþÈ\
|
||||||
|
Ì,YC³^<5E>Z¶pfR¶±7&³ƒÈA<>‹¤<E280B9>ubMŽ9Ý”ÜæÁaxíôkC*Цd”Fºn«ÓI»òZiZ¥5™}Z ;̤¦ç†hHv{)7¯I]¥×ºVË*Õ%4š²Ô+£½9¢dT›a!täh_!yìo‹d6D¹IFôŽ´¬8ˆ[DT£¨¢}à³ 6loÌØ
ï|ô£¼§vÒ4ÕöBRãâíµÏ<¹{7ÕNKvø5EK/ÎÚ˜!
…'ükn¢»·C~ë†íIɶLë¶Ê9ÂR„úfÛ¦˜Ï»IH—Ž©XO=°¼$†i¹ýÚ-Ìw\XƳÔ#44Ñ1š¢)€@’8ú!óÝ•7;˜".üïRî49•—ÿNÉôÇÁÙ óÂúk!ú®ñ ÒÌR^p”äf¦å•$ƒ#<23>øí%¦c<C2A6>òùnñ3ÖO–ѺÝ<#HûÎOHƒÃ‚ˆÁOS%·ZnjŸ´þ÷k„[…1;JÊw<C38A>̓7¿xI/J*™4pzÚú,8kЪüó™ï~n›ð›{‡ª—ç¨Oœ`©‡B…ªîoºw¤N.xaËdÓ¬kl£{¬/
n’p.J=Z!ƒ ×ÀœâHŽ¦v•ÝŸæs»4êdµÇ›’šäÔê’uV<75>7èmz*Ihs¤Z9¡<C2AD>vžç×ò4Ï[“iÖCÖb4Úì–Õ«T}<5+âz ‰9”s’Hˆ¼æ÷öŒ'O²=•_A›¯IãH<C3A3>Ñ…„;èú,8yc”Î`rΖ욽ö¥¥R`ÑËkfÝ[ræ§çž~Nʃ[
|
||||||
|
¤OÚhµnì»ã4ô”íG¶Kóqò؆>ReݯI'<27>P|¹_úú½hEÌ!g™‡AØü,ƒìóCCaÖd <64>â`î<>àgA*è3†¹Xrù€ÒÖã vÞžj§íBk²e€†ƒC™ÁÆ@f^þ ¶Ðg·V0xUaá°êpиʇØÙ
ØNHè‘,
‡°=¢)‚^3
|
||||||
|
áó#ò‚-Ì*Ll0M‘5n™ÀŒ¨¸ˆàÖãˆã¢7™¥$BTQúóÛ˜ðÀ‚RX×ýyº'7º÷þÜ[æLIKnš}SÚÌcÛÇzÍîú?ÚCFæeJéÔZ—ÉVÔ0¿ø<C2BF>k¦<6B>o:²Á<C2AD>AdBÁ””¹v‡¿¡tÞb³/ì=mI±é²&ß{KmEÀ7×dì—á°Îuy3‹Ëê
|
||||||
|
^‰æ5·NYJN[BôWhW8‘~9Z̵¤ÚZ
›ž1Q&žIuBgŠ½•<C2BD>J/À»ÎÂÛém¤tk, ø“Vkd‹
±ÚtaÔæ³MÑîÈé&åûé‘,dÁ<0C>G<EFBFBD>rï°;Žþjñofµýþgv¼;ûé[W=ر´û¾5˦ìÜ2 ZûòËÂá× 'œ:則`é‘qðÊͪFz÷ãÒ·ÒÏÜéb6§`‰ä8êÁeÔð‚4´ãs*H6¤´æ¤§§fû[ÙµHª‚´'µÕjšUYžd}ËÚ¶ùmϲ~•ÛJO]
}ÇD9¢]ŽF,9<>z;<3B>'w³«Í7–lqW”tA_÷O,êR„‘,ò×ã°tö½“f¶,ÙòÄÊù³»«>ž,hkk;=´£˜Ý÷üš1“ÚVÍ`„w[4[ó§w/]ù—T‰ÕÁ»¯R5SʇoK‹ø]Š4„'çŒôª<>û<EFBFBD>R<EFBFBD>ï‘ÌÁÑôj¹óƒrg
*³†ûÝùßA£t÷5<C3B7>
iPê@˜ì®9ÆjÇú§¿ÄjÁVû¼oüx_}ýØ<C3BD>ô=Š®0àѫЬVt¸c¾°Áí6„}1vò¤‰ÕãÆ©Õ<C2A9>
ǘ+¢nÂرõõ6ÛøñýKÉ÷º”Ñ¡ÑÔèÁh‰¿Ä\Y,}Øoˆn‡ëA?M„Æ *ƒ/BnHp3”“7…pÒ¾ë¯ä.ÿ×®¾K §%\\‡ˆëKd<4B>¡Õ£A¥å1䣗’m©DˆöXh;²è‚£tºôQ«gÝÛ”ý@ÿuçÜøü!ƒ‘ÛÝ4é<34>â)««ß\<5C>ëÖ> ñ<0F>³îl·dˆ×’’eÔ<7F>™l¼â7Ó£óJ¤ê_„•èz¢zeñ”–1éùó<C3B9>¬c:¯dÞóׇ†¬yaQlýpéï³À'¤±swNøJFŒoÎcV\9%Ξ%‰Áòym
ÃwlZ¸ãž[Îבּ;V<÷ÜsH.(ìþ‘þ<E28098>ÍD¼ª”ƒ<E2809D>`Âq`ES‘ *XÝáX¬ôeVÊ@Í‹ŽÍ,cÙ²LzP%û£å1±8ý4èI,
rÑ»IΈ«½6Ô`<¸ˆÿ“ÄXDšb°•†Œ‘,FÉ™aq —ææ(*Â@\405lj»-³´ª>4äöþÖ<0C>0঻vÜSQR7°È›:桪aË|P“Ö¿&è)ÎNrV.žèóüî<C3BC>7ü«W?ä2¢.;oê¤Úrÿ˜ ©5õM‘æ»Â–b8æ7ZµŠ9]>spÆ€©ƒ‡õsÔÑE¯ütnB«ZAL¥8ð[rN²}ÇÖÄl0Q›4ÉI‚q5ìg…jM„I:7¨þ¶t!»
=<3D>ΧSééêd³NÕ¦¦ ¯ÇÞ×ØX
|
||||||
|
±ñ™Œ¢ÿøV÷ð‰j’~°ª„„ LäÑf÷ÒÄîÈ}Bì}ëá—êÀ ƒÏÑ¥cž <07>tÅvÿ²´þQϵõ•
S´àltò°¨Nò0cû
ÉOÚ¶-ÐT²mùoS¾_qužt3\]\ß?y³¯llÑåbÔ77É$ ebŠP«Õ,0°zš6 ÞŠ1)œF³UCÓŠXæ"Ä+Í\‚~»„hOÞ¤?Ø·4ýIiýÅUýýñÕtúã=;öàH¾BDH]r@£2[²@Vjz‹YÈ
|
||||||
|
¤¥²hw¶;èÏnÏÑ&i“¸T!ÇȲyÚ<79>ÐÐÎr‹Æ°é¾„ä]CC)§{ñ<>ÄÏ‚ï"reoc g³ùS<>N–lbý"Ô¼}Já$·wløÖ…ðÏáñË«H2‚ï¾ë<C2BE>²;2ÀÖüÛµ5Í.£áÐC†'F<46>5ïJºðÐÖ«[éÛñµUî·œcЪ™.yÕ-ƒ&´¤8X
úuY æ´à¡¬“YŸeÑŽ,G–ÞÝn*Z×ñêM,ÔØ° ,F˜ [á#6êîÉ=íÕ9Ÿ’²!õõ‹=í±ƒ¢e´¼CÊ!½9Ø·³âºSëªWûóÖ»¦!›Z.wˆtªO¯mÍG¶Ô“/ÅÓ6Œ6€>=ž †²,-V§Ugjé—Æ[yƒ<79>·ÒÐŽ£©ÚÃ0-Íh÷³ÑÞž¥s˜xh½®«!ÜÏ®_˜DÔÏxzOد÷˜[¾ßÑ<C39F>3vŨÀ÷ßwH¹×w÷½ÒÇ×UìžÈÎgT¤[ÿ‡ÞêH/oB;cñ7»Yì—.ÕÂx‹j¥Šr{RœI«! ÓXFýj“`4¥¤µÂdŠu¶&QHª¡RÍêVƒ<‡Ý<E280A1>ü'èã2È\¾³ób'ß<>_•„H²×<18>ÁdmV‡Š ©GS[â`@ðSu'Nœ¸¶.JÛ]0sáŸá“¯¢Ÿ'OPÑù-/Ãêy
ëo5ô–oܹE*ø}Ëüi|÷%ûÚe&‰
!<21>¤JL7©ZÔzµÅÑÂðŒýZž"NÛn1éLj›»<E280BA>²““{2M<32>˜`…<14>7>1AJl„2+ÅBŸ & ÇGüØqèPÇ<50>J׆Ž‰åÈá{‡Hàkk÷‰YÒŠ ±.FcÕ`–ž<1D>}2‡59…ømÂP$x3GÇØ‚>ôA4¦U§åL¦¥'ä0`¾%†yÏ*0¡btõ¶nh .ZYV^\ì%…¹ýRý™š oÓÐÑ€¨ªMѤ‡Ð<E280A1>h j¦å˜Í2S
|
||||||
|
iiÊÈij4ôÞàÑ?Ãü£
Ïú(ç{ì$<14>ï$â99‰ÀBB/ŸsDʉ×9–Û8?Rñ‹â˜®\6[Q°€¬æb„äƒÝ î(, 7F'ÞQõÐúAw}¹õ½ékþ¸½#4sÿ<73>M5;[¦VN›z“856|@t’#4±Ñš¼á¦ÎQéùsJ¥îQá’¹ÒE‹)Í›KªÅôÚÛZ–lŠ¾2aéôÒ†µãn¿jkÒˆ
|
||||||
|
®)k1Û}ë°hyýرcŒ-ÒÏÏÕß<»¼`œžý:Ãæ*̯º!ï&cѼå"îáÄ@pC7í¤dkF v¹lÆÎÚ*Ç„âcíF¿bY
|
||||||
|
Nµ-°Q„6mIF,ÆbƳ q“<10>†²›H2µ±.â¯è]I¯6Ö†¡UÐz+*Ž"<22>ÈßcrŒÂË$«ºü<C2BA>Íž©ë°Þ»ó¿NcÛã“ŒgóÞÍë7ïÝ$åÍ™ó¢ÔÖFe4~Êž)ð$FåA=R£¹‘D4Y,\jƒ<6A>isÒ6§Ñi¶,&k:Τ¢)-¥s{Œžuµ†z•bBHy(4q¬qɳJ¶D´NÎFÈfûç"g#þâÙ¦¦p>T’C)Þ¢‰C.† Øá$x—´ºcú<>-“³fø µÇ–ÿÍø
“òúÕ¯®§ÖôÊšÚ6cæž™Qjg÷•¤ò›ª«¦—'¡B;‹ý
|
||||||
|
õ{ZÎ
|
||||||
|
@`X,^‰œd%MñÞæ½ÇûŒ—ñ.6 ”0É
|
||||||
|
K5VÊ
|
||||||
|
K<>KÖXœ„bc5;Ò„‡ø‹MgÉ<67>Àñ2fZÕyö02²ä‹¹‚FÓ@7<>{lçòñùÁ!Món/í(Y<¯yhfGdÂÊ<C382><C38A>Ží`nÕ”ÜÜ~Vú÷ãÇ^mýâ©cr4WÓèÏÔýF¯|úË]¯{êεÏ(T#ÅÐ óÚ×Ì›ì&Pfƒ ^´—ï#Á<zâèlPS“½oܸ´}ͪcpÍáÛnŽÞD³ýÊD×í/ÂU@Àòi\xˆb©½ <20> MŽ þ‘p¾7º·]1˜ÞæZ¿¦å'Æ],·*ÚwÐH« €Í¾qÁaµ÷Ì"¾<19>xïÔd¨Îð7Ì-µ6V49ámÃÖ4»K›™3©z•³É¤•1Ó¥
|
||||||
|
Æ&”LÚZ<C39A>\5bdÚ¤Ö9¢&}ð€°ÞåËS•±¦$›_š,œÍg¤9ÒËÇäu<C3A4>2øúçèi£7É‘jÕÀû Æd3‹k}ƒfWr†6dïé7zÑ°ŠåÍeœ<65>dËð¥uVmý<ÑU~Ö’lÑd7µÍRµ*Š
|
||||||
|
KGÅ©‚57èJΉ:„’jkîÐHÞ<48><Lò,+“JÃ)Ž`Æz@«,éÆe O4—惰C'ì+²qƒ¿H•<48>höšgýθ$Œë‘HIɌɀD\M\ÓÚ.^A4Q¾°7µO6Áb<C381>^v°@zÁ³¹‚}œõWÞ<d‘Ñk2ûøEU³¥YÿÊrøÁ•£Ð\³¼>O\Ò1c‘à7“<>‹Ø’–>qvñäW5:%¼)Š’(xÉ3gÇÁéË/tLÛ¶-íÎG_ž~çÅ#ëR_Ú<5F>~ÿØ2<> Qì _<õ ¯õ<¯ ÒÞzçþÀýö» xÚc`d`àXô÷Û¿ÿ6p‹2 E<>c3 ¡tÊ xÚm”[HQÆ¿9ç̬…HXHT‹tÑ‚Í1z<31>%"zˆ˜¶‹®²YH·e‰ ¤¤+
|
||||||
|
jYºXT”DÑC =DDHPDÑ<>DÂéûŸv–’„ÿqgÎ9ßwÎ÷?n
|
||||||
|
<EFBFBD>¿Q@Õ“
¸§kpÅ<DÜø¸ìõÃ÷öà¨ó
|
||||||
|
WT'úI•nÆ&7‹ 'À2<C380>Ä ëA]~à÷ÍDê~’#$O<0E>¤•´Ë÷2ÖÍ:sd©z½±<†ÝZT™Aæ'ÚÝK¬åô÷8ÿ¿…@ÅÉÌ3yþþA,Áw¿xeh7¹b}Êq)dM=jݸn&QËb<C38B>y@2¨4ˆÓǘ.?²6PÃG<C383>¦÷%H›Jj¼‡‚¾‹3BèP=h°Ï}(8ßè÷[¸VOÙç‚÷ùÝÜæ{Ž“ïÔÇïÂ^5‚|7 ÇQáŽa¾ÆýzÈ®ßæ|Â0ë:®ÿB|[ïô-ž#OV¿húVcâ_¨©…ú>“—äiIÛL¨ëo4°Jdx>H§œ‡N!¯¯c›i¥žsl±³&¶˜™H`“Z‡>í㸛Ä÷³E«w
|
||||||
|
i{ž¹?pžõfˆëoÄfóI~˜-xÄ|¥u76{³±Ó»J/·QÏõÎDù³s$m~Ú9Ïw9’Ü“6Òê¾E´W²f¬›dè‡.#ôÐIºœqt’.™ËÜ@Fö]ÎÞÙ1=Æyw«>´ æ Ï–ˆ›Ëq´p|ˬ[ðíyÈY«ÀüSñðùÎç…Öw9«É†šäwQ£rhR]Xâ\BF5!íä‘Tç‘rä÷IìfŽãô^%™•ÜH>%#’öÀ"“¥?j·˜qÉY±oÊÕsøê³ö=Ü?–"CèaÏ,’ž±yŒãfinæËæ&ª|/ÙïÖ'sUªì?w:¬ñ/+Vé=z<-U¦æU²Õ¨¥Šõ\IûÒö«>‰6ãÌ`T#ÿRÍl/{Ïñãè<C3A3>tÍÔò—ϹÌüWVŸÚíÁ>-j]i“üÏ\³´¶d¿oÌ®Ë<q%ÝÝØiwŸð®K€;7ý›Õš°G5…ŸMw8èL…gõ©ð3ÊŽ¢K?£æiâÜG¹3Ü:Ôx¯¹¿?y—5rÞ›á:öAí,`¥Îc•¹<E280A2>¥®gï„*öÍ6RNö‘fDçN<C3A7>'Ê=\47y—I¯øè%<25>f
|
||||||
|
±ê?˜k\Ãçž_Àjée>o%)o>V›Xî<1E>ÿ$p xÚ]”}LÔuÇ_™333%+3±ÒRgFfffæSF†pX©¡3#¢2B²ƒ•º/G„çÝqîàNA*sŽ¬ÀòæSFfµÖZkµÖZkýÑZkµ^kýÛ{Àï÷ý<¼¾?ø÷gÙÿ<C399>…FÁ°EpaÿFœ¿ÂEOŠï`d.)*D—ø FM½â¸äŒî€Kgˆa̸lŒµ~œ3ÆÙ/ÇÚœ¯àòyºña¸â/¸j,Lx®vþÄ b ®)„I%<25>ëz¹öÌ=“Àµp]9\ï»)ö<>êù©ŸÂ<C5B8>Ã`š³¦Ëcú{0CN3+á&ù̲~ÖßpóîžçnyöÉsç[^ƒÙrºu̱ÇmU0w>Ü^óòÅ'pG3Ì_/Á<>ò[pîÚíww=,º[³øOXò,õü25¸Gm–÷Ê)ß}òSpßjñ
¬˜÷ÿ#Ä\Q&ìY VÖœ&ÖŠ&aýÊŸ¡p¸˜#J…³O {Ù«HmŠêÄaaÿÀh!Ï€sÎ
Ø7`ßbû«_ñ¬
|
||||||
|
À³…½Z!ôyµº®Ñ<C2AE>5î³V<C2B3>V›5)é„uò\çÙõÎÜ°‘ûÆÉâ(<ªg¥îPjn3Ceö(óùã¡\_Ê=ûÄÛðÔ
°ImŸ.üêTa*|ÿÌ&¨”C¥¹Ø¬›õ¶JžUúYåÌg'Áw~î[Ú3¨nAë‚ž«VÇj=¨6c5ά‘w<E28098>;×èßócÄ*‡Ôg«Ï·éö¤P«íê²6äü<C3A4>„Ô&¤—µ3…ZÕîzPûÔ<>jTg^ê2â¼pßfe‡çÂjö}ؼ†½;/† Þgõj[o^RÿïNƒZ4ø£ÜÍ~£÷£±vªY“ž4m-ð²{7«k³»6ÿ¯,_BKB¨K‹yÞeÿ]ŸCÄ|DÌGÄ|Dô'¢vÏDôl·ÙÇQ=<3D>šã¨÷$êó˜šÆÔ1¦±í»s·˜ºÅä·w|¹
|
||||||
|
³Wë¸|[Õ¦Õ;ÑjÖ[Õ¦Õ^ uN¨}ÂÝ>O8'aŸÄo°Ç<î1<C3AE>IïjRIû%ÍI›¾µùMhó>¶Éi¯¹3®¤Ô0¥Æ)5N©qJ?Ú<>Ù®íf¤Ãý;äžö<1B>vfZÎiõO;3m¦Ò_CF=2Öd¬Éø.#¯ŒœöÉi_žÐ³Nµït—ý~ö[ÛeºÌX—ût«{·;t«ý÷˜õýìÑË^uëõ»tPݪqŸyêó®ö™ŸWs„}ÝúCÎ~Ãþ‡Íóӯ·ýæâMý:jÏ·Ôþ÷ð[5h.õvЬӇwÍÃq9wNÖݳæ2k¾³j}Â}OúÝ=yNù÷iïÃi³|FÞ÷ìYïÅælÈ{?d͇r;çî9ë¼ó?ø<07>8dy ƒ <20> I / †
|
||||||
|
\ xÚm<C39A>MNÃP„¿Òò·A,Y¾DÄ+l@°<>š4<C5A1> €š–pv\<5C>p,¾¸QU(òóxfìØÀS†F‡@e¬ñ€c«5ÞáˆeÆCï<19>6<»œð‘ñžþ¯Œ÷Yðͧ]gŒ9åBtCËDþ…Θ:;q%Zðo)ÓŠž)T.yòKÜÊ5ÌÔº¨jsûÍ·ÒygnìªUï¹GÃÊÞR׶š¶ô‡˜Õåÿ&÷,8w翾¾ksJ{”Æ2v®dç1ëQ®¿«Wfáýïâ&ê•7ÿº'æ¹uémÜWü Ž`>' xÚc`f ƒÿ~åX )*È xÚ<78>”ûOTGÇçÜ{YÙ7â>€Ù<15>!,]¸p•HbÜ&R¤ ”_G+µµ´`›Vy—VÐ>lBíõ?à.kë’
|
||||||
|
k
¾’¶¶<C2B6>U‰?h‹Z°š4<C5A1>Ôí¹³ncš¦M;É÷s3söÌdîN<C3AE><X{ܘòb $<24>UI§"é’NiÒ)I:–¤#%1é€úˆ{qÎÇœ‹œ8ïs.pÎsÞãœã¼Îy•ó
|
||||||
|
çeÎKœ9Ïsžãœá<Ëy†ó4ç4ç$g¢³çç!΃œ#œÃœÕœUœaÎýœœýœ}œ<>œÍœë9m:SÒ=d£t©JwÔ-F«|cÖåÎþö;Äž½.Ïž½™_ƒþëo ^îF¼ô
|
||||||
|
bç.—gç®<C3A7>ײzw;œÙ/¼ˆØޅضÃáÙ¶cèÕ¬Ì×[<5B>™ËßDÕÊ„Ö äÑõÞÀIé ¤ˆDH£ËâÞÙ)éWüíYÎ<i!j]*«1inÜì<C39C>'âÓÒ|Ô“/×Õ[¥‡8ÿ¾ô Yö„ó¼ç£æ4¹lžÃhP'´FGýÞºSЀ;Ô“c(!>{üþJŠ¥A<C2A5>®iLX‘në¢%<25>„ugëv<C3AB>ê* òÛ"Uo—”Êêm¦[½^9ŸV]|>Yýae±¼©E -7š§™òø<><ý}ÑD<1F>¥Ð_pæ‹/ª^ugÊ×0ÀÍÑ›eå¼ÈÒ›9¹²ú½Û-ß™èÔQœ…ðøš} 3˜0ªíǨ#¸èèh
|
||||||
|
–™=ñ³Ã%xXÔ}Õòp™K¾;*ÑÃxf=aÞš‘)oß
|
||||||
|
<1F>
|
||||||
|
‰£+Šäê*B«Âq/¾öÏúºxÍD'`-(ãØ ~Rã^¿ŒŸÏxÖ„ÒhX¤_á·ó)¨W°y½aã™ü²zÖ<>1<EFBFBD>åÑí‰é´tùÒE½<45>éçðZÎÏp_u-à<>Ìõ´¬Ób14FÆ:ÖŸ¸<C5B8>Ëöt^b²°H> o“a „ÂÐøˆ‰ïÌ>”›+<0F>Ht$l¢±<>}@ûú%ÚN·¾O×z õjµ?,џ¿……®0†ÁSåÌ:<3A>«<EFBFBD>é«œöJ§¥Âi,wÊœbÀIJ<49>õ°BÄIšá|Ý°_L
ÔâK©™Ø UÄFÌPMjQ!Ô”„™ f‚¤%’4¨Á}†q1î_&0ãþT0â~,Áý;!«›‘µ¨êsÔÔ#”gLXÉD¢D0¨ùX¨ ÐVTh_´UíÅÔVBíù>›ßgÏõÚò¼vr
|
||||||
|
ÊñgËñÏ° P¦Bwñl±@Hó«þnÿ1¿dO[j1šÌÃ’T‹(¥X–C¶× fxíb<C3AD>xC?!7ˆ`w{Ý·hwx‡è<E280A1>kÆ’,«3ÍmM—Ö€J”b¥H)PüJ¾’§ä*%Cq*éŠ]1*ETˆÒ\Ù
|
||||||
|
Zzˆ„Z´ex¥¡M
Z%
Åļ‚†4csG[à½vÌjÂ<6A><18>VM:Ф7>ßуL}zÈ3<C388>7I´Ðæ¡wÛ)ÍÑXhS›6˜Ó®UèÎ9í$¤U<«y|
ô¯£‡G2~ʧ‘¢‚&¸i‹VÒ´yŸì<C5B8><C3AC>¡©+¦¦®-Hߺ¤&âÍèùÖ=)ƒ=[ÝÔ…éj}<15>ƒ<úµžêzzwÓ®&Oùÿ6ð7zz“§Ó=žÕ2´:¼é¿Y1ê·ÞÜÒÒR[PÍZ–ƒ‚X|
"4¶FDGG[½Ö
|
||||||
|
jª@•¢JP”„Q ndqö˜-²ì>[`óì›c×ÙUv…]f—ØEvž<76>c3ì,;ÃN³i6ÉŽ³c‡ØA6†Y˜íg¬Ÿõ±NÖÌÖ3£ÿy´Óÿ1þ êZ)á
|
1
images/ASX_Delete.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" enable-background="new 0 0 19 19"><style type="text/css">.icon-asx-blue{fill:#0081E4;}</style><path class="icon-asx-blue" d="M10.207 9.5l8.647 8.646-.707.707-8.647-8.646-8.646 8.647-.707-.707 8.646-8.647-8.647-8.646.707-.707 8.647 8.646 8.646-8.646.707.707-8.646 8.646z"/></svg>
|
After Width: | Height: | Size: 338 B |
45
images/ASX_More.svg
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 19 19" style="enable-background:new 0 0 19 19;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.icon_x002D_asx_x002D_blue{fill:#0081E4;}
|
||||||
|
.icon_x002D_canvas_x002D_transparent{opacity:0;fill:#F6F6F6;fill-opacity:0;}
|
||||||
|
</style>
|
||||||
|
<path id="canvas" class="icon_x002D_canvas_x002D_transparent" d="M19,0v19H0V0H19z"/>
|
||||||
|
<path class="icon_x002D_asx_x002D_blue" d="M6.538,9.666c0,0.701-0.568,1.269-1.269,1.269S4,10.367,4,9.666
|
||||||
|
c0-0.701,0.568-1.269,1.269-1.269S6.538,8.965,6.538,9.666z M9.5,8.397C8.799,8.379,8.216,8.932,8.198,9.633
|
||||||
|
s0.535,1.284,1.236,1.302c0.022,0.001,0.044,0.001,0.066,0c0.701-0.018,1.254-0.6,1.236-1.301C10.718,8.958,10.175,8.415,9.5,8.397z
|
||||||
|
M13.731,8.397c-0.701,0-1.269,0.568-1.269,1.269c0,0.701,0.568,1.269,1.269,1.269S15,10.367,15,9.666
|
||||||
|
C15,8.965,14.432,8.397,13.731,8.397z"/>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
8
images/ASX_QueryBuilder.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" enable-background="new 0 0 19 19">
|
||||||
|
<style type="text/css">
|
||||||
|
.icon-asx-blue {
|
||||||
|
fill:#0081E4;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<path class="icon-asx-blue" d="M19 0h-16v4h-3v15h16v-4h3v-15zm-15 7h11v7h-11v-7zm11 11h-14v-11h2v8h12v3zm3-4h-2v-10h-12v-1h14v11zm-5-4v1h-7v-1h7z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 356 B |
1
images/ASX_Refresh.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" enable-background="new 0 0 19 19"><style type="text/css">.icon-asx-blue{fill:#0081E4;}</style><path class="icon-asx-blue" d="M18.482 9.331c0 4.953-4.029 8.982-8.982 8.982-4.953 0-8.982-4.029-8.982-8.982 0-3.67 2.277-6.977 5.631-8.331h-5.149v-1h7v7h-1v-5.233c-3.237 1.071-5.482 4.132-5.482 7.564 0 4.401 3.581 7.982 7.982 7.982s7.982-3.581 7.982-7.982c0-2.535-1.164-4.862-3.192-6.386l.6-.8c2.283 1.714 3.592 4.334 3.592 7.186z"/></svg>
|
After Width: | Height: | Size: 494 B |
1
images/ASX_Remove.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" enable-background="new 0 0 19 19"><style type="text/css">.icon-asx-blue{fill:#0081E4;}</style><path class="icon-asx-blue" d="M19 10h-19v-1h19v1z"/></svg>
|
After Width: | Height: | Size: 213 B |
3
images/Add-disabled.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.5 8.5H8.5V15.5H7.5V8.5H0.5V7.5H7.5V0.5H8.4V7.5H15.4V8.5H15.5Z" fill="#CCCCCC"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 196 B |
8
images/Add-property.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="16px" height="16px" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path d="M16,7.5v1H8.5V16h-1V8.5H0v-1h7.5V0h1v7.5H16z" fill="#393939"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 470 B |
3
images/Add.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.5 8.5H8.5V15.5H7.5V8.5H0.5V7.5H7.5V0.5H8.4V7.5H15.4V8.5H15.5Z" fill="#0078D4"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 196 B |
12
images/AddCollection-1.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0)">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.22 13.0167V13.8367H12.5667V16.3967H13.3867V13.8367H15.7333V12.91H13.3867V10.35H12.5667V13.0167H10.22ZM14 10.0312C14.1354 10.0583 14.2642 10.089 14.3867 10.1232C14.4291 10.1351 14.4708 10.1474 14.5117 10.1602C14.6706 10.2096 14.8333 10.2734 15 10.3516V6.28906L13 4.28906V0H1V14H3V16H9.05469C8.90885 15.8542 8.77734 15.6966 8.66016 15.5273C8.54297 15.3581 8.4401 15.1823 8.35156 15H4V3H10V7H14V10.0312ZM11.1333 6.0224H13.4224L11.1333 3.73333V6.0224ZM10.7776 2.06667L12.0667 3.35573V1.06667L2.06667 1.06667L2.06667 13.0667H3.06667V2.06667H10.7776Z" fill="#393939"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.66016 15.5273C8.54297 15.3581 8.4401 15.1823 8.35156 15H4V3H10V7H14V10.0312C14.1823 10.0677 14.3529 10.1107 14.5117 10.1602C14.6706 10.2096 14.8333 10.2734 15 10.3516V6.28906L13 4.28906V0H1V14H3V16H9.05469C8.90885 15.8542 8.77734 15.6966 8.66016 15.5273ZM11.1333 3.73333L13.4224 6.0224H11.1333V3.73333ZM3.06667 2.06667V13.0667H2.06667V1.06667H12.0667V3.35573L10.7776 2.06667H3.06667Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M12.5667 10.35V13.0167H10.22V13.8367H12.5667V16.3967H13.3867V13.8367H15.7333V12.91H13.3867V10.35H12.5667Z" fill="#CCCCCC"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0">
|
||||||
|
<rect width="16" height="16" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
12
images/AddCollection.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0)">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.22 13.0167V13.8367H12.5667V16.3967H13.3867V13.8367H15.7333V12.91H13.3867V10.35H12.5667V13.0167H10.22ZM14 10.0312C14.1354 10.0583 14.2642 10.089 14.3867 10.1232C14.4291 10.1351 14.4708 10.1474 14.5117 10.1602C14.6706 10.2096 14.8333 10.2734 15 10.3516V6.28906L13 4.28906V0H1V14H3V16H9.05469C8.90885 15.8542 8.77734 15.6966 8.66016 15.5273C8.54297 15.3581 8.4401 15.1823 8.35156 15H4V3H10V7H14V10.0312ZM11.1333 6.0224H13.4224L11.1333 3.73333V6.0224ZM10.7776 2.06667L12.0667 3.35573V1.06667L2.06667 1.06667L2.06667 13.0667H3.06667V2.06667H10.7776Z" fill="#393939"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.66016 15.5273C8.54297 15.3581 8.4401 15.1823 8.35156 15H4V3H10V7H14V10.0312C14.1823 10.0677 14.3529 10.1107 14.5117 10.1602C14.6706 10.2096 14.8333 10.2734 15 10.3516V6.28906L13 4.28906V0H1V14H3V16H9.05469C8.90885 15.8542 8.77734 15.6966 8.66016 15.5273ZM11.1333 3.73333L13.4224 6.0224H11.1333V3.73333ZM3.06667 2.06667V13.0667H2.06667V1.06667H12.0667V3.35573L10.7776 2.06667H3.06667Z" fill="#0078D4"/>
|
||||||
|
<path d="M12.5667 10.35V13.0167H10.22V13.8367H12.5667V16.3967H13.3867V13.8367H15.7333V12.91H13.3867V10.35H12.5667Z" fill="#0078D4"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0">
|
||||||
|
<rect width="16" height="16" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
4
images/AddDatabase-disabled.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg width="13" height="16" viewBox="0 0 13 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M5.33333 13.8667C5.57576 13.8667 5.82323 13.8583 6.07576 13.8417C6.20202 14.2083 6.35859 14.55 6.54545 14.8667C6.34343 14.8889 6.14141 14.9056 5.93939 14.9167C5.73737 14.9278 5.53535 14.9333 5.33333 14.9333C4.65657 14.9333 3.99495 14.8722 3.34848 14.75C3.16162 14.7167 2.9495 14.6681 2.71212 14.6042C2.47475 14.5403 2.23232 14.4597 1.98485 14.3625C1.73737 14.2653 1.49495 14.1514 1.25758 14.0208C1.0202 13.8903 0.808081 13.7389 0.621212 13.5667C0.434344 13.3944 0.284091 13.2014 0.170455 12.9875C0.056818 12.7736 0 12.5333 0 12.2667V2.66667C0 2.41667 0.0492425 2.19306 0.147728 1.99583C0.246212 1.79861 0.373737 1.61667 0.530303 1.45C0.70202 1.26111 0.907828 1.09444 1.14773 0.95C1.38763 0.805556 1.64646 0.679167 1.92424 0.570833C2.20202 0.4625 2.49242 0.372222 2.79545 0.3C3.09848 0.227777 3.39899 0.169444 3.69697 0.125C3.99495 0.0805552 4.28283 0.048611 4.56061 0.0291664C4.83838 0.00972231 5.09596 0 5.33333 0C5.69697 0 6.09975 0.0222219 6.54167 0.0666664C6.98359 0.111111 7.4255 0.1875 7.86742 0.295833C8.30934 0.404167 8.7298 0.552778 9.12879 0.741667C9.52778 0.930555 9.86364 1.16667 10.1364 1.45C10.2929 1.61111 10.4205 1.79444 10.5189 2C10.6174 2.20556 10.6667 2.42778 10.6667 2.66667V7.43333H9.69697V4.25C9.39394 4.45556 9.06187 4.62778 8.70076 4.76667C8.33965 4.90556 7.96843 5.01667 7.58712 5.1C7.20581 5.18333 6.82197 5.24306 6.43561 5.27917C6.04924 5.31528 5.68182 5.33333 5.33333 5.33333C4.98485 5.33333 4.61742 5.31528 4.23106 5.27917C3.8447 5.24306 3.4596 5.18333 3.07576 5.1C2.69192 5.01667 2.32071 4.90556 1.96212 4.76667C1.60354 4.62778 1.27273 4.45556 0.969697 4.25V12.2667C0.969697 12.3778 1.00631 12.4806 1.07955 12.575C1.15278 12.6694 1.22475 12.7472 1.29545 12.8083C1.53283 13.0139 1.82197 13.1847 2.16288 13.3208C2.50379 13.4569 2.86111 13.5653 3.23485 13.6458C3.60859 13.7264 3.9798 13.7833 4.34848 13.8167C4.71717 13.85 5.04545 13.8667 5.33333 13.8667ZM5.33333 1.06667C5.07576 1.06667 4.80682 1.07639 4.52652 1.09583C4.24621 1.11528 3.96465 1.14861 3.68182 1.19583C3.39899 1.24306 3.12121 1.30417 2.84848 1.37917C2.57576 1.45417 2.32071 1.54444 2.08333 1.65C2.00758 1.68333 1.90657 1.73472 1.7803 1.80417C1.65404 1.87361 1.5303 1.95278 1.40909 2.04167C1.28788 2.13056 1.18434 2.22778 1.09848 2.33333C1.01263 2.43889 0.969697 2.55 0.969697 2.66667C0.969697 2.71111 0.977272 2.75278 0.992424 2.79167C1.00758 2.83056 1.02778 2.86944 1.05303 2.90833C1.16414 3.08611 1.32323 3.24444 1.5303 3.38333C1.73737 3.52222 1.9697 3.64167 2.22727 3.74167C2.48485 3.84167 2.75884 3.925 3.04924 3.99167C3.33965 4.05833 3.62374 4.1125 3.90152 4.15417C4.17929 4.19583 4.44318 4.225 4.69318 4.24167C4.94318 4.25833 5.15657 4.26667 5.33333 4.26667C5.5101 4.26667 5.72349 4.25833 5.97348 4.24167C6.22348 4.225 6.48737 4.19583 6.76515 4.15417C7.04293 4.1125 7.32702 4.05833 7.61742 3.99167C7.90783 3.925 8.18182 3.84167 8.43939 3.74167C8.69697 3.64167 8.92803 3.52361 9.13258 3.3875C9.33712 3.25139 9.49747 3.09167 9.61364 2.90833C9.63889 2.86944 9.65909 2.83056 9.67424 2.79167C9.68939 2.75278 9.69697 2.71111 9.69697 2.66667C9.69697 2.55 9.65404 2.43889 9.56818 2.33333C9.48232 2.22778 9.37879 2.13056 9.25758 2.04167C9.13636 1.95278 9.01263 1.87361 8.88636 1.80417C8.7601 1.73472 8.65909 1.68333 8.58333 1.65C8.34596 1.54444 8.09091 1.45417 7.81818 1.37917C7.54545 1.30417 7.26768 1.24306 6.98485 1.19583C6.70202 1.14861 6.42045 1.11528 6.14015 1.09583C5.85985 1.07639 5.59091 1.06667 5.33333 1.06667Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M12.48 12.5867H10.1333V15.1467H9.81334V12.5867H7.46667V12.2667H9.81334V9.60001H10.1333V12.16H12.48V12.5867Z" fill="#CCCCCC" stroke="#CCCCCC" stroke-width="0.5"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
4
images/AddDatabase.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg width="13" height="16" viewBox="0 0 13 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M5.33333 13.8667C5.57576 13.8667 5.82323 13.8583 6.07576 13.8417C6.20202 14.2083 6.35859 14.55 6.54545 14.8667C6.34343 14.8889 6.14141 14.9056 5.93939 14.9167C5.73737 14.9278 5.53535 14.9333 5.33333 14.9333C4.65657 14.9333 3.99495 14.8722 3.34848 14.75C3.16162 14.7167 2.9495 14.6681 2.71212 14.6042C2.47475 14.5403 2.23232 14.4597 1.98485 14.3625C1.73737 14.2653 1.49495 14.1514 1.25758 14.0208C1.0202 13.8903 0.808081 13.7389 0.621212 13.5667C0.434344 13.3944 0.284091 13.2014 0.170455 12.9875C0.056818 12.7736 0 12.5333 0 12.2667V2.66667C0 2.41667 0.0492425 2.19306 0.147728 1.99583C0.246212 1.79861 0.373737 1.61667 0.530303 1.45C0.70202 1.26111 0.907828 1.09444 1.14773 0.95C1.38763 0.805556 1.64646 0.679167 1.92424 0.570833C2.20202 0.4625 2.49242 0.372222 2.79545 0.3C3.09848 0.227777 3.39899 0.169444 3.69697 0.125C3.99495 0.0805552 4.28283 0.048611 4.56061 0.0291664C4.83838 0.00972231 5.09596 0 5.33333 0C5.69697 0 6.09975 0.0222219 6.54167 0.0666664C6.98359 0.111111 7.4255 0.1875 7.86742 0.295833C8.30934 0.404167 8.7298 0.552778 9.12879 0.741667C9.52778 0.930555 9.86364 1.16667 10.1364 1.45C10.2929 1.61111 10.4205 1.79444 10.5189 2C10.6174 2.20556 10.6667 2.42778 10.6667 2.66667V7.43333H9.69697V4.25C9.39394 4.45556 9.06187 4.62778 8.70076 4.76667C8.33965 4.90556 7.96843 5.01667 7.58712 5.1C7.20581 5.18333 6.82197 5.24306 6.43561 5.27917C6.04924 5.31528 5.68182 5.33333 5.33333 5.33333C4.98485 5.33333 4.61742 5.31528 4.23106 5.27917C3.8447 5.24306 3.4596 5.18333 3.07576 5.1C2.69192 5.01667 2.32071 4.90556 1.96212 4.76667C1.60354 4.62778 1.27273 4.45556 0.969697 4.25V12.2667C0.969697 12.3778 1.00631 12.4806 1.07955 12.575C1.15278 12.6694 1.22475 12.7472 1.29545 12.8083C1.53283 13.0139 1.82197 13.1847 2.16288 13.3208C2.50379 13.4569 2.86111 13.5653 3.23485 13.6458C3.60859 13.7264 3.9798 13.7833 4.34848 13.8167C4.71717 13.85 5.04545 13.8667 5.33333 13.8667ZM5.33333 1.06667C5.07576 1.06667 4.80682 1.07639 4.52652 1.09583C4.24621 1.11528 3.96465 1.14861 3.68182 1.19583C3.39899 1.24306 3.12121 1.30417 2.84848 1.37917C2.57576 1.45417 2.32071 1.54444 2.08333 1.65C2.00758 1.68333 1.90657 1.73472 1.7803 1.80417C1.65404 1.87361 1.5303 1.95278 1.40909 2.04167C1.28788 2.13056 1.18434 2.22778 1.09848 2.33333C1.01263 2.43889 0.969697 2.55 0.969697 2.66667C0.969697 2.71111 0.977273 2.75278 0.992424 2.79167C1.00758 2.83056 1.02778 2.86944 1.05303 2.90833C1.16414 3.08611 1.32323 3.24444 1.5303 3.38333C1.73737 3.52222 1.9697 3.64167 2.22727 3.74167C2.48485 3.84167 2.75884 3.925 3.04924 3.99167C3.33965 4.05833 3.62374 4.1125 3.90152 4.15417C4.17929 4.19583 4.44318 4.225 4.69318 4.24167C4.94318 4.25833 5.15657 4.26667 5.33333 4.26667C5.5101 4.26667 5.72348 4.25833 5.97348 4.24167C6.22348 4.225 6.48737 4.19583 6.76515 4.15417C7.04293 4.1125 7.32702 4.05833 7.61742 3.99167C7.90783 3.925 8.18182 3.84167 8.43939 3.74167C8.69697 3.64167 8.92803 3.52361 9.13258 3.3875C9.33712 3.25139 9.49747 3.09167 9.61364 2.90833C9.63889 2.86944 9.65909 2.83056 9.67424 2.79167C9.68939 2.75278 9.69697 2.71111 9.69697 2.66667C9.69697 2.55 9.65404 2.43889 9.56818 2.33333C9.48232 2.22778 9.37879 2.13056 9.25758 2.04167C9.13636 1.95278 9.01263 1.87361 8.88636 1.80417C8.7601 1.73472 8.65909 1.68333 8.58333 1.65C8.34596 1.54444 8.09091 1.45417 7.81818 1.37917C7.54545 1.30417 7.26768 1.24306 6.98485 1.19583C6.70202 1.14861 6.42045 1.11528 6.14015 1.09583C5.85985 1.07639 5.59091 1.06667 5.33333 1.06667Z" fill="#0078D4"/>
|
||||||
|
<path d="M12.48 12.5867H10.1333V15.1467H9.81334V12.5867H7.46667V12.2667H9.81334V9.60001H10.1333V12.16H12.48V12.5867Z" fill="#0078D4" stroke="#0078D4" stroke-width="0.5"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
6
images/AddDocument-disabled.svg
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 0.399994V14.2H7V13.2H2.5V1.39999H8.5V3.99999H11.4V8.39999H12.4V3.27674L9.19132 0.399994H1.5ZM10.5933 2.99999L9.5 2.0198V2.99999H10.5933Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M3.80002 9.5C3.80002 10.1 4.20002 10.4 4.90002 10.4H5.00002V10C4.80002 10 4.70002 10 4.60002 9.9C4.50002 9.8 4.50002 9.6 4.50002 9.4V8.6C4.50002 8.1 4.30002 7.9 3.90002 7.8C4.30002 7.7 4.50002 7.4 4.50002 7V6.2C4.50002 5.8 4.70002 5.6 5.00002 5.6V5.1C4.30002 5.1 3.90002 5.4 3.90002 6V6.9C3.90002 7.3 3.70002 7.5 3.40002 7.5V8C3.70002 8 3.80002 8.2 3.80002 8.6V9.5Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M10.4 8C10 8 9.90002 8.2 9.90002 8.6V9.5C9.90002 10.1 9.50002 10.4 8.80002 10.4V9.9C8.91718 9.9 9.00002 9.86569 9.06865 9.83726C9.11718 9.81716 9.1586 9.8 9.20002 9.8C9.30002 9.7 9.30002 9.6 9.30002 9.3V8.5C9.30002 8.1 9.50002 7.8 9.90002 7.7C9.50002 7.6 9.30002 7.4 9.30002 7V6.1C9.30002 5.7 9.10002 5.5 8.80002 5.5V5C9.50002 5 9.90002 5.3 9.90002 5.9V6.8C9.90002 7.2 10.1 7.4 10.4 7.4V8Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M10.2 8.89999V11.4H7.79999V12.4H10.2V14.9H11.2V12.4H13.6V11.4H11.2V8.89999H10.2Z" fill="#CCCCCC"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
8
images/AddDocument.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M11.9 3.49999H9V0.899994" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M4.89999 10.4C4.19999 10.4 3.79999 10.1 3.79999 9.50001V8.60001C3.79999 8.20001 3.69999 8.00001 3.39999 8.00001V7.50001C3.69999 7.50001 3.89999 7.30001 3.89999 6.90001V6.00001C3.89999 5.40001 4.29999 5.10001 4.99999 5.10001V5.60001C4.69999 5.60001 4.49999 5.80001 4.49999 6.20001V7.00001C4.49999 7.40001 4.29999 7.70001 3.89999 7.80001C4.29999 7.90001 4.49999 8.10001 4.49999 8.60001V9.40001C4.49999 9.60001 4.49999 9.80001 4.59999 9.90001C4.69999 10 4.79999 10 4.99999 10V10.4H4.89999Z" fill="#0078D4"/>
|
||||||
|
<path d="M10.4 8C9.99999 8 9.89999 8.2 9.89999 8.6V9.5C9.89999 10.1 9.49999 10.4 8.79999 10.4V9.9C8.99999 9.9 9.09999 9.8 9.19999 9.8C9.29999 9.7 9.29999 9.6 9.29999 9.3V8.5C9.29999 8.1 9.49999 7.8 9.89999 7.7C9.49999 7.6 9.29999 7.4 9.29999 7V6.1C9.29999 5.7 9.09999 5.5 8.79999 5.5V5C9.49999 5 9.89999 5.3 9.89999 5.9V6.8C9.89999 7.2 10.1 7.4 10.4 7.4V8Z" fill="#0078D4"/>
|
||||||
|
<path d="M10.7 8.89999V14.9" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M7.79999 11.9H13.6" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M7 13.7H2V0.899994H9L11.9 3.49999V8.39999" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
8
images/AddEntity-1.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.1 1.3H0.799988V5.6H15.1V1.3Z" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M15 5.90001H4V10.2H15V5.90001Z" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M15 10.2H4V14.5H15V10.2Z" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M5.40002 1.5V5.2" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M8 6.39999V10.1" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M8 10.5V14.2" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 550 B |
8
images/AddEntity.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.1 1.3H0.799988V5.6H15.1V1.3Z" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M15 5.90001H4V10.2H15V5.90001Z" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M15 10.2H4V14.5H15V10.2Z" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M5.40002 1.5V5.2" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M8 6.39999V10.1" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M8 10.5V14.2" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 550 B |